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

# Relato do HackTheBox Delivery

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

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

* Enumeração de Hosting Virtual
* Abusando do sistema de tickets de suporte
* Acesso ao MatterMost
* Vazamento de Informações
* Enumeração de banco de dados - MySQL
* Quebrando hashes
* Testando regras do hashcat para criar senhas
* Testando o sucrack para descobrir a senha de um usuário
  {% 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="/files/1bb04473336e8eea774079e2fde17f31779f705f" alt="" width="563"><figcaption></figcaption></figure>

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

Verifique a conectividade da VPN para garantir comunicação estável com a máquina-alvo.

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

**Descoberta de portas abertas com Nmap:**

Enumere as portas abertas e exporte os resultados para o arquivo "allPorts" no diretório do Nmap:

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

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

**Análise de portas abertas com extractPorts:**

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

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

**Varredura de versão de portas com Nmap:**

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

```bash
nmap -sCV -p22,80,8065 10.10.10.222 -oN targeted
```

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

### Porta 80:

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

**Identificação de informações com o WhatWeb:**

Executar o WhatWeb revela um usuário **jane** com o endereço de e-mail **<jane@untitled.tld>**.

```bash
whatweb 10.10.10.222
```

<figure><img src="/files/46e7bcf24a7bc594483f897f30106452c9ddeda1" alt=""><figcaption></figcaption></figure>

Também encontramos um domínio **delivery.htb** e um subdomínio **helpdesk.delivery.htb**.

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

**Configuração do arquivo /etc/hosts**

Adicionamos o endereço IP do alvo ao nosso `/etc/hosts` arquivo para facilitar as resoluções DNS locais.

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

## **Central de Suporte - HelpDesk :**

O `helpdesk.delivery.htb` O subdomínio permite criar tickets de suporte. Estamos tentando criar uma conta com as seguintes informações:

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

**Abrindo um ticket**

* `jordan@delivery.com`

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

Um novo ticket é aberto, e recebemos um e-mail contendo um identificador:

* **E-mail** : <7990131@delivery.htb>
* **ID do ticket**: 7990131

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

Ao verificar o ticket, usamos nosso próprio endereço de e-mail (**<jordan@delivery.com>**), embora não tenhamos criado ele, assim como o número do ticket recebido (**7990131**).

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

Isso nos permite acessar a caixa de correio associada.

<figure><img src="/files/9bc20fcaf01d65e13a4cade6db65b48cb37ec806" alt=""><figcaption></figcaption></figure>

### Porta 8065 - Mattermost

**Descoberta do Mattermost:**

Porta **8065** hospeda um **Mattermost** CMS.

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

**Tentando criar uma conta:**

Estamos tentando criar uma conta, então usamos o endereço de e-mail: <7990131@delivery.htb> nome: jordan1 senha Jordan1234#

<figure><img src="/files/573bd7c38e013d34356970b6c2f8cf2e446a692e" alt=""><figcaption></figcaption></figure>

Recebemos uma mensagem de verificação contendo um **token** para ativar a conta:

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

{% code overflow="wrap" %}

```
http://delivery.htb:8065/do_verify_email?token=hs36amqfpkm3hcguxsmrton83e7a9k7xp595rga6zhwzd35awf1krpftfqink3go&email=7990131%40delivery.htb 
```

{% endcode %}

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

Após a validação, nos conectamos com nossas credenciais e acessamos o Mattermost **painel de administração**.

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

**Recuperação de credenciais**

No **"Trocar canais"** na seção encontramos uma mensagem contendo um nome de usuário e uma senha:

* **Nome de usuário**: `maildeliverer`
* **Senha**: Youve/\_G0t/\_Mail!

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

Em seguida, tentamos uma conexão SSH com essas credenciais:

```bash
ssh maildeliverer@delivery.htb
```

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

### Flag user.txt :)

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

## **Escalada de privilégios**

Vamos até a raiz do sistema, na `/var/www/html/osticket` pasta, e filtramos pela palavra **senha**:

```bash
grep -ir "password"
```

Não encontramos nada interessante.

Agora vamos procurar informações para **Mattermost** filtrando os processos em execução:

```bash
ps -faux
```

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

Percebemos que o Mattermost está instalado em `/opt` e encontramos um **config.json** arquivo.

<figure><img src="/files/2413bd5f9bd12c5fab376ee0a69d3b876d24cde5" alt=""><figcaption></figcaption></figure>

Ao abri-lo, descobrimos credenciais para o banco de dados SQL:

<figure><img src="/files/02010587e3f5c560e7b9a88a5571b4d83eb50e18" alt=""><figcaption></figcaption></figure>

* Nome de usuário: `mmuser`
* Senha: `Crack_The_MM_Admin_PW`

### Conectando ao MySQL

Usamos essas credenciais para nos conectar ao banco de dados:

```bash
mysql -u mmuser -p
```

Listamos os bancos de dados:

```sql
show databases;
use mattermost
```

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

Listamos as tabelas disponíveis e descrevemos a estrutura da **Users** tabela:

```sql
show tables;
describe Users;
```

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

Por fim, selecionamos as **Nome de usuário** e **Senha** colunas:

```sql
select Username, Password from Users;
```

Em seguida, encontramos o **hash da senha do root:**

`$2a$10$VM6EeymRxJ29r8Wjkr8Dtev0O.1STWb4.4ScG.anuu7v0EFJwgjjO`

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

### 1. Força bruta - Hash

Usamos **hashid** para identificar o tipo de hash:

```bash
hashid hash
```

<figure><img src="/files/73b838b9e7bd4c9f613148b5967bb99e9929fed6" alt=""><figcaption></figcaption></figure>

O hash é identificado como **bcrypt**.

Com **John the Ripper**, lançaremos um ataque de força bruta especificando o **bcrypt** formato:

```bash
john --format=bcrypt hash -w /usr/share/wordlists/rockyou.txt
```

No entanto, isso não funciona com **rockyou.txt**, nenhuma senha encontrada.

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

Observando o chat em grupo, percebemos que eles dizem diretamente que a senha **"PleaseSubscribe!"** é reutilizada. Essa senha não aparece em **rockyou.txt**, mas um invasor poderia usar **hashcat** para gerar variações.

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

### Variações de senha - Hashcat

**Geração de variantes com Hashcat**

Com **hashcat**, criaremos variações da senha:

```bash
hashcat --stdout -r /usr/share/hashcat/rules/best64.rule password
```

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

Em seguida, tentaremos quebrar o hash usando **hashcat** e o novo dicionário:

```bash
hashcat -m 3200 -a 0 hash passwords
```

A senha encontrada é: **PleaseSubscribe!21**

<figure><img src="/files/90a9edd17ff3667f85525523e2f0f93e3bddc66a" alt=""><figcaption></figcaption></figure>

### 2. Força bruta no "su" - sucrack

Vamos lançar um ataque contra **su**:

```bash
sucrack -w 20 -u root passwords
```

<figure><img src="/files/16ab9644298980eab71086aa2ccec417b90b4b0e" alt=""><figcaption></figcaption></figure>

Isso nos diz que a senha está correta: **PleaseSubscribe!21**

Conseguimos fazer login como **root**.

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

### Flag root.txt :)

<figure><img src="/files/4a02de3a88d993b7e10daea0d7d5b057dbec32f3" alt="" width="530"><figcaption></figcaption></figure>

<figure><img src="/files/259c8d1c9852f5e50bb27abae7baf0291c5847bb" alt="" width="498"><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/pt-br/writeups-ctf/hackthebox/linux-easy/delivery-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.
