Chema Alonso en su blog, El lado del Mal, hablaba sobre este tipo de ataques como si jugaramos al "¿Quién es quién?" En este juego había que adivinar un personaje haciendo preguntas del tipo "Si, No":
- ¿Es moreno?>No
- ¿Es hombre?>Si
- ¿Tiene bigote?>No
Pues bien, así es como funciona el bind sql inyectión. Veámoslo.
¿Qué es un ataque blind sql Inyection?
Es una técnica de ataque que utiliza consultas sql inyection, preguntas a la base de datos. Cuando una página web, por motivos de seguridad (El motivo es que no hay seguridad) no muestra mensajes de error de la base de datos al no haber un resultado correcto mostrándose siempre el mismo contenido (solo habrá respuesta si el resultado es correcto).
Para las páginas que si poseen seguridad, si se hace una consulta no válida a la base de datos, aunque sea verdadera, mostrará un mensaje de error.
Las consultas a la base de datos en una web se hacen a través del método GET, que hemos visto recientemente en la teoría de PHP.
El blind sql inyection funciona si en una url del tipo: http://localhost/mipágina/index.php?id=1 le añadimos una consulta a la base de datos, mediante la inyección de código SQL, quedando algo así:
- http://localhost/BlinSQLInjection/blindmysql.php?id=1 AND 1=1;
¿Para que sirve un ataque Blind SQL Inyectión?
El sistema parece algo tonto, pero no es así, porque si la consulta nos devuelve que es verdadera, entonces nos muestra la misma página, si no, nos da un error. Por eso es MUY IMPORTANTE HACER CONSULTAS QUE SOLO DEVULEVEN VALORES LÓGICOS (VERDADERO O FALSO).
Sabiendo el funcionamiento del ataque y viendo que la página es vulnerable, pordrmos llegar a obtener cualquier información que esté en la base de datos de la página.
Siguiendo con el ejemplo de la URL de antes, podríamos empezar a preguntar por otra cosa:
- http://localhost/BlinSQLInjection/blindmysql.php?id=1 id=1 AND (SELECT (COUNT(*)) FROM users);
Probamos con usuarios:
- http://localhost/BlinSQLInjection/blindmysql.php?id=1 id=1 AND (SELECT (COUNT(*)) FROM usuarios);
Y así sucesivamente, luego podríamos llegar a deducir si hay un campoque se llame contraseña o passwd y llegar a sacarla, aunque claro primero habría que averiguar el número de caracteres (hay una función SQL que te los devuelve y si preguntamos por ellos podríamos llegar a sacarlos). Luego probar:
- Si la contrseña es de 5 caracteres: "aaaaa", "baaaa","bbaaa",etc.
Con este ataque se puede sacar, toda esa información, y llegar a hackear una cuenta de un usuario o tener acceso a información del servidor, por ejemplo.
Así que si estaís pensando en realizar una Web, ojito con este tipo de ataques y aseguraros de que vestra página no es vulnerable.
En este enlace hay un tutorial sobre el Blind SQL Inyection, del cual he sacado parte de la información. Saludos curiosos.
No hay comentarios:
Publicar un comentario