domingo, 22 de junio de 2014

Herramientas y Técnicas de Inyección SQL

Hace poco realicé un trabajo optativo sobre las diferentes herramientas y técnicas de inyección SQL.

Un ataque de inyección SQL consiste en la inyección de una sentencia SQL no autorizada y ligeramente adaptada a través de un canal de entrada de datos desde el cliente para obtener un resultado distinto al original de la aplicación, por ejemplo desde el parámetro de url donde se indica el identificador de un producto.

Es un problema de seguridad muy grave cuyo origen está en la implementación del modelo con acceso a la base de datos y la ausencia de validación en los parámetros de entrada enviados desde el cliente. Existen distintas técnicas de inyección en función del canal del ataque, de si podemos ver los resultados o si la consulta enviada nos devuelve un mensaje que indique si ha tenido éxito o no.

Los ataques de inyección están clasificados en primera posición en el Top 10 de OWASP, documento centrado en las principales vulnerabilidades de aplicaciones web. La fundación OWASP, acrónimo en inglés de "Proyecto Abierto de Seguridad en Aplicaciones Web", es un organismo que apoya, gestiona y divulga documentación y metodologías para la seguridad de la información.

El motivo de que los ataques de inyección estén en el Top 10 de OWASP es que suelen ser la causa de fuga de información importante. Permiten realizar OS fingerprinting para conocer el sistema operativo o la versión del gestor de bases de datos, obtener esquemas de la base de datos, conocer el usuario utilizado en la conexión e incluso acceder a las tablas de una base de datos y obtener sus registros, por ejemplo la tabla de usuarios de la aplicación con todas sus contraseñas (normalmente hasheadas y con salt). Un ataque de inyección SQL podría incluso realizar un ataque de denegación de servicio.

Existen herramientas que automatizan todo el proceso de inyección SQL, detectando y probando diferentes técnicas de ataque. La mayoría están escritos en algún lenguaje de scripting como Pyton o Perl y son fáciles de instalar, algunas herramientas de inyección SQL interesantes son SQLMap, TheMole o SQLNinja, este último para ataques contra SQL Server.

Por último, no se debe olvidar que las bases de datos NoSQL también pueden ser susceptibles de ataques de inyección SQL, aunque no de la misma forma.

A continuación os dejo la memoria del trabajo práctico explicando las diferentes técnicas de inyección SQL y la instalación y uso de varias de las herramientas para automatizar el proceso del ataque. Para realizar las pruebas he utilizado la aplicación de OWASP Bricks en un sistema GNU/Linux Debian con Apache Web Server, PHP y MySQL.

Espero que os guste el trabajo y sirva para entender el funcionamiento básico de un ataque de inyección SQL.

No hay comentarios:

Publicar un comentario