jueves, 9 de mayo de 2019

Testing SQL INJECTION- Parte 2

Segunda parte de nuestra mini - serie de SQL INJECTION en la que hablare de como testear una SQL injection.

las aplicaciones web construyen las sentencias SQL, en que se mezclan con los datos suministrados por el usuario:


la variable $id contiene datos suministrados por el usuario, debido a esto el usuario puede proporcionar informacion adicional a la sentencia SQL original, como por ejemplo $id= 10 or 1=1 cambiando la logica de la sentencia SQL.

los ataques de SQL INJECTION se pueden dividir en las tres siguientes clases:


Inband: los datos se extraen utilizando el mismo canal que se utiliza para inyectar el código SQL. (web page).

Out-of-Band: los datos se recuperan utilizando un canal diferente ( por ejemplo se genera un correo electrónico con los resultados de la consulta y se envía al testeador).

Inferential or Blind: no hay transferencia real de datos, pero el testeador es capaz de reconstruir la información enviando peticiones particulares y observando el comportamiento resultante del servidor DB.

si la aplicación devuelve un mensaje de error generado por una consulta incorrecta, entonces puede ser mas facil para un atacante reconstruir la lógica de la consulta original y hace una inyeccion exitosa.

si la aplicación oculta los detalles del error, entonces el testeador debe realizar ingenieria inversa a la logica de la consulta original.


Técnicas comunes de SQL Inyection:

las 5 técnicas comunes para explotar fallas de SQL Inyection, a veces estas técnicas pueden ser combinadas;

Union Operator: Se utiliza cuando la falla de SQL Inyection ocurre en una instruccion SELECT, lo que permite combinar dos consultas en un unico resultado.

Boolean: utilice las condiciones booleanas para verificar ciertas condiciones son verdaderas o falsas.

Error Based: esta técnica obliga a la base de datos a generar error, dando al atacante o testeador información sobre la cual pueda refinar su inyección.

Out-Of-Band: técnica utilizada para recuperar datos utilizando un canal diferente.

Time Delay: utilice comandos de la base de datos ( Sleep) para retrasar las respuestas en las consultas condicionales. Es útil cuando el atacante no tiene algún tipo de respuesta de la aplicación.


PD: Seguimos con la tercera parte, llamada Detection Techniques;


No hay comentarios.:

Publicar un comentario