linuxWalking Dead

Setup

Iniciamos corriendo la máquina previamente habiendo dado permisos de ejecución al archivo 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.


Reconocimiento de puertos

1

Escaneo inicial (puertos)

Realizamos un escaneo sencillo para averiguar solamente los puertos:

Resultado: puertos TCP abiertos 22, 80.

2

Escaneo detallado (versiones y scripts)

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

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


Reconocimiento de la Web

Previamente a entrar, hacemos un reconocimiento con whatweb:

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

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

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

/hidden/.shell.php

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

Escaneo con wfuzz

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

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


RCE

circle-info

RCE = Remote Command Execution (Ejecución remota de comandos)

Con la entrada para ejecutar comandos, listamos usuarios:

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

1

Preparar escucha

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

Usando netcat:

Usando Penelope:

2

Lanzar reverse shell

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

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


Búsqueda de binarios SUID

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

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

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

Resultado: acceso a root obtenido.

Last updated