La mayor parte de aplicaciones y webs con registro emplean bases de datos relacionales para guardar la información de los usuarios (identificador, nombre, contraseña, etc.). Cuando se intenta acceder a una, el motor emplea el lenguaje SQL para consultar a la base de datos y, en función de la comprobación efectuada, permitir o no la acción (selección, inserción,…).
Pero existen vulnerabilidades que permiten la inyección SQL, un método de infiltración de código intruso para realizar operaciones sobre la base de datos.
Esta tarea consiste en la obtención de información sensible valiéndonos de la SQL injection (vulnerabilidad, infiltración, e inserción de código). Para ello, empleamos un entorno controlado para este caso práctico: una aplicación PHP/SQL vulnerable (DVWA) instalada en una máquina virtual en nuestro propio equipo gracias a VirtualBox.
El proceso es el siguiente: 1) Arrancamos la MV para obtener la IP. 2) Accedemos mediante el explorador a esa IP, y bajamos el nivel de seguridad. 3) Vamos haciendo peticiones, gracias a las sentencias SQL que nos explican en este artículo. 4) Obtenemos información diversa: nombre y versión de la base de datos, nombres de las tablas/columnas/registros,… ¡e incluso nombres de usuario y contraseñas! 5) Aunque ahora no procede, se podrían incluso crear registros, sobre-escribirlos, borrarlos, y otras manipulaciones. La interfaz de este mecanismo sería esta:
Está claro que si una aplicación no tiene el nivel de seguridad adecuado en sus bases de datos, puede quedar información sensible al descubierto, o sufrir manipulaciones y ataques. Aspecto a vigilar por tanto.
Pingback: MHE: tarea final – Escoler