🛡️Dvwa brute foce

Introducción

En el ámbito de la Ciberseguridad, la explotación de aplicaciones web es una actividad clave para comprender las vulnerabilidades más comunes y mejorar la seguridad de los sistemas. Uno de los vectores de ataque más básicos, es el ataque de fuerza bruta, utilizado para adivinar credenciales de acceso mediante la prueba sistemática de combinaciones de nombres de usuario y contraseñas.

En este Write-Up, documentaremos el proceso de explotación de un formulario de login en Damn Vulnerable Web Application (DVWA), una plataforma de prácticas de seguridad diseñada para simular vulnerabilidades reales en un entorno controlado. Exploraremos las distintas configuraciones de seguridad ofrecidas por DVWA (fácil, medio y difícil) y cómo estas afectan la posibilidad de éxito de un ataque de fuerza bruta.

Utilizaremos herramientas ampliamente reconocidas en pruebas de penetración, como Hydra o Potator, para automatizar el ataque, y Burp Suite, para analizar y manipular solicitudes HTTP. Este proceso no solo nos permitirá identificar credenciales de acceso, sino también evaluar la efectividad de las medidas de seguridad implementadas en cada nivel.

El objetivo principal de este Write-Up es proporcionar un análisis práctico y técnico que sea útil tanto para principiantes en ciberseguridad como para profesionales que busquen reforzar sus conocimientos sobre ataques de fuerza bruta y mitigaciones relacionadas.

⚠️ Nota importante: Todos los procedimientos descritos en este documento deben realizarse exclusivamente en entornos controlados y con autorización explícita. El uso no autorizado de estas técnicas en sistemas ajenos es ilegal y contrario a la ética profesional.

🎓 Propósito educativo: Este Write-Up tiene como único propósito el aprendizaje y la investigación en ciberseguridad. Fomento el uso responsable de estas técnicas y te recuerdo que su aplicación en sistemas reales sin consentimiento es una violación de las leyes y principios éticos. Practicar en entornos seguros como DVWA permite adquirir habilidades esenciales sin comprometer la seguridad de terceros.

Nivel de seguridad: Bajo

Para realizar este nivel, utilizaremos Hydra y BurpSuite.

Empezaremos por realizar un intento de inicio de sesión y capturar la petición con BurpSuite.

Gracias a este intento de inicio de sesión, ya tenemos el tipo de petición (En la linea 1, se puede ver que es un GET), y tenemos la cabecera necesaria para el siguiente paso. La cabecera, en este caso empieza y termina en la linea 9. Pero si fuera mas larga empezaría siempre con la palabra Cookie: y terminaría siempre antes de Upgrade-Insecure-Requests: 1.

Con esta información podemos abrir una terminal y empezar a construir nuestro comando con Patator.

⚠️ Por tema de tiempo y comodidad, los diccionarios serán reducidos para no perder tanto tiempo con la fuerza bruta, también actuaremos como si ya supieramos el primer usuario. El comando no es muy diferente, y me ahorrará mucho tiempo, gracias por entender.

patator http_fuzz url=”http://10.0.2.14/vulnerabilities/brute/?username=admin&password=FILE0&Login=Login” method=GET header=’Cookie: PHPSESSID=rl17ubuc2finogvcvoknh1me0u; security=low’ 0=/usr/share/wordlists/wordlistreducida -x ignore:fgrep=’Username and/or password incorrect.’

Ahora procederé a explicar el comando:

  1. patator http_fuzz: http:fuzz es el módulo de Patator que se usa para realizar fuzzing en las solicitudes HTTP. En este caso, se usa para enviar múltiples solicitudes GET al servidor web con diferentes contraseñas.
  2. url=”http://10.0.2.14/vulnerabilities/brute/?username=admin&password=FILE0&Login=Login”: Con URL= se define la URL del recurso al que se envían las solicitudes.
    1. El parámetro username está fijo en admin, porque en esta ocasión sabemos el nombre de usuario. Si no lo supiéramos habría que colocar FILE0.
    2. El parámetro password usa FILE0, que es la variable que indica que el primer diccionario se utilizará para ese parámetro. Si no conociésemos el parámetro username, tendríamos que haber puesto aquí FILE1 para que Potator usara el segundo diccionario.
    3. Login=Login es otro parametro que se envía en la URL.
  3. method=GET: Especifica que las solicitudes se harán con el método HTTP GET.
  4. header=”Cookie: PHPSESSID=rl17ubuc2finogvcvoknh1me0u; security=low: Aquí se le indica el header.
  5. 0=/usr/share/wordlists/wordlistreducida: Aquí se le indica que el diccionario para la variable FILE0 será Wordlistreducida. En caso de que tuvieramos otra variable, podríamos seguir indicando diccionarios con 1=/usr… 2=/usr…, etc….
  6. -x ignore:fgrep=’Username and/or password incorrect.’: Define la lógica de exclusion para las respuestas que no interesan. Indica que se ignorarán las respuestas que contengan ese texto.

