Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Actividades
Objetivos
Case01-InjectionInLogin-String-LoginBypass-With200Errors.jsp
Case02-InjectionInSearch-String-UnionExploit-With200Errors.jsp
Case05-InjectionInSearchOrderBy-String-BinaryDeliberateRuntimeError-
With200Errors.jsp
Criterios de evaluación
Entrega
Introducción
SQL Injection o SQLi, es una vulnerabilidad que afecta aplicaciones o sitios web que
utilizan Sistemas Gestores de Bases de Datos (SGBD). Esta vulnerabilidad puede ser
explotada por un atacante para pasar por encima de las medidas de seguridad
implementadas en el sistema para autenticar y autorizar el acceso a la información.
En un ataque de SQLi, se ejecutan comandos SQL maliciosos que permiten al atacante
tomar control del SGBD, pudiendo tener acceso completo al contenido de las bases de
datos, e incluso a modificarlas al añadir o borrar registros.
A pesar de que este tipo de vulnerabilidades se han explotado desde hace bastantes años,
los ataques de SQLi siguen siendo de los más usados y peligrosos, pues estos llevan al
robo de información de datos personales, secretos industriales y propiedad intelectual,
así como a la falsificación de información, robo de identidad y sabotajes.
Para llevar a cabo un ataque de SQLi, el atacante crea un contenido de entrada conocido
como payload y que no es otra cosa mas que una entrada dentro de una página o
aplicación que es usada directamente como un query de SQL, con esto se pueden ejecutar
comandos SQL de forma maliciosa.
Existen diferentes tipos de ataques SQLi, los cuales pueden ser clasificados en tres
categorías principales:
1. In-band SQLi
En estos ataques el atacante es capaz de usar el mismo canal de comunicación
para lanzar el ataque y para recolectar los resultados.
Los tipos de ataque más comunes en esta categoría son Error-based SQLi y
Union-based SQLi.
2. Blind SQLi
En estos ataques no se envían datos a través de una aplicación web y el atacante
no es capaz de ver los resultados como en un ataque In-band. En este caso el
atacante es capaz de reconstruir la estructura de las bases de datos mediante el
envío de payloads y observando las respuestas y el comportamiento del SGBD.
Los tipos de ataque que caen en esta categoría son Blind-boolean-based SQLi y
Blind-time-based SQLi.
3. Out-of-band SQLi
Estos ataques son poco comunes y dependen de características o programas
instalados en el servidor del SGBD y que la aplicación web utilice.
Este ataque es un alternativa a Blind SQLi y depende de que el servidor SGBD
pueda hacer peticiones DNS o HTTP para entregar datos al atacante en un
servidor que él controle.
Desarrollo
Se implementará un SGBD en un servidor Windows Server 2016. El SGBD elegido es
MySQL Community, el cual alojará una base de datos que será utilizada por una
aplicación Java que se ejecutará sobre un servidor web Apache.
La aplicación Java que se usará es WAVSEP (Web Application Vulnerability Scanner
Evaluation Project), la cual es una aplicación web vulnerable que permite evaluar la
calidad y certeza del software analizador de vulnerabilidades.
El procedimiento para implementar WAVSEP es el siguiente:
1. Instalar Java JRE y JDK
Una vez instalada la aplicación Web vulnerable, se pueden comenzar a evaluar los
ataques SQLi.
9. Entrar al enlace http://localhost:8080/wavsep para verificar que la aplicación
funciona.
12. En la sección POST Input Vector, abrir el enlace Evaluation of SQLI injection
detection accuracy – POST- Erroneous 200 responses
Con lo que se obtendrá acceso a la página como usuario autenticado sin importar
que la combinación de usuario y contraseña no coincidan y se habrá perpetrado
el ataque SQLi
Esto permitirá obtener una lista de todas las tablas disponibles en la base de
datos, exponiendo así la seguridad de la información, al violar el principio de
confidencialidad de la seguridad de la información
Conclusiones
Los SQLi son ataques muy peligrosos, ya que exponen la información almacenada en los
SGBD y esto es un problema para cualquier tipo de organización, ya que se puede
comprometer información clasificada como secreto industrial o se puede incurrir en
faltas a las leyes de protección de datos personales.
La única forma de prevenir ataques de SQLi, consiste en ajustar el código de los sistemas
para validen las entradas de los usuarios y parametrizar los queries de SQL a las bases
de datos.
De igual forma se deberán adoptar buenas prácticas de programación segura para evitar
el uso de consultas a las bases de datos directamente desde los campos de entrada de los
usuarios.