jueves, 18 de junio de 2015

Inyección SQL: [Login Form ByPass] -- Part 1 --

injection_design.png
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 operaciones sobre una base de datos.El origen de la vulnerabilidad radica en el incorrecto chequeo y/o filtrado de las variables utilizadas en un programa que contiene, o bien genera, código SQL. Es, de hecho, un error de una clase más general de vulnerabilidades que puede ocurrir en cualquier lenguaje de programación o script que esté embebido dentro de otro.

Recreando un escenario ideal(típico).
Un atacante de cara a una aplicación web, se enfrenta a un formulario de login como el siguiente:
SQL-Injection-0.png


Su misión es cruzar esa pantalla. Probablemente nuestro atacante luego de agotar su arsenal de passwords por defecto (“admin:admin”, “admin:12345”, “admin: “, “admin:qwerty”, etc...) intentara a tiro de query inyectar un consulta, que embebida en la sentencia final logre ser ejecutada.


Un formulario que envíe una consulta como la siguiente, resulta tan funcional como vulnerable:
Select idUsr from tblUsers where user='$usuario' and pass='$pass';


El caso normal (por poner algún ejemplo)sería aquel en donde el usuario “fulano” ingrese su password: “qwerty”. En tal caso la consulta enviada al server seria la siguiente:
Select idUsr from tblUsers where user='fulano' and pass='qwerty';


Como a nuestro atacante los casos normales no le resultaron y no le interesan los convencionalismos el va por mas he intenta con un user “admin” y como password prepara la siguiente inyección: “'OR '1'='1”, para hacer un bypass al login. la consulta enviada tendrá la siguiente forma:


SQL-Injection.png
Select idUsr
from tblUsers where user='admin' and pass=''OR '1'='1';



Esta simple inyección se convierte en una MasterKey para muchos, pero muchos formularios de login.

En una segunda parte de este articulo voy a publicar ejemplos del mundo real.





Saludos,
@Capitan_Alfa

No hay comentarios.:

Publicar un comentario