viernes, 21 de marzo de 2014

Test de inyección SQL con SQLMAP


Bienvenid@s, hoy os quiero hablar de una potente herramienta de libre descarga para auditar posibles vulnerabilidades en tu sitio web provocadas por la inyección SQL, el programa se llama SQLMAP, entre sus grandes cualidades podemos encontrar que puede testear múltiples gestores de bases de datos: MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase and SAP MaxDB, este amplio abanico facilita al auditor tener un todo en uno y no tener que testear cada gestor de bases de datos con un programa diferente. SQLMAP está desarrollado bajo el lenguaje Python, así que se hace indispensable tenerlo instalado en la máquina donde va a realizarse la auditoría.

Desde SQLMAP ya advierten de que está herramienta sólo es para realizar tests bajo servidores donde el propietario ha dado su mutuo consentimiento de su uso, de lo contrario, puede ser considerada un acción ilegal.

A continuación vamos a ver un test de inyección SQL y como con cuatro simples pasos se puede ir escalando de las bases de datos a las tablas de una base de datos en concreto y finalmente a los registros de la tabla seleccionada.

Primero vamos a hacer un test para saber si es vulnerable, abrimos la consola y nos dirigimos a la ruta de la carpeta de SQLMAP e introducimos el siguiente comando ...

sqlmap.py -u "http://web.com/index.php?id=-1" -p "id"

Estamos comprobando si el parámetro id es vulnerable, si lo es nos mostrará un mensaje como el siguiente ...



"También es conveniente saber que SQLMAP irá guardando los reportes en la carpeta output."

Ahora sabemos que el parámetro id es vulnerable a la inyección sql, así que vamos a continuar con el paso 2, en el cual vamos a extraer todas las bases de datos alojadas en el servidor.

sqlmap.py -u "http://web.com/index.php?id=-1" -p "id" --dbs


Como podemos ver SQLMAP ha listado todas las bases de datos, ahora es momento de saber que tablas se encuentran en una determinada base de datos por ejemplo vamos a explorar la base de datos "ejercicios", paso 3 ...

 sqlmap.py -u "http://web.com/index.php?id=-1" --tables -D ejercicios





Pues aquí tenemos las tablas de la base de datos "ejercicios", estamos viendo como un atacante podría ir escalando sobre el contenido de nuestras bases de datos con suma facilidad, pero esto no es todo, lo más peligroso está por llegar y para ello vamos a ver todos los registros de la tabla que queramos, por ejemplo, la tabla "productos", vamos al paso 4 ...

 sqlmap.py -u "http://web.com/index.php?id=-1" --dump -T productos


Como hemos podido ver en esta auditoría, el resultado es una pésima programación por parte del desarrollador, así que lo primero que hay que hacer es tapar todos esos agujeros y para ello cada lenguaje posee sus herramientas a través de funciones específicas para el filtrado de datos, lo que está claro es que dejar al descubierto tal agujero de seguridad puede conllevar al robo de toda la información, incluyendo datos privados o confidenciales.



No hay comentarios: