Universidad Técnica Particular de Loja
Evaluación de seguridad en sistemas
Caso de estudio: Vulnerabilidades de inyección SQL
Estudiante:
Evelyn Alejandra Morales Remache
Profesor:
Wayner Xavier Bustamante Granda
25 de enero del 2025
Contenido
Herramientas para revisión de vulnerabilidades de inyección SQL........................................ 2
Seleccionar una herramienta.................................................................................................. 4
Ejecutar sobre un sitio seleccionado ...................................................................................... 5
Configuración del entorno para realizar el caso práctico. .................................................. 6
Inyección SQL .................................................................................................................... 11
Interpretar el informe de resultados. ................................................................................... 14
Proponer la solución a las vulnerabilidades encontradas .................................................... 15
Conclusiones: ........................................................................................................................ 16
Referencias: .......................................................................................................................... 17
Jesús mi capitán
La inyección SQL es una de las vulnerabilidades más comunes y peligrosas en
aplicaciones web, clasificada como crítica en el proyecto OWASP Top 10 para abordarla
existen diversas herramientas diseñadas específicamente para su identificación y
mitigación de riesgos.
Herramientas para revisión de vulnerabilidades de inyección SQL
SQLmap
SQLmap es una herramienta de código abierto a utilizada para la exploración
vulnerabilidades de inyección SQL. Su capacidad para automatizar procesos y manejar
múltiples bases de datos como MySQL, PostgreSQL, Oracle y SQL Server la convierte en
una opción robusta para profesionales de ciberseguridad.
Ventajas:
• Es sencilla de usar.
• Ofrece opciones avanzadas para pruebas de inyección, como extracción de datos y
creación de shells.
Limitaciones:
• Carece de una interfaz gráfica intuitiva lo que implica que su curva de aprendizaje
sea
Burp Suite
Esta herramienta es ampliamente utilizada en pruebas de penetración y análisis de
seguridad web. Aunque su versión gratuita tiene ciertas limitaciones la versión profesional
incluye un escáner avanzado que detecta inyecciones SQL entre otras vulnerabilidades
comunes.
Ventajas:
• Interfaz amigable con opciones de configuración.
• Ofrece análisis dinámicos y estáticos.
Limitaciones:
Jesús mi capitán
• Es una herramienta comercial con un costo alto para acceder a la version
profesional.
OWASP ZAP (Zed Attack Proxy)
ZAP es una herramienta gratuita y de código abierto desarrollada por OWASP, es ideal para
principiantes en seguridad debido a su interfaz intuitiva con capacidades de escaneo
automatizado.
Ventajas:
• Gratuita y de código abierto.
• Ofrece integración con otras herramientas de seguridad.
Limitaciones:
• El escaneo puede ser más lento en comparación con herramientas comerciales.
Acunetix
Acunetix es un escáner web comercial que automatiza la detección de múltiples
vulnerabilidades, incluyendo inyecciones SQL. Su análisis integral lo hace ideal para
entornos empresariales.
Ventajas:
• Informes detallados con recomendaciones.
• Escaneo rápido que es preciso.
Limitaciones:
• Costos elevados que pueden ser prohibitivos para pequeñas empresas.
Nessus
Nessus es un escáner de vulnerabilidades generalista que incluye inyecciones SQL entre su
amplio rango de pruebas. Es conocido por su facilidad de integración con herramientas
corporativas.
Ventajas:
• Cobertura amplia de vulnerabilidades.
Jesús mi capitán
• Permite realizar informes personalizables
Limitaciones:
• Orientado a entornos empresariales más que a usuarios individuales.
Tabla 1
Herramientas de revisión de vulnerabilidades de Inyección SQL
Criterio SQLmap Burp Suite OWASP ZAP Acunetix Nessus
Costo Gratuito Comercial Gratuito Comercial Comercial
Facilidad de Requiere Interfaz Intuitivo y Intuitivo con Requiere
uso conocimientos amigable y adecuado soporte conocimientos
técnicos fácil de para empresarial previos
configurar principiantes
Capacidades Alta Escáner Limitado en Detección Amplio
avanzadas personalización, dinámico con comparación integral y alcance, pero
extracción de detección con rápida generalista
datos avanzada comerciales
Velocidad Moderada Alta Moderada Alta Alta
de análisis
Informes Técnicos y Detallados y Básicos Informes Informes
generados detallados adaptables empresariales personalizados
detallados
Reputación Muy alta en la Amplia Popular para Muy utilizado Reconocido en
comunidad aceptación principiantes en entornos empresas
técnica entre empresariales grandes
profesionales
Seleccionar una herramienta
Herramienta Seleccionada: SQLmap
SQLmap es una herramienta gratuita, lo que la convierte en una opción accesible para
proyectos educativos o con recursos limitados. Su principal fortaleza radica en sus
Jesús mi capitán
capacidades avanzadas puesto que permite un alto nivel de personalización con la
automatización de pruebas complejas de inyección SQL incluyendo la extracción de datos
sensibles. Además, SQLmap cuenta con una sólida reputación dentro de la comunidad de
ciberseguridad siendo ampliamente reconocido como una herramienta confiable para la
identificación de vulnerabilidades específicas. Aunque su uso requiere ciertos
conocimientos técnicos, ofrece un control detallado que no se encuentra en otras
herramientas gratuitas.
Ejecutar sobre un sitio seleccionado
Para realizar la exploración de vulnerabilidades de inyección SQL se instaló la
herramienta SQLmap.
Figura 1
Herramientas de revisión de vulnerabilidades de Inyección SQL
Luego se verifico, que la herramienta estuviere disponible al igual que la version de
Pyton que previamente ya se lo había instalado que es la version 3.13.1.
Jesús mi capitán
Figura 2
Verificación de Sqlmaop
Configuración del entorno para realizar el caso práctico.
Par la práctica es necesario instalar XAMPP el cual ya se lo tenía previamente
instalado por lo cual se procedió a iniciar los servicios de Apache y MySQL desde el panel
de control de XAMPP.
Figura 3
Herramientas Xampp
Jesús mi capitán
Se descargó desde [Link] , DVWA (Damn Vulnerable
Web Application) es una aplicación web deliberadamente vulnerable, creada con el
objetivo de permitir a los profesionales de la seguridad informática e investigadores de
ciberseguridad, practicar y aprender sobre diferentes vulnerabilidades web.
Figura 4
Herramientas Xampp
A continuación, se extrajeron los archivos en la carpeta htdocs de XAMPP para
posteriormente, configurar DVWA.
Jesús mi capitán
Figura 5
Carpeta htdocs de XAMPP
Posteriormente se confiro el archivo de coneccion a la base de datos de DVWA
“[Link]” Ubicado en la carpeta DVWA – Master, donde se colocaron el suario y
contraceña del aceso a la base de datos de XAMPP y se configuro el nivel de seguridad de
la aplicación a “low” como se seobsevan en la Figura 6 en las lineas 20,21 y 33.
Figura 6
Archivo [Link]
Jesús mi capitán
Se procedió a crear la base de datos DVWA en el entorno MySQL.
Figura 7
Crear base de datos
Luego se ingresa al enlace de DVWA para ejecutar la aplicación, donde se ingresa con el
usuario y contraseña por defecto.
Figura 8
Aplicación DVWA
Jesús mi capitán
Dentro de la aplicación se ejecutó la instalación en la base de datos creada dvwa.
Figura 9
Configuración DVWA
Luego ingresamos a la opción “SQL injection” para ejecutar las pruebas de inyección SQL.
Para lo cual en la casilla de user ID ingresamos un id existente [3]
Figura 10
Ingreso de un id
Jesús mi capitán
Luego para realizar la conexión es necesario obtener la cookie de sección para lo cual se
abrió DevTols con F12 donde en la pestaña Aplicación se ingresó a la opción de cookies y
se copió el valor.
Figura 11
Copiar valor de la Cookie
Inyección SQL
Con SQLmap se realizó una prueba de inyección SQL en la URL de la aplicación web de
DVWA (Damn Vulnerable Web Application), específicamente en la página que contiene un
parámetro vulnerable en la URL (id=3). Utilizando la opción --batch, SQLmap automatizó
todo el proceso sin pedir confirmaciones, permitiendo una ejecución fluida del ataque.
Además, se incluyó la cookie PHPSESSID para mantener la sesión activa durante el
proceso, lo que fue necesario para interactuar con la aplicación web de manera
autenticada. Al utilizar el parámetro --dbs, SQLmap enumeró todas las bases de datos
disponibles en el sistema de gestión de bases de datos (DBMS) en el servidor web, lo que
permitió identificar las bases de datos y potencialmente explorar más detalles sobre la
estructura del sistema backend.
Jesús mi capitán
python [Link] -u "[Link]
master/vulnerabilities/sqli/?id=3&Submit=Submit" --batch --
cookie="PHPSESSID=tdnuakt4l8ka1p9bjkejd03ub0; security=low" –dbs
Figura 12
Prueba de inyección SQL
Luego se con el parámetro --tables, SQLmap solicitó la enumeración de las tablas dentro
de la base de datos seleccionada -D dvwa. Este comando ayudó a identificar las tablas
disponibles en la base de datos, lo que permitió una exploración más detallada de la
estructura interna de la aplicación web y sus posibles vulnerabilidades.
python [Link] -u "[Link]
master/vulnerabilities/sqli/?id=3&Submit=Submit" --batch --
cookie="PHPSESSID=tdnuakt4l8ka1p9bjkejd03ub0; security=low" \ -D dvwa -tables
Jesús mi capitán
Figura 13
Prueba de inyección SQL con nombres de las tablas
Posteriormente con la opción -T users indicó que se deseaba interactuar específicamente
con la tabla users dentro de esa base de datos dvwa. Finalmente, al agregar --dump,
SQLmap extrajo y mostró todo el contenido de la tabla users, revelando información
sensible como los registros de usuarios, contraseñas y otros datos almacenados en esa
tabla. Este comando fue utilizado para obtener información sensible a través de la
explotación de la vulnerabilidad de inyección SQL en la aplicación.
python [Link] -u "[Link]
master/vulnerabilities/sqli/?id=3&Submit=Submit" --batch --
cookie="PHPSESSID=tdnuakt4l8ka1p9bjkejd03ub0; security=low"-D dvwa -T users --
dump
Jesús mi capitán
Figura 14
Extracción de información
Interpretar el informe de resultados.
En este caso, el comando de SQLmap permitió realizar una inyección SQL en la aplicación
DVWA, específicamente en la URL proporcionada con un parámetro vulnerable (id=3). El
proceso consistió en las siguientes etapas:
1. Conexión a la base de datos: SQLmap identificó que la base de datos backend era
MySQL con una versión que pertenece a la bifurcación de MariaDB fork y que la
aplicación estaba utilizando PHP 7.4.30 y Apache 2.4.54.
2. Detección de vulnerabilidad: SQLmap detectó que el parámetro ID era vulnerable a
diferentes tipos de inyección SQL, como boolean-based blind, error-based, time-
based blind, y UNION query.
3. Enumeración de la base de datos y tablas: Posteriormente, SQLmap solicitó el
listado de las bases de datos disponibles y enumeró las tablas de la base de datos
dvwa. Una vez localizadas las tablas, se identificó la tabla users.
Jesús mi capitán
4. Extracción de datos: SQLmap extrajo los datos de la tabla users, que contenía
información sensible como el nombre de usuario la contraseña en formato hash
MD5, el avatar, el nombre y apellido del usuario la última fecha de inicio de sesión
y la cantidad de intentos fallidos.
5. Cracking de contraseñas: Luego, SQLmap intentó hacer un ataque de diccionario a
las contraseñas hash, utilizando los hashes obtenidos para obtener las contraseñas
en texto claro.
En resumen, este ataque permitió la extracción de la tabla users de la base de datos dvwa
y la obtención de contraseñas con todos los demás datos del sistema, lo que representa un
grave riesgo para la seguridad de la aplicación.
Proponer la solución a las vulnerabilidades encontradas
Para abordar las vulnerabilidades encontradas mediante la inyección SQL en la aplicación
DVWA, se pueden implementar varias soluciones enfocadas en asegurar la aplicación y
prevenir ataques similares: Uso de consultas preparadas: Las consultas preparadas son
una de las mejores maneras de evitar la inyección SQL. En lugar de construir consultas SQL
dinámicamente con datos proporcionados por el usuario, las consultas preparadas
permiten al servidor de base de datos reconocer y tratar los parámetros como datos, no
como parte de la consulta SQL. Esto previene que el código malicioso se ejecute en la base
de datos.
Uso de ORM Object Relational Mapping: Los frameworks de desarrollo modernos
suelen incluir herramientas ORM que generan consultas SQL de manera segura y
automatizada, reduciendo el riesgo de inyección SQL. Como lo son Doctrine PHP,
Hibernate Java, y Entity Framework “.NET”. Validación y saneamiento de entrada: Siempre
se deben validar y sanear todas las entradas del usuario para asegurarse de que los datos
no contengan caracteres maliciosos. Esto incluye: validar que los datos sean del tipo
esperado como lo son números, correos electrónicos, cadenas de texto. Escapar o eliminar
caracteres especiales, como comillas simples (') o dobles ("), que pueden usarse para
modificar las consultas SQL.
Jesús mi capitán
Deshabilitar la visualización de errores SQL: Evitar que la base de datos muestre
errores SQL directamente en la página web. Esto podría dar pistas a los atacantes sobre la
estructura interna de la base de datos. En su lugar, se deben registrar los errores en un
archivo de log seguro para su posterior aná[Link]ón de seguridad a nivel de
base de datos Uso de funciones hash seguras: Las contraseñas deben ser almacenadas de
manera segura utilizando funciones de hash robustas como bcrypt, argon2, o scrypt, que
protejan contra ataques de fuerza bruta. El uso de MD5 como se observó en los resultados
de SQLmap es inseguro y debe evitarse. Salting de contraseñas: Además de utilizar un
buen algoritmo de hash, se debe agregar un "sal" único y aleatorio a cada contraseña
antes de ser hashada para evitar ataques de diccionario y de tablas arco iris.
Seguridad en la sesión: El uso de una cookie de sesión PHPSESSID debe ser
manejado adecuadamente las cookies de sesión deben ser seguras, configurando las
banderas HttpOnly y Secure en la cookie. Usar sesiones con identificación única y
regenerar el ID de sesión después de un inicio de sesión exitoso para prevenir ataques de
fijación de sesión. Auditoría y pruebas de seguridad continuas: Implementar un proceso
continuo de auditoría de seguridad, que incluya pruebas regulares de penetración y el uso
de herramientas automatizadas de escaneo de vulnerabilidades. Esto ayudará a identificar
y corregir problemas de seguridad antes de que sean explotados.
Conclusiones:
En esta práctica, se utilizó SQLmap para detectar y explotar vulnerabilidades de
inyección SQL en una aplicación web de prueba DVWA. Se identificaron varios puntos de
inyección, como inyección basada en errores, inyección basada en tiempo y consultas
UNION. A partir de esto se extrajo información sensible de la base de datos,
específicamente de la tabla de usuarios incluyendo nombres de usuario y contraseñas
hash.
Para solucionar estas vulnerabilidades se recomendó la implementación de
consultas preparadas, la validación de las entradas del usuario y el uso de contraseñas más
seguras. También se sugirió la implementación de prácticas de seguridad como el uso de
un firewall de aplicaciones web y la actualización continua de los sistemas. Esto ayuda a
minimizar los riesgos de ataques de inyección SQL en aplicaciones reales.
Jesús mi capitán
Referencias:
Acunetix. (2023). Acunetix: Web vulnerability scanner. [Link]
Luque Tovar, A. L., & Bravo Builes, C. B. Diseño e implementación de un sistema de
protección contra el ataque de inyección SQL, en un servidor vulnerable utilizando
herramientas Open Access. [Link]
0545-4905-a631-c7f1d036e6c1
OWASP. (2023). OWASP ZAP: Zed Attack Proxy. [Link]
PortSwigger. (2022). Burp Suite: Web vulnerability scanner. [Link]
Tenable. (2022). Nessus: Vulnerability scanner. [Link]
Jesús mi capitán