> 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

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

#### **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.

#### **2. Descompresión:**

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

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

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

#### **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="/files/67td8FAnGKcf0EgAtCyD" alt=""><figcaption></figcaption></figure>

***

### **Reconocimiento:**

#### **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="/files/wpGr2K9HeN1RzzLfHKI4" alt=""><figcaption></figcaption></figure>

#### **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="/files/QMbqIL0AocjLc0Zue4BU" alt=""><figcaption></figcaption></figure>

#### **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="/files/249fyJqYJNYjRM6EXJVh" alt=""><figcaption></figcaption></figure>

#### **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="/files/PjFj3vKx97YmNiiZr62Y" 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="/files/r9UPXplwdZLjsimftM0N" 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="/files/MTvkmDlUHLjYVxyO7gRQ" alt=""><figcaption></figcaption></figure>

#### **5. Fuerza Bruta 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="/files/yzFemqCvY3xaTvhIOEa4" 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="/files/pNQx1QsYNeJxSMxjEcLQ" alt=""><figcaption></figcaption></figure>

***

### **Explotación:**

#### **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="/files/8SCVIrJDLL9pi9GeIye8" alt=""><figcaption></figcaption></figure>

#### **2. Resolución de 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="/files/2RhZzqTu2J5u58zZpXoj" 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="/files/X8sNTbmQHZiwjpo7pDmd" alt=""><figcaption></figcaption></figure>

#### **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="/files/rw47Zd0WHdGDvVtUXV6S" 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="/files/W5oXKu9zrNhjXuq0txIf" alt=""><figcaption></figcaption></figure>

#### **4. Acceso al Panel de Administración:**

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

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

#### **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="/files/0SZ2pFyDJDPO6ZYVcA8a" 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="/files/gkr8atYikHEKZdWjyq2r" 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="/files/JZNmAAAlz8sahFoctxRQ" alt=""><figcaption></figcaption></figure>

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

```bash
nc -nvlp 1234
```

<figure><img src="/files/BWMsFmXOLHRS2R70402N" 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="/files/qrOWbcFgM9RThKmuMOQT" alt=""><figcaption></figcaption></figure>

***

### **Escalada de Privilegios:**

#### **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="/files/Kav3eaNw7AteaUGmUHgH" alt=""><figcaption></figcaption></figure>

Cambiamos al usuario `luisillo`:

```bash
su luisillo
```

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

#### **2. Análisis de Privilegios:**

Ejecutamos:

```bash
sudo -l
```

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

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

#### **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="/files/2dkj7CJwnOZKEHJdq1Rs" alt=""><figcaption></figcaption></figure>
