sql injection
TRANSCRIPT
I.S.C. Victor H. Garcia
Inyección SQL
Que es SQL?
El usuario coloca información que suple datos y ellos son validos para una aplicación sin una apropiada validación.
Procesados como comandos SQL.
Una tipica consulta SQL es: select id, Firstname, Lastname from authors select id, FirstName, LastName from authors
where FirstName = 'john' and LastName = 'smith'
FirstName: jo'hn LastName: smith La ‘consulta' se convierte en: select id, forename, surname from authors
where FirstName = 'jo'hn' and LastName = 'smith'
Error: Incorrect syntax near 'Name'.
Unclosed quotation mark after the character string ')'.
Ahora el ataque: FirstName: jo'; drop table authors--
Extraer datos confidenciales Agregar o Modificar datos Impedir el acceso al sistema Identificacion exitosa de usuario
admin Ejecutar comandos remotos
Inyección atraves de la entrada de un usuario Cadenas peligrosas en un formulario web.
Inyección atraves de cookies Modificando campos de una cookie que
contenga una cadena peligrosa.
Inyección atraves de variables del servidor Las cabeceras son modificadas para poner una
cadena peligrosa.
Inyección SQL de segundo orden Un caballo de troya donde todo parece bien
hasta que cierta situación cambia.
Consultas peligrosas en el DB server Tautologias Codificación Alterna Ilegal/logicas consultas incorrectas Union Query Stored Procedures
Insertar consultas adicionales para que estas sean ejecutadas por el servidor
queryString = “SELECT info FROM userTable WHERE” +
“login=‘” + login + “' AND pin=” + pin; Input pin as “0; DROP database
webApp” queryString = “SELECT info FROM
userTable WHERE login=‘name' AND pin=0; DROP
database webApp”
Crear una consulta que siempre evalue una entrada valida en SQL
queryString = “SELECT info FROM userTable WHERE” +
“login=‘” + login + “' AND pin=” + pin;
Input login as “user’ or 1=1 --” queryString = “SELECT info FROM
userTable WHERE login=‘user‘ or 1=1 --' AND pin=“
Prevención
Detectar vulnerabilidades en el codigo
Librerias seguras
Detección
Detectar ataques en tiempo de ejecución
Defensa con las mejores practicas de programación
Pruebas de Inyección Analisis estatico del codigo Librerias de desarrollo seguras
Anomalias basadas en el codigo malicioso.
1. SQL tiene: a) Muchas fuentes b) Muchos Objetivos c) Muchos Tipos
2. Las técnicas de detección pueden ser efectivas pero limitadas debido a que son las mismas
3. Técnicas de prevención pueden ser muy efectivas, pero eso ya depende del programador.
ivictorhugo
http://www.facebook.com/vhugo
http://mx.linkedin.com/in/victorhugogarcia