Cargando



SQLMAP herramienta de Inyección de SQL y Ethical hacking de bases de datos

Todo administrador de red y webmaster tiene como prioridad proteger los datos alojados en una red o servidor. Existen diversos tipos de herramientas de pruebas de penetración que automatizan el proceso de detectar y explotar los errores de inyección SQL, una de ellas es SQLMAP.


jul 02 2015 11:53
Profesional
jul 04 2015 10:35
Todo administrador de red y webmaster tiene como prioridad proteger los datos alojados en una red o servidor. Existen diversos tipos de herramientas de pruebas de penetración que automatizan el proceso de detectar y explotar los errores de inyección SQL, una de ellas es SQLMAP.

Esta herramienta sirve para testear servidores de bases de datos. SQLMAP permite testear muchos motores de bases de datos y muchas características especificas para testear la seguridad de una base de datos. Aquí cabe aclarar que esto lo hacemos para buscar vulnerabilidades y solucionar problemas no para romper sitios web, ni hackear en forma daniña, esto se llama Ethical Hacking, buscar vulnerabiliades para repararlas, no para explotarlas maliciosamente.

sqlmap.jpg


Soporta una gran variedad de motores de bases de datos como ser MySQL, Oracle, PostgreSQL, Microsoft SQL Server, SQLite, Firebird, Sybase, SAP MaxDB.

SQLMAP esta desarrollada en Python, se puede descargar desde la web http://sqlmap.org/funciona sobre Linux pero con Python puede utilizarse en Windows.

Sqlmap está incluido en distros Linux especializadas en seguridad y Hacking Etico como linux kali, Backtrack o Backbox. En otras distribuciones se puede simplemente descargar e instalar.

Para este tutorial utilizaremos Linux Mint en cualquier distribución funciona. Abrimos la terminal y escribimos los siguientes comandos:
wget 'https://github.com/sqlmapproject/sqlmap/tarball/master' –output-document=sqlmapproject-sqlmap-0.9-3671-gdcaad75.tar.gz
Al descargar descomprimimos el archivo con el siguiente comando:
tar -xvf sqlmapproject-sqlmap-0.9-3671-gdcaad75.tar.gz
Podemos cambiar el nombre del directorio para que sea más simple acceder con el siguiente comandos:
mv directorio-viejo -directorio-nuevo
mv sqlmapproject-sqlmap-gdcaad75  sqlmap
cd sqlmap
Probamos que funcione invocando la versión de sqlmap con el siguiente comando:
python sqlmap.py –version

sqlmap2.jpg


Probando sitios web y buscando Vulnerabilidades


Una forma simple de encontrar web para analizar es poner en el buscador de google section.php?id= y nos aparecerán miles de web que podrían ser vulnerables.

Ejemplo de análisis sobre una web posiblemente insegura:

sqlmap3.jpg


En este caso luego de analizar la web e intentar acceder Vemos que todos los parámetros analizados parecen no inyectables, lo que supone que la web es segura en este caso contra inyecciones.

Probamos otro caso cambiamos el nombre real del nombre del dominio por seguridad pero los parámetros son reales.
python sqlmap.py -u http://www.demoweb.com/index.php?seccion=ver_detalle&id=103

sqlmap4.jpg


En este caso SQLMAP ha encontrado una posibilidad de inyección sql, por lo tanto nos avisa que el
parámetro 'seccion' parece ser parte de una consulta MySQL 5.0.11 y podría ser inyectable, entonces nos solicita si queremos intentar una ataque a esta base de datos o saltarla y probar con otros motores de base de datos, Pulsamos Y y el software comienza a realizar diversos ataques y testeos. Nos devolverá todos los resultados de posibles a taques de inyección sql.

Descubrir Bases de datos y tablas vulnerables


Mediante el test anterior podemos detectar y confirmar que una base de datos o una web es vulnerable a la inyección de SQL y por lo tanto el siguiente paso es averiguar los nombres de las bases de datos que existen en el servidor o dominio. La opción "--dbs" se utiliza para obtener la lista de bases de datos.
python sqlmap.py -u "http://www.demoweb.com/index.php?seccion=ver_detalle&id=103" –dbs

sqlmap5.jpg


Vemos que detecto una vulnerabilidad entonces solicita comenzar el ataque de inyección Sql. Al finalizar vemos las consultas sql realizadas, las bases de datos detectadas en este caso son dos baxxxx_db que es la del sitio web que estamos testeando, la otra information_schema la que contiene la estructura de Mysql.

