Blog del grupo de investigación GRITS. Redes de próxima generación para el Internet del futuro, Fog Computing e Internet de las cosas para implementar nuestros diseños personalizados en nubes híbridas ciberseguras, en sistemas de almacenamiento a gran escala y comunicaciones de larga distancia.

25 Noviembre 2014 | Publicado por Editorial Team GRITS

Atacando una web con SQL Injection

SQL Injection o Inyección SQL es un tipo de ataque a una aplicación que se basa en una vulnerabilidad en la validación incorrecta de los campos, que permite al atacante inyectar código SQL con el fin de alterar el comportamiento normal y ejecutar el código inyectado. La sentencia típica para comprobar si un servidor es vulnerable a SQL Injection es ‘ or ‘1’=’1. Como ejemplo, tenemos la siguiente aplicación web, que nos devuelve la información del producto correspondiente al identificador. Si añadimos la condición or 1 = 1, hacemos que el servidor nos devuelva toda la información de los datos del producto, debido a que la condición 1 = 1 siempre será cierta. sqlInjection1 Una forma de automatizar el proceso de SQL Injection es usando sqlmap, una herramienta desarollada en Python que detecta las vulnerabilidades SQL en una web y permite explotarlas. Para probar si una url es vulnerable a SQL Injection, se usará el comando sqlmap –u <url>,  que nos indicará a que tipo de ataques es vulnerable la aplicación web, como se ve en la siguiente imagen. sqlInjection5 Una vez obtenido que es vulnerable, se usan opcionas para obtener información de la base de datos. Unos ejemplos son:

  1. --current-user
  2. --current-db
  3. --is-dba
  4. --users
  5. --password

En la siguiente imagen obtenemos la información de aplicar sqlmap –u <url> --current-user --current-db --is-dba sqlinjection3 Usando sqlmap –u <url> --users –password obtenemos una lista de todos los usuarios y sus contraseñas. Sqlmap permite hacer un ataque de diccionario para crackearlas, obteniendolas en texto plano como se ve en la imagen. sqlinjection4 Para evitar los ataques de SQL Injection se debe tener especial cuidado en limpiar correctamente todos los datos de entrada, por ejemplo se puede limitar el uso de los carácteres especiales como pueden ser las comillas y no concatenar de forma directa la entrada con la query.

Share