Sie sind auf Seite 1von 14

Asignatura Datos del alumno Fecha

Apellidos: Arellano Figueroa


Seguridad en Bases
de Datos y
02 de julio de 2019
Almacenamiento de
Nombre: Luis Alberto
Datos Masivos

Actividades

Trabajo: Explotación de vulnerabilidades SQLI

Objetivos

Explotar vulnerabilidades que afectan a bases de datos, auditar su seguridad e


implementar una guía de seguridad de un SGBD MYSQL.

Tendrás que hacer la comprobación de vulnerabilidades de inyección SQL con la


aplicación WAVSEP.

Instalación: descarga la aplicación WAVSEP desde la siguiente dirección:


https://sourceforge.net/projects/wavsep/files/WAVSEP-v1.5/wavsep.war/download

Sigue las instrucciones de instalación de WAVSEV en:


https://github.com/sectooladdict/wavsep/wiki/WAVSEP-Installation-and-
Deployment y arranca el servidor de aplicaciones Apache tomcat ejecutando el startup-
bat en el directorio /bin.

Comprueba la materialización de ataques SQLI utilizando los exploits que se


recomiendan dentro de la categoría de ataques SQLI de WAVSEP:

Evaluation of SQLI injection detection accuracy – POST- Erroneous 200 responses:

Case01-InjectionInLogin-String-LoginBypass-With200Errors.jsp
Case02-InjectionInSearch-String-UnionExploit-With200Errors.jsp
Case05-InjectionInSearchOrderBy-String-BinaryDeliberateRuntimeError-
With200Errors.jsp

TEMA 3 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Arellano Figueroa
Seguridad en Bases
de Datos y
02 de julio de 2019
Almacenamiento de
Nombre: Luis Alberto
Datos Masivos

Criterios de evaluación

Corrección en la ejecución de cada parte y explicación clara y concisa de lo realizado en


la memoria aportando imágenes que demuestren la implementación y comprobaciones
realizadas.

Entrega

Confecciona una memoria de 6 páginas como máximo resumiendo el resultado del


análisis de seguridad efectuado. Adjunta el fichero con el resultado del análisis.

TEMA 3 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Arellano Figueroa
Seguridad en Bases
de Datos y
02 de julio de 2019
Almacenamiento de
Nombre: Luis Alberto
Datos Masivos

Explotación de Vulnerabilidades SQLi

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.

TEMA 3 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Arellano Figueroa
Seguridad en Bases
de Datos y
02 de julio de 2019
Almacenamiento de
Nombre: Luis Alberto
Datos Masivos

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

TEMA 3 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Arellano Figueroa
Seguridad en Bases
de Datos y
02 de julio de 2019
Almacenamiento de
Nombre: Luis Alberto
Datos Masivos

2. Instalar Apache Tomcat

3. Instalar MySQL Server

TEMA 3 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Arellano Figueroa
Seguridad en Bases
de Datos y
02 de julio de 2019
Almacenamiento de
Nombre: Luis Alberto
Datos Masivos

4. Instalar MySQL JDBC

5. Descargar WAVSEP desde:


https://sourceforge.net/projects/wavsep/files/WAVSEP-v1.5/wavsep.war/download

6. Copiar el archivo wavsep.war a la carpeta de aplicaciones web de Apache Tomcat

7. Instalar el esquema de la base de datos de WAVSEP usando el enlace


http://localhost:8080/wavsep/wavsep-install/install.jsp

TEMA 3 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Arellano Figueroa
Seguridad en Bases
de Datos y
02 de julio de 2019
Almacenamiento de
Nombre: Luis Alberto
Datos Masivos

8. Si la instalación es exitosa se obtendrá el siguiente resultado

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.

TEMA 3 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Arellano Figueroa
Seguridad en Bases
de Datos y
02 de julio de 2019
Almacenamiento de
Nombre: Luis Alberto
Datos Masivos

10. Ingresar el documento index-active.jsp en la ruta de inicio de la aplicación


WAVSEP e ingresar al enlace Evaluation of Active Exposures Detection
Accuracy.

11. Abrir el enlace SQL Injection

TEMA 3 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Arellano Figueroa
Seguridad en Bases
de Datos y
02 de julio de 2019
Almacenamiento de
Nombre: Luis Alberto
Datos Masivos

12. En la sección POST Input Vector, abrir el enlace Evaluation of SQLI injection
detection accuracy – POST- Erroneous 200 responses

TEMA 3 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Arellano Figueroa
Seguridad en Bases
de Datos y
02 de julio de 2019
Almacenamiento de
Nombre: Luis Alberto
Datos Masivos

13. Ingresar al enlace: Case01-InjectionInLogin-String-LoginBypass-


With200Errors.jsp

Para realizer el Bypass a la autenticación en la página se hará un ataque In-band


SQLi en el que se usará un operador OR que modificará el resultado del comando
SELECT de SQL.
Para este caso, se asume que la autenticación se hace contra una tabla con
columnas usuario y contraseña y que la aplicación web compara estas columnas
para permitir el acceso. Por lo tanto solo basta con agregar un operador OR con
una condición que siempre sea verdadera como es el caso de 1=1, para que aunque
la combinación de usuario y contraseña resulte falsa, la plicación permita el
acceso.
Para realizar el ataque se agregará ‘ or 1=1# debdo a que conocemos que el SGBD
es MySQL.

TEMA 3 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Arellano Figueroa
Seguridad en Bases
de Datos y
02 de julio de 2019
Almacenamiento de
Nombre: Luis Alberto
Datos Masivos

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

14. Ingresar al enlace: Case02-InjectionInSearch-String-UnionExploit-


With200Errors.jsp

Para obtener informacion adicional del SGBD, se explotará la consulta SQL


mediante el operador UNION, el cual permitirá combinar dos o más sentencias
SELECT.
En este caso, independientemente de la sentencia SELECT programada en la
aplicación, se agregará en el campo de texto, la siguiente sentencia para combinar
con el operador UNION:

‘ UNION SELECT 1, table_name, ‘LuisArellano’ FROM


information_schema.tables WHERE table_name like ‘%

TEMA 3 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Arellano Figueroa
Seguridad en Bases
de Datos y
02 de julio de 2019
Almacenamiento de
Nombre: Luis Alberto
Datos Masivos

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

15. Ingresar al enlace: Case05-InjectionInSearchOrderBy-String-


BinaryDeliberateRuntimeError-With200Errors.jsp

TEMA 3 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Arellano Figueroa
Seguridad en Bases
de Datos y
02 de julio de 2019
Almacenamiento de
Nombre: Luis Alberto
Datos Masivos

En esta sección se realiza un ataque de SQLi mediante una inyección a una


cláusula Order By.
Para esto se ingresa una sentencia SELECT en lugar del Order By para generar
una excepción en tiempo de ejecución.
De forma predeterminada esta página despliega un campo, el cual tiene una
sentencia SQL que ordena el contenido de una tabla por cualquiera de sus tres
columnas, com es MsgId, Title o Message.

Para explotar esta vulnerabilidad, se sustituye el index de la sentencia Order By


por el código de explotación, en este caso se ingresa la siguiente instrucción:

(SELECT 1 FROM information_schema.’TABLES’ WHERE TABLE_NAME


like’FILES’)

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.

TEMA 3 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Arellano Figueroa
Seguridad en Bases
de Datos y
02 de julio de 2019
Almacenamiento de
Nombre: Luis Alberto
Datos Masivos

TEMA 3 – Actividades © Universidad Internacional de La Rioja. (UNIR)

Das könnte Ihnen auch gefallen