¡Buenas a todos!
Hoy hablaremos de una de las herramientas más utilizadas y potentes dentro del propio Burp Suite para realizar auditorías Webs.
Burp Suite es una herramienta para probar la seguridad de aplicaciones web. Intercepta, examina y modifica solicitudes. Permite visualizar como se forma una petición, además de detectar vulnerabilidades comunes como inyecciones SQL y Cross-Site Scripting. Proporciona funcionalidades que permiten automatizar tareas comunes y personalizar flujos de trabajo. Es una herramienta versátil y poderosa.
El Intruder es un módulo interno de Burp Suite, este nos permite automatizar solicitudes, lo cual es muy útil a la hora de realizar fuzzing o tareas de fuerza bruta.
Nos permite tomar una solicitud (generalmente capturada en el Proxy antes de pasarla a Intruder) y usarla como plantilla para enviar muchas más solicitudes con valores ligeramente alterados de forma automática. Por ejemplo, al capturar una solicitud que contiene un intento de inicio de sesión, podríamos configurar Intruder para intercambiar los campos de nombre de usuario y contraseña por valores de una lista de palabras, lo que efectivamente nos permite forzar el formulario de inicio de sesión. De manera similar, podríamos pasar una lista de palabras para hacer fuzzing sobre subdirectorios, endpoints o hosts virtuales. Esta funcionalidad es muy similar a la que ofrecen herramientas como Wfuzz o Ffuf.
Los usos más comunes que se le dan al intruder son:
- Fuzzing directorios o parámetros: Buscando Identificar vulnerabilidades basadas en entradas.
- Enumerar subdominios: Descubrir o aumentar una superficie de ataque adicional.
- Brute-forcing logins: Automatizar combinaciones de nombre de usuario y contraseña.
Conociendo ahora sus principales funciones veremos cómo funciona con un ejemplo.
El primer paso será interceptar una petición a través del proxy que ofrece Burp Suite, para ello abriremos el browser que nos ofrece Burp Suite y activaremos la intercepción.
Para la prueba usaremos un laboratorio de portswigger que nos permitiría practicar ataques con el Intruder. En este caso nos iremos a la página de login donde podemos realizar ataque de fuerza bruta sobre el login.
Con el proxy activado, pincharemos sobre log in para interceptar la petición de la página prueba que hemos utilizado.
Una vez capturada la petición la mandamos al Intruder donde realizaremos el ataque.
Desde el Intruder podemos elegir qué tipo de ataque queremos, pudiendo diferenciar 4 distintos:
1. Sniper:
Intruder tomará cada payload que le pasemos (de una lista de payloads) y la colocará en cada posición definida por turno. Es decir, pasará cada payload de la lista en cada parámetro por turno.
Ejemplo: si tenemos una petición que tiene 2 parámetros username y password y tenemos una lista de palabras que serían: burp, suite e intruder. Las solicitudes serian así:
2. Battering Ram:
Toma un conjunto de payloads (por ejemplo, una lista de palabras). Donde se coloca la misma carga útil en cada posición (parámetro).
Ejemplo: si tenemos una petición que tiene 2 parámetros username y password y tenemos una lista de palabras que serían: burp, suite e intruder. Las solicitudes serian así:
3. Pitchfork:
Pitchfork usa un conjunto de payloads por posición y los recorre todos a la vez. Idealmente, nuestros conjuntos de payloads deberían tener la misma longitud cuando se trabaja en Pitchfork, ya que Intruder dejará de probar tan pronto como se complete una de las listas. Por ejemplo, si tenemos dos listas, una con 100 líneas y otra con 90 líneas, Intruder solo hará 90 solicitudes y los diez elementos finales de la primera lista no se probarán.
Ejemplo: si tenemos una petición que tiene 2 parámetros username y password y tenemos dos listas de palabras que sería la primera lista de nombres:
Y la segunda lista de contraseñas:
Las solicitudes serian así:
4. Cluster Bomb:
Cluster bomb nos permite elegir múltiples conjuntos de payloads: uno por posición, sin embargo, mientras que Pitchfork itera a través de cada conjunto de payloads simultáneamente, Cluster bomb itera a través de cada conjunto de payloads individualmente, asegurándose de que se prueben todas las combinaciones posibles de payloads.
Ejemplo: si tenemos una petición que tiene 2 parámetros username y password y tenemos dos listas de palabras que sería la primera lista de nombres:
Y la segunda lista de contraseñas:
Las solicitudes serian así:
Una vez conocidos los tipos de ataques disponibles seguimos con el ejemplo práctico. En nuestro caso concreto elegiremos el de tipo Sniper ya que conseguiremos el usuario y contraseña por separado. A continuación, añadiremos la posición del payload en el campo “username”
Una vez seleccionada la posición vamos a añadir el payload que usaremos en el ataque. En este caso hemos usado una lista de nombre comunes a modo de diccionario.
Con todo listo podemos iniciar el ataque, que hará peticiones a la web con todos los nombres de usuarios proporcionados.
Podemos observar como con el payload alerts el tamaño de la respuesta cambia, esto es debido a que el mensaje de error es distinto, donde nos dice que la contraseña es incorrecta. De aquí obtenemos que existe un usuario llamado alerts.
Ahora usaremos el mismo método, pero en el campo password para encontrar la contraseña del usuario identificado
Una vez cambiado el usuario con el que se intenta iniciar sesión repetimos el mismo ataque con la contraseña cambiando la lista a una con valores típicos de contraseñas débiles.
En este caso podemos detectar el cambio en la respuesta ya que se trata de una redirección, que nos indica que posiblemente se ha validado.
Probamos a ver si estamos en lo correcto en la página de prueba:
Y con las credenciales obtenidas podemos entrar quedando además resuelto el laboratorio.
De igual manera que he realizado esta prueba con un laboratorio de portswinger hay multitud de páginas y máquinas que pueden servir para practicar con el Intruder. Algunas de ellas son:
Hasta aquí esta introducción al intruder, como podéis suponer tiene multitud de usos y se puede aplicar de formas muy distintas según las necesidades de la auditoria.
Esperamos que os haya gustado y os vemos en la próxima entrega de FluProject.