UNIVERSIDAD NACIONAL AGRARIA DE LA SELVA
FACULTAD DE INGENIERÍA EN INFORMÁTICA Y SISTEMAS
Escuela profesional de ingeniería en informática y sistemas
EXTRACCION DE CONTRASEÑAS DE USUARIOS DE LA BASE DE
DATOS DVWA MEDIANTE ATAQUES DE SQLi, XSS Y FUERZA BRUTA
DESDE KALI LINUX
ALUMNO: Chumbe Córdova, Salvador
DOCENTE: Einstein Arnold Ortiz Morales
CURSO: Seguridad Informática I
Tingo María
2024
Tabla de contenido
INTRODUCCION ............................................................................................................ 3
MARCO TEORICO .......................................................................................................... 4
Inyección SQL (SQLi) .................................................................................................. 4
Tipos de Inyección SQL............................................................................................... 4
Impacto y Mitigación de SQLi ...................................................................................... 4
Cross-Site Scripting (XSS) ........................................................................................... 4
Tipos de XSS .............................................................................................................. 4
Impacto y Mitigación XSS ............................................................................................ 5
Fuerza Bruta............................................................................................................... 5
Tipos de Ataques de Fuerza Bruta ............................................................................... 5
Kali Linux ................................................................................................................... 6
Damn Vulnerable Web Application (DVWA) ................................................................. 6
DESARROLLO DEL LABORATORIO .................................................................................. 7
RESULTADOS............................................................................................................... 21
CONCLUSIONES ......................................................................................................... 23
INTRODUCCION
En la era digital, la seguridad de la información se ha convertido en una prioridad
crucial para las organizaciones y usuarios. Las bases de datos, que almacenan
información crítica, son un objetivo atractivo para los atacantes. La seguridad de
las aplicaciones web, por tanto, es un aspecto fundamental que debe ser
robustamente defendido para prevenir accesos no autorizados y la extracción de
datos sensibles.
Este informe aborda la vulnerabilidad de la base de datos DVWA (Damn
Vulnerable Web Application), una aplicación web diseñada para ser
deliberadamente insegura, proporcionando un entorno controlado para probar
herramientas y técnicas de penetración. Utilizando Kali Linux, una distribución
de Linux especializada en pruebas de penetración y análisis de seguridad, se
explorarán tres métodos de ataque comúnmente empleados por los
cibercriminales para extraer contraseñas de usuarios: inyección SQL (SQLi),
Cross-Site Scripting (XSS) y fuerza bruta. A través de este análisis, se pretende
resaltar la importancia de adoptar medidas de seguridad robustas y concientizar
sobre los riesgos asociados con las vulnerabilidades en aplicaciones web.
MARCO TEORICO
Inyección SQL (SQLi)
La inyección SQL es una técnica de ataque en la que un atacante inserta o
"inyecta" código SQL malicioso en las entradas de una aplicación web, con el
objetivo de manipular las consultas SQL que esta realiza a su base de datos.
Esto puede permitir al atacante ejecutar comandos no autorizados, obtener
información confidencial, modificar datos o incluso eliminar tablas completas.
Tipos de Inyección SQL
Inyección SQL Basada en Errores: Explota mensajes de error proporcionados
por el servidor para obtener información sobre la estructura de la base de datos.
Inyección SQL Ciega: No proporciona mensajes de error, por lo que los atacantes
deben inferir la información a través de respuestas booleanas (verdadero/falso).
Inyección SQL de Unión: Utiliza el comando SQL UNION para combinar los
resultados de dos o más consultas SELECT, permitiendo extraer datos
adicionales.
Impacto y Mitigación de SQLi
El impacto de una inyección SQL exitosa puede ser devastador, comprometiendo
la integridad y confidencialidad de los datos. Las mitigaciones incluyen el uso de
consultas preparadas, procedimientos almacenados, y la validación y
saneamiento adecuados de las entradas de usuario.
Cross-Site Scripting (XSS)
Es un tipo de vulnerabilidad que permite a los atacantes inyectar scripts
maliciosos en páginas web vistas por otros usuarios. Cuando un usuario visita
una página comprometida, el script se ejecuta en su navegador, permitiendo al
atacante robar información confidencial, como cookies de sesión, y realizar
acciones en nombre del usuario.
Tipos de XSS
XSS Reflejado: El script malicioso se incluye en la solicitud HTTP y se refleja en
la respuesta inmediata de la aplicación web.
XSS Persistente: El script malicioso se almacena en el servidor (por ejemplo, en
una base de datos) y se ejecuta cuando un usuario accede a la página afectada.
XSS Basado en DOM: La manipulación del Document Object Model (DOM)
permite que el script malicioso se ejecute en el navegador del usuario sin
interacción con el servidor.
Impacto y Mitigación XSS
Los ataques XSS pueden resultar en el robo de datos de sesión, la ejecución de
acciones maliciosas en nombre del usuario y el compromiso de la integridad de
las aplicaciones web. Las medidas de mitigación incluyen la validación y escape
de entradas y salidas, el uso de Content Security Policy (CSP) y la configuración
adecuada de cabeceras HTTP.
Fuerza Bruta
El ataque de fuerza bruta es una técnica que consiste en probar todas las
combinaciones posibles de contraseñas hasta encontrar la correcta. Este
método es intensivo en recursos y tiempo, pero puede ser efectivo si las
contraseñas son cortas o débiles.
Tipos de Ataques de Fuerza Bruta
Ataque de Diccionario: Utiliza una lista predefinida de contraseñas comunes o
probables.
Ataque Exhaustivo: Prueba todas las combinaciones posibles de caracteres
hasta encontrar la contraseña correcta.
Ataque de Fuerza Bruta Distribuido: Utiliza múltiples máquinas o servicios para
distribuir la carga del ataque, acelerando el proceso.
Impacto y Mitigación de Ataques de Fuerza Bruta
El éxito de un ataque de fuerza bruta depende de la complejidad y longitud de
las contraseñas utilizadas. Las medidas de mitigación incluyen la
implementación de políticas de contraseñas robustas, la utilización de captchas,
el bloqueo de cuentas después de múltiples intentos fallidos y la implementación
de mecanismos de autenticación multifactor.
Kali Linux
Es una distribución de Linux basada en Debian, diseñada específicamente para
pruebas de penetración y auditorías de seguridad. Incluye una amplia gama de
herramientas preinstaladas para realizar ataques de SQLi, XSS y fuerza bruta,
entre otros.
Damn Vulnerable Web Application (DVWA)
DVWA es una aplicación web intencionalmente vulnerable, utilizada para
practicar y aprender sobre técnicas de penetración en un entorno seguro.
Proporciona distintos niveles de dificultad para cada vulnerabilidad, permitiendo
a los usuarios mejorar sus habilidades de manera progresiva.
DESARROLLO DEL LABORATORIO
Para llevar a cabo este laboratorio de extracción de contraseñas de usuarios de
la base de datos “DVWA” en un ambiente controlado es necesario clonar el
repositorio desde github en el directorio “/var/www/html” de Kali Linux. Para ello
se debe de tener instalado git en el sistema operativo.
Imagen 1. Instalación de git
Luego de instalar git, se procedió a clonar el repositorio DVWA desde github para
realizar los ataques controlados, para ello, fue necesario acceder a la terminal
como usuario root para tener todos los permisos y privilegios al ejecutar los
comandos.
Imagen 2. Clonación del repositorio DVWA
Posteriormente se renombró la carpeta clonada de mayúsculas a minúsculas
para agilizar el acceso en la consola.
Imagen 3. Renombramiento de directorio
A continuación, se le dieron permisos completos a la carpeta y sus archivos y se
hizo una copia del archivo [Link] para trabajar sobre él.
Imagen 4. Permisos y copia de respaldo
Para continuar con el propósito, fue necesario iniciar los servicios mysql, apache
y mariadb para poder interactuar con la base de datos, como se evidencia en las
figuras 5, 6 y 7.
Imagen 5. Inicio del servicio mysql
Imagen 6. Inicio del servicio apache
Imagen 7. Inicio del servicio mariadb
Luego de iniciar los servicios, se procedió a modificar el usuario y clave de la
base de datos dvwa en el archivo [Link] para fines didácticos.
Imagen 8. Cambio de credenciales
Para continuar se accedió al directorio “/etc/php/8.2/apache2” para modificar
algunas propiedades del archivo [Link] tal como se muestra en la imagen 10.
Imagen 9. Directorio apache
Imagen 10. Propiedades activadas
Se procedió a crear la base de datos siguiendo las especificaciones de la guía
práctica como también el usuario con las mismas credenciales que modificaron
anteriormente, se conceden los privilegios y se observan las bases de datos
que existen.
Imagen 11. Creación de base de datos dvwa
En este punto, se debe acceder a la base de datos creada con el usuario que
indicamos en el paso anterior.
Imagen 12. Acceso a la base de datos
Como los servicios están activos, ahora se puede acceder al localhost/dvwa para
ingresar a configurar la aplicación por la interfaz de usuario con las credenciales
especificadas.
Imagen 13. Interfaz de ingreso a la aplicación
Se observa, luego de ingresar, las configuraciones activas y las credenciales
del usuario de la base de datos.
Imagen 14. Configuración de la base de datos
Imagen 15. Instrucciones de aplicación vulnerable
Se cambio la seguridad a nivel bajo para realizar este ejercicio como se
muestra en la imagen.
Imagen 16. Cambio de nivel de seguridad de la aplicación
También se ingresó a analizar el código fuente en php que contiene las
sentencias sql que usaremos para hacer el ataque SQLi.
Imagen 17. Código fuente de la vulnerabilidad
Se insertó el código para obtener los datos de usuarios registrados, en este caso
se ingresó: 1’ or ‘1’=’1, lo que producirá que la sentencia sql devuelva los datos
de los usuarios cuando su id sea 1 o cuando 1 sea igual a 1, lo cual siempre se
cumplirá, y por ende, retornará la lista de todos los usuarios. De manera similar,
para obtener los nombres de usuarios y las contraseñas en forma de hashes se
insertó la siguiente instrucción: UNION SELECT user, password FROM users.
Imagen 18. Ataque sql para obtener usuarios
Imagen 19. Obtención de hashes de contraseñas
La herramienta usada para realizar el analisis y descifrado de los hashes será
hashcat, un software para la recuperación de contraseñas mediante ataques de
fuerza bruta y otros métodos de cracking.
Imagen 20. Instalación de hashcat
A continuación se ingresa el comando “hashcat -m 0 [Link]” donde 0
representa el tipo de algoritmo a descifrar, MD5 en este caso, y el archivo
[Link] contiene el hash que se intenta descifrar. Pero, en este caso, el
almacenamiento de la maquina virtual no es suficiente para llevar a cabo el
ataque, debido a ello se uso una herramienta online de descifrado.
Imagen 21. Descifrado de contraseñas con hashcat
Se utilizo el sitio online [Link] para realizar el descifrado que seria la ultima
parte del ataque. A continuación se evidencian las contraseñas obtenidas luego
del descifrado.
Imagen 22. Contraseña descifrada 1: password
Imagen 23. Contraseña descifrada 2: abc123
Imagen 24. Contraseña descifrada 3: charley
Imagen 25. Contraseña descifrada 4: letmein
Imagen 26. Contraseña descifrada 5: password
RESULTADOS
Se creo la base de datos dvwa.
Se creo el usuario “chumbe” con la contraseña “pass
Se inserto código sql para estraer datos de los usuario y sus contraseñas en
forma de hashes como se muestra:
ID: ' UNION SELECT user, password FROM users#
First name: admin
Surname: 5f4dcc3b5aa765d61d8327deb882cf99
ID: ' UNION SELECT user, password FROM users#
First name: gordonb
Surname: e99a18c428cb38d5f260853678922e03
ID: ' UNION SELECT user, password FROM users#
First name: 1337
Surname: 8d3533d75ae2c3966d7e0d4fcc69216b
ID: ' UNION SELECT user, password FROM users#
First name: pablo
Surname: 0d107d09f5bbe40cade3de5c71e9e9b7
ID: ' UNION SELECT user, password FROM users#
First name: smithy
Surname: 5f4dcc3b5aa765d61d8327deb882cf99
Las contraseñas obtenidas son:
Usuario Hash de contraseña Contraseña descifrada
admin 5f4dcc3b5aa765d61d8327deb882cf99 password
gordonb e99a18c428cb38d5f260853678922e03 abc123
1337 8d3533d75ae2c3966d7e0d4fcc69216b charley
pablo 0d107d09f5bbe40cade3de5c71e9e9b7 letmein
smithy 5f4dcc3b5aa765d61d8327deb882cf99 password
CONCLUSIONES
La práctica demostró que las aplicaciones web pueden ser vulnerables a ataques
de inyección SQL si no se implementan adecuadamente medidas de seguridad.
La DVWA, diseñada para ser insegura, permitió observar cómo una simple
vulnerabilidad puede ser explotada para acceder a información confidencial,
como contraseñas de usuarios.
Uno de los puntos clave observados es la importancia crítica de validar y sanear
todas las entradas de usuario. La falta de validación y el uso de consultas SQL
dinámicas sin protección pueden llevar a vulnerabilidades explotables. Las
técnicas como consultas preparadas y la utilización de ORM (Object-Relational
Mapping) pueden mitigar estos riesgos al prevenir la inyección de código
malicioso.
El uso de Kali Linux y sus herramientas de auditoría y penetración mostró su
eficacia en la identificación y explotación de vulnerabilidades, ya que ayuda a
descubrir puntos débiles antes de que puedan ser explotados por atacantes
malintencionados.