sqlmap6.jpg


Aquí cabe recordar que aclarar que esto lo hacemos para buscar vulnerabilidades y solucionar problemas no para romper sitios web ni hackear en forma dañina, esto se llama Ethical Hacking, buscar vulnerabilidades para repararlas, no para explotarlas maliciosamente.


Buscar tablas de una base de datos determinada

A continuación habiendo encontrado una base de datos, sera ahora es el momento de averiguar que existen las tablas en una base de datos en particular, según el ejemplo tenemos una base de datos de sistema y otra que almacena los datos de la web.. Digamos que la base de datos de interés aquí es la de la web baxxxx_db.

La sintaxis del comando a ejecutar sera la siguiente:
python sqlmap.py -u "urlservidor" --tables -D basedatos
Por lo tanto utilizamos lños datos encontrados en los pasos anteriores
python sqlmap.py -u "http://www.demoweb.com/index.php?seccion=ver_detalle&id=103" –tables  -D baxxxx_db

sqlmap7.jpg


Podemos observar como el resultado de SQLMAP, es un listado de tablas donde podemos ver la tabla de usuarios y una tabla de administradores de la web seguramente.

Esto de muestra lo inseguro que es el servidor que estamos analizando y los problemas que podría tener el desprevenido administrador o webmaster.

A continuación como ya hemos averiguado las bases de datos y las tablas que existen veremos si podemos investigar que columnas y estructura tienen las tablas de la base de datos.

Para ello utilizaremos la siguiente sintaxis de comandos:
python sqlmap.py -u "urlservidor" --columns -D basededatos -T tabla
Por lo tanto utilizamos los datos encontrados en los pasos anteriores veremos la tabla de administradores, utilizando los siguientes comandos.
python sqlmap.py -u  "http://www.demoweb.com/index.php?seccion=ver_detalle&id=103" --columns -D baxxxx_db -T administrador

sqlmap8.jpg


Podemos observar como resultado la estructura de la tabla administrador de la base de datos MYSQL, debido a los problemas de seguridad del servidor.

A continuación probamos a realizar el mismo análisis con la tabla usuarios:
python sqlmap.py -u  "http://www.demoweb.com/index.php?seccion=ver_detalle&id=103" --columns -D baxxxx_db -T usuarios

sqlmap9.jpg


Luego de realizar el análisis SQLMAP nos muestra las 9 columnas que componen la estructura de la tabla.

Mostrar los datos de un tabla en particular datos de una tabla.

A continuación demostraremos la parte mas interesante, que es el objetivo buscado que es la extracción de los datos de la tabla, veremos como alguien podría acceder a manipular los datos, un buen administrador de red busca que esto no suceda . El comando para ver los datos sera:
python sqlmap.py -u "urlservidor" --dump -D basedatos -T tabla
El comando anterior –dump lo que hace es simplemente volcar los datos de la tabla en particular, muy similar a la función que cumple el comando mysqldump, incluso la impresión de datos en la pantalla tiene un aspecto similar.

A continuación probamos a realizar el mismo análisis con la tabla usuarios
python sqlmap.py -u "http://www.demoweb.com/index.php?seccion=ver_detalle&id=103" " --dump -D baxxxx_db -T usuarios


Conclusión
Así podremos observar todos los datos contenidos en la tabla analizada en este caso la tabla usuarios, si hacemos lo mismo con la de administradores, tal vez podamos conseguir el control del backend o zona de administración de la web.


Hasta ahora hemos sido capaces de recoger una gran cantidad de información de una base de datos remota de un servidor inseguro en su base de datos utilizando sqlmap. El motor de base de datos es Mysql y a travez de sqlmap, Es casi como tener acceso directo a la base de datos a través de una herramienta como phpmyadmin.


En este tutorial los análisis son reales pero se han realizado con fines de verificar vulnerabilidades, en ataques de hackers podrían intentar ganar un nivel administrador para acceder al sistema. Para ello, se tratarían de acceder a contraseñas y tratar de iniciar sesión a través del panel de administración o que tratarían de obtener información de una empresa y sus datos mas valiosos.


En otro tutorial explicaremos como utilizar SQLMAP para comprobar si los formularios de una web son seguros al enviar datos o no.

¿Te ayudó este Tutorial?


2 Comentarios


Aldair Floréz
nov 14 2016 05:55

Buen tuto amigo pero podrias compartirlo para windows 

Un 10 como siempre Sergio. Muy buen tutorial. ¡Saludos!.

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X