Como vemos el programa se ha detenido en la contraseña “password”. Esto nos indica que ha tenido éxito. Vamos a probar la contraseña en la DVWA.

Esto nos indica que la contraseña era correcta. Ahora bien, ¡hay un secreto! Cuando queremos vulnerar una aplicación web, es vital tener SIEMPRE el inspector de código abierto, e inspeccionar todo lo posible. Gracias a eso, podemos encontrar cosas como estas.

¡Un directorio con mas usuarios hackeables! Si vamos a la ruta indicada por ese archivo, nos encontraremos un directorio con los usuarios hackeables.

Vamos a vulnerarlos a todos esta vez. Lo haremos con Hydra, para cambiar un poco.

reamos un diccionario con los usuarios hackeables que hemos encontrado. Y preparamos el comando de Hydra:

hydra -L usuarioshackeables -P wordlistreducida ‘http-get-form://10.0.2.14/vulnerabilities/brute/:username=\^USER\^&password=\^PASS\^&Login=Login:H=Cookie:PHPSESSID=rl17ubuc2finogvcvoknh1me0u; security=low:F=Username and/or password incorrect’

Expliquemos el comando:

hydra: Es el nombre de la herramienta que estamos utilizando para realizar el ataque de fuerza bruta.

-L usuarioshackeables:

  • Esta opción indica el archivo que contiene la lista de usuarios que Hydra probará.
  • usuarioshackeables es el archivo donde se encuentran los nombres de usuario a probar en el login.

-P wordlistreducida:

  • Esta opción le dice a Hydra que utilice el archivo de contraseñas wordlistreducida como diccionario de contraseñas.
  • Este archivo contiene todas las contraseñas que Hydra intentará junto con los usuarios del archivo anterior.

‘http-get-form://10.0.2.14/vulnerabilities/brute/’:

  • Aquí se define el tipo de solicitud HTTP que se va a hacer, en este caso http-get-form, que significa que la solicitud será un GET.
  • http-get-form:// indica que usaremos un formulario GET para enviar las credenciales.
  • 10.0.2.14/vulnerabilities/brute/ es la URL del formulario de login en DVWA, donde se realizará el ataque de fuerza bruta.

username=\^USER\^&password=\^PASS\^&Login=Login:

  • Esta parte de la URL define los parámetros del formulario de login:
  • username=\^USER\^: Aquí \^USER\^ es el marcador que Hydra reemplazará por los valores del archivo de usuarios que le proporcionamos.
  • password=\^PASS\^: Aquí \^PASS\^ es el marcador que Hydra reemplazará por los valores del archivo de contraseñas que le proporcionamos.
  • Login=Login: Este es un valor fijo que corresponde al nombre del botón de envío del formulario (en este caso, el nombre del botón se llama “Login”).

H=Cookie:PHPSESSID=rl17ubuc2finogvcvoknh1me0u; security=low:

  • H se usa para agregar un encabezado HTTP. En este caso, estamos agregando una cookie que es necesaria para la autenticación de la sesión en DVWA.
  • PHPSESSID=rl17ubuc2finogvcvoknh1me0u: Es el valor del PHPSESSID que mantiene la sesión activa, necesario para que no se pierda el estado de la sesión mientras se prueban las credenciales.
  • security=low: Indica que el nivel de seguridad de DVWA está configurado como bajo (low), lo cual afecta el comportamiento de la aplicación, haciendo que sea más vulnerable a ataques.

F=Username and/or password incorrect:

  • F se usa para indicar la cadena de texto que se devuelve cuando el login falla. En este caso, es el mensaje de error que DVWA muestra cuando las credenciales son incorrectas.
  • Username and/or password incorrect es el mensaje que aparece cuando el usuario o la contraseña son incorrectos. Hydra utiliza este mensaje para saber si un intento ha fallado, y si es así, continuará probando las siguientes combinaciones de usuario y contraseña.

Como podemos comprobar, nos ha encontrado la contraseña de los 5 usuarios hackeables.

Scroll al inicio