Explotar una aplicación expuesta
Aprovechar un fallo en una aplicación accesible desde fuera (web, API, CMS) para ejecutar código o leer datos.
Cómo aparece en Hack The Box
Es la puerta de entrada de la gran mayoría de máquinas: inyecciones (SQL, comandos, SSTI), LFI, subida de ficheros, deserialización o un CVE público de la versión instalada. Abajo tienes cada variante con sus máquinas.
Técnicas de nuestro catálogo que corresponden a esta (el número son sus máquinas):
- Inyección SQL 31
- Inyección NoSQL 1
- Inyección de comandos 40
- LFI / path traversal 50
- Inclusión remota de ficheros (RFI) 3
- Subida de ficheros maliciosos 46
- Server-Side Template Injection 12
- SSRF 15
- XXE 4
- Deserialización insegura 20
- Bypass de autenticación 22
- IDOR 6
- Mass assignment 5
- Explotación de CVE público 110
- Explotación de CMS 22
- IIS y ASP.NET 9
- CSRF 4
- GraphQL 2
- Inyección LDAP 2
Máquinas para practicarla
Ordenadas de más fácil a más difícil. El enlace ▶ te lleva al minuto del vídeo de IppSec donde se usa.
Se muestran 48 de 218. Entra en cada técnica del catálogo de arriba para verlas todas.
Guías
- Inyección SQL: de la comilla al volcado de la base de datos 4 min de lectura Cómo detectar una SQLi, sacar datos con UNION, a ciegas o por tiempo, leer ficheros y cuándo tirar de sqlmap. Con chuleta por motor (MySQL, PostgreSQL, MSSQL, SQLite).
- Inyección NoSQL en MongoDB: saltarse el login y sacar contraseñas 3 min de lectura Detectar una inyección NoSQL, entrar en un login de MongoDB con $ne y $regex, y extraer contraseñas carácter a carácter con un script en Python.
- Inyección de comandos (OS command injection): detección, blind y bypass de filtros 4 min de lectura Cómo encontrar una inyección de comandos en Linux y Windows, confirmarla a ciegas (tiempo, DNS, HTTP) y saltarse los filtros de espacios y palabras.
- LFI: de leer /etc/passwd a ejecutar comandos 4 min de lectura Inclusión local de ficheros paso a paso: path traversal y sus bypasses, wrappers de PHP, qué ficheros leer en Linux y Windows, y las vías para convertir una LFI en RCE.
- Subida de ficheros maliciosos: cómo saltarse los filtros y conseguir una web shell 4 min de lectura Bypass de filtros de subida: extensiones alternativas, Content-Type, magic bytes, .htaccess y web.config, y cómo encontrar el fichero para ejecutarlo.
- SSTI: identificar el motor de plantillas y llegar a RCE 3 min de lectura Detectar una inyección en plantillas del servidor, averiguar si es Jinja2, Twig, FreeMarker, ERB o Mako, y los payloads para ejecutar comandos en cada uno.
- SSRF: cómo usar el servidor para llegar a servicios internos y a la nube 4 min de lectura SSRF paso a paso: detectarla, escanear puertos internos, saltarse los filtros de localhost con redirecciones, leer metadatos de AWS y atacar Redis con gopher.
- XXE: leer ficheros del servidor con entidades externas de XML 4 min de lectura Qué es una XXE, cómo detectarla en APIs, SVG y documentos de Office, leer ficheros con php://filter, la XXE ciega con DTD externo y su uso como SSRF.
- Deserialización insegura: reconocerla y explotarla en Java, .NET, PHP, Python y Node.js 4 min de lectura Reconocer datos serializados por sus primeros bytes (rO0AB, AAEAAAD, O:, gASV), entender las gadget chains y lograr RCE con ysoserial, phpggc o pickle.
- IDOR, mass assignment y APIs: fallos de control de acceso que los escáneres no ven 3 min de lectura Enumerar una API (Swagger, rutas ocultas, versiones), encontrar IDOR cambiando identificadores y hacerte administrador con mass assignment.
- Explotar un CVE público: buscar, leer y adaptar exploits de searchsploit y GitHub 4 min de lectura De un número de versión a una shell: identificar el software, buscar en searchsploit, GitHub y nuclei, leer el exploit antes de lanzarlo y arreglar los que fallan.
- Atacar WordPress, Joomla y Drupal: de wpscan a RCE 3 min de lectura Identificar el CMS y su versión, enumerar plugins y usuarios con wpscan, joomscan y droopescan, y pasar de administrador a shell en WordPress, Joomla y Drupal.
Comandos
Sacados de nuestras chuletas y fichas de herramientas. Escribe tus datos y se rellenan en todos los comandos.
Payloads de inyección SQL › sqlmap
sqlmap -u 'http://10.10.11.20/item.php?id=1' --batch --dbs
sqlmap -r peticion.txt --batch --level 5 --risk 3
sqlmap -u 'http://10.10.11.20/login.php' --forms --batch
sqlmap -r peticion.txt --batch -D app -T users --dump
sqlmap -r peticion.txt --batch --technique=BT
sqlmap -r peticion.txt --batch --tamper=space2comment,between
sqlmap -u 'http://10.10.11.20/' --cookie='session=abc*' --batch --level 2
El asterisco marca dónde inyectar.
sqlmap -r peticion.txt --batch --os-shell
sqlmap -r peticion.txt --batch --file-read=/etc/passwd
LFI, SSTI, inyección de comandos y XXE › LFI
python3 php_filter_chain_generator.py --chain '<?php system($_GET["c"]); ?>'
Genera una cadena php://filter enorme que, al incluirse, escribe ese código. Herramienta de Synacktiv.
LFI, SSTI, inyección de comandos y XXE › SSTI
python3 sstimap.py -u 'http://10.10.11.20/page?name=test'
sqlmap › Extras
sqlmap -r peticion.txt --batch --tamper=space2comment,between --random-agent
sqlmap -u http://box.htb/ --cookie='id=1*' --level 2 --batch
El asterisco marca dónde inyectar.
Ningún comando coincide.