A1-2017. SQL INJECTION
SQL Injection está reconocido como la 1ª vulnerabilidad Web más importante según OWASP. Aquí aprenderemos qué es, como funciona y como explotarlo.
QUE ES SQL
Structured Query Language. Lenguaje de consultas estructuradas
Es un lenguaje que permite especificar mediante consultas diversos tipos de operaciones en un gestor de base de datos. Estas operaciones pueden ser:
Crear
Modificar
Eliminar
Incluir
etc...
Los Gestores de Bases de datos mas conocidos son:
MariaDB
SQL Server
MySQL
Oracle
PostgreSQL
etc...
SQL INJECTION
Es una vulnerabilidad que permite la inyeccion de codigo SQL mediante la entrada de datos provenientes del lado del cliente hacia el servidor.
Esto permite alterar el funcionamiento normal del programa y lograr que se ejecute el codigo inyectado.
Se puede hacer todo lo que permite hacer el lenguaje SQL : Consultar, Eliminar, Modificar e incluir informacion en la base de datos.
Existen varios tipos:
INYECCION SQL IN-BAND → injeccion SQL Clasico.
Inyeccion SQL Basada en Error
Inyeccion SQL Basada en Uniones
INYECCION SQL INFERENCIAL → Blind SQL Injection (SQLi ciega).
Inyeccion SQL Basada en Booleanos
Inyeccion SQL Basada en Tiempo
INYECCION SQL OUT-OF-BAND → Envio de peticiones a un servidor controlado por el atacante.
Metodos de inyección
Entrada de valores enteros en URL
Entrada de valores de cadena en URL
Entrada de datos en formularios
Entrada de dato libre
Dropdown Box
Entrada de datos mediante cabeceras modificadas
Cookies
User-Agent
Como identificar vulnerabilidades SQLi
Para empezar, debo encontrar un elemento de la pagina web que obtenga informacion de una base de datos, ya sea un formulario o un parámetro de una URL (normalmente los parámetros tienen la forma url?dato=valor).
Una vez lo he encontrado, la forma mas sencilla de comprobar si es vulnerable o no es modificando el valor de busqueda por una comilla simple ('). De esta manera, obtendremos un error de sintaxis de SQL que no solo confirmara que nos encontramos ante una vulnerabilidad sino que ademas nos indicara el Gestor de Base de Datos que se esta utilizando.
Última actualización