# Dockerlabs (Easy)  - Dockerlabs

## DockerLabs

### Reconocimiento

En primer lugar escaneo los puertos con `nmap`

```
❯ nmap -p 0-65535 --open -T5 -A -sT -Pn -n 172.17.0.2 -oX nmapScan.xml && xsltproc nmapScan.xml -o nmapScan.html && open nmapScan.html &>/dev/null & disown
```

Hay solo un servidor HTTP, por lo que el siguiente paso va a ser visitar la página.

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

Es un imitación de la página de Dockerlabs, con sus laboratorios, dificultades, buscador...

Después de realizar fuzzing con `gobuster`

```
❯ gobuster dir -u 'http://172.17.0.2/' -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,html,js,txt,db,config,xml,py,bak,conf,java,jar,python -o fuzzing.txt
```

Doy con un directorio interesante, llamado `/machine.php`, que permite la subida de archivos. Al intentar subir mi archivo `shell.php`, la página muestra el siguiente mensaje: "No se permite la subida de archivos que no sean .zip".

### Explotación

Después de probar varias extensiones y otros métodos durante un rato, puedo subir el archivo malicioso con la extensión `.phar`, una vez hecho esto, voy a `/uploads`, me pongo en escucha en una terminal con `nc -nvlp 443` y clico en el archivo que acabo de subir, ganando una shell como www-data.

### Post explotación

Lo primero es sanitizar la shell.

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

Al hacer `sudo -l` veo que puedo ejecutar `grep` como root, después de echar un ojo por la máquina encuentro un archivo en la ruta `/opt/nota.txt`, lo leo con `grep` y veo que indica la ruta a un archivo que contiene la contraseña de root, lo leo de nuevo usando `grep` y ya tengo credenciales para autenticarme como root.

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://galizaragozadev.gitbook.io/galizaragozadev-docs/writeups/dockerlabs/dockerlabs-easy-dockerlabs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
