💉SQLMap - Enumeración Avanzada
Ahora que hemos cubierto los conceptos básicos de la enumeración de bases de datos con SQLMap, cubriremos técnicas más avanzadas para enumerar datos de interés en esta sección.
Enumeración del esquema de base de datos
Si quisiéramos recuperar la estructura de todas las tablas para poder tener una visión completa de la arquitectura de la base de datos, podríamos usar el modificador --schema:
afsh4ck@kali$ sqlmap -u "http://www.example.com/?id=1" --schema
...SNIP...
Database: master
Table: log
[3 columns]
+--------+--------------+
| Column | Type |
+--------+--------------+
| date | datetime |
| agent | varchar(512) |
| id | int(11) |
+--------+--------------+
Database: owasp10
Table: accounts
[4 columns]
+-------------+---------+
| Column | Type |
+-------------+---------+
| cid | int(11) |
| mysignature | text |
| password | text |
| username | text |
+-------------+---------+
...
Database: testdb
Table: data
[2 columns]
+---------+---------+
| Column | Type |
+---------+---------+
| content | blob |
| id | int(11) |
+---------+---------+
Database: testdb
Table: users
[3 columns]
+---------+---------------+
| Column | Type |
+---------+---------------+
| id | int(11) |
| name | varchar(500) |
| surname | varchar(1000) |
+---------+---------------+Buscando datos
Cuando trabajamos con estructuras de bases de datos complejas con numerosas tablas y columnas, podemos buscar bases de datos, tablas y columnas de interés mediante la opción --search . Esta opción nos permite buscar nombres de identificadores mediante el operador LIKE . Por ejemplo, si buscamos todos los nombres de tablas que contienen la palabra clave user, podemos ejecutar SQLMap de la siguiente manera:
En el ejemplo anterior, podemos detectar inmediatamente un par de objetivos de recuperación de datos interesantes en función de estos resultados de búsqueda. También podríamos haber intentado buscar todos los nombres de columnas en función de una palabra clave específica (por ejemplo, pass):
Enumeración y descifrado de contraseñas
Una vez que identificamos una tabla que contiene contraseñas (por ejemplo master.users), podemos recuperar esa tabla con la opción -T, como se mostró anteriormente:
En el ejemplo anterior, podemos ver que SQLMap tiene capacidades automáticas de descifrado de hashes de contraseñas. Al recuperar cualquier valor que se parezca a un formato de hash conocido, SQLMap nos solicita que realicemos un ataque basado en diccionarios sobre los hashes encontrados.
Los ataques de descifrado de hash se realizan de forma multiprocesadora, en función de la cantidad de núcleos disponibles en el equipo del usuario. Actualmente, se ha implementado un soporte para descifrar 31 tipos diferentes de algoritmos de hash, con un diccionario incluido que contiene 1,4 millones de entradas (compiladas a lo largo de los años con las entradas más comunes que aparecen en filtraciones de contraseñas disponibles públicamente). Por lo tanto, si un hash de contraseña no se elige al azar, existe una buena probabilidad de que SQLMap lo descifre automáticamente.
Enumeración y descifrado de contraseñas de usuarios de bases de datos
Además de las credenciales de usuario que se encuentran en las tablas de la base de datos, también podemos intentar volcar el contenido de las tablas del sistema que contienen credenciales específicas de la base de datos (por ejemplo, credenciales de conexión). Para facilitar todo el proceso, SQLMap tiene un modificador especial --passwords diseñado especialmente para esta tarea:
Básicamente, esto significa que se recuperará todo lo que esté accesible, lo que podría durar mucho tiempo. Necesitaremos encontrar los datos de interés en los archivos de salida de forma manual.
Ejercicio
Pregunta 1
¿Cuál es el nombre de la columna que contiene la palabra "style" en su nombre? (Caso n.° 1)
Pregunta 2
¿Cuál es la contraseña del usuario Kimberly? (Caso #1)
Obtener las bases de datos
Enumerar tablas de la base de datos testdb
Enumerar la tabla users
Enumerar columnas name y password del usuario Kimberly
Última actualización
¿Te fue útil?
