Buscar en ELMED

miércoles, 3 de octubre de 2012

Inyecciones SQL

Las inyecciones SQL es un tema muy poco conocido, para aquellos que comenzamos en el mundo de el desarrollo de software.
Segun Wikipedia "Inyección SQL es un método de infiltración de código intruso que se vale de una vulnerabilidad informática presente en una aplicación en el nivel de validación de las entradas para realizar consultas a una base de datos."
En palabras mas comunes consiste en inserta código SQL malicioso, a traves de una consulta que reciba parámetros no validados correctamente.
Veamos un ejemplo del asunto:
Supongamos existe una ventana de login con dos cajas texto. La caja de texto txtusuario y la caja txtcontraseña.
Y que el botón aceptar exista una consulta SQL que se construye de la siguiente forma

 SELECT * FROM usuario WHERE nombre='"+txtusuario+"' AND pass='"+txtusuario+"';

En caso de que un usuario mal intencionado teclee en la caja de texto  txtusuario "anonimo" y en la caja de texto   txtcontraseña " ' OR '1'='1'--". La sentencia SQL quedaría a si:

 SELECT * FROM usuario WHERE nombre='anonimo' AND pass='' OR '1'='1'--;

Como los caracteres -- en la mayoría de los motores de base de datos significan comentario de fin de linea, esta sentencia traería todos los usuarios de esa tabla y permitirá que nuestro intruso burle la ventana de login posiblemente con los permisos del primer usuario registrado en la tabla.
Bueno este es uno de los usos mas sencillos de las inyecciones SQL, vale la pena mencionar que este ataque puede ser aun mucho mas peligroso por ejemplo si el atacante puede usar una sentencia DROP TABLE entre otras. 
También es importante decir que se pueden desarrollar sentencias especificas para explotar las vulnerabilidades de un motor de base de datos en especial.
Para finalizar y mostrarle lo importante que es cuidar nuestras aplicaciones de una inyección SQL, les voy a dejar un ejemplo de una pagina de carácter gubernamental en  mi país la cual es susceptible a este tipo de ataques y lo peor aun fue que lo reporte hace ya casi un mes y no han hecho nada para corregirlo.
http://www.fosyga.gov.co
Para evitar inyecciones SQL en java mira esta post SQL Inyeccion

No hay comentarios:

Publicar un comentario