Manual de Burp Suite Community Edition

Capítulo 8 · Intruder: automatizar variaciones de una petición

Serie: Burp Suite desde cero  |  unfantasmaenelsistema.com

Intruder toma una petición base, marca uno o varios puntos como variables, y la reenvía una vez por cada valor de una lista que le des -comparando después las respuestas por longitud, código de estado o tiempo. Es la herramienta que responde a preguntas del tipo "¿cuál de estos 500 valores se comporta distinto?", algo que a mano en Repeater sería impracticable.

Qué aprenderás en este capítulo

Cómo marcar posiciones de payload a mano y automáticamente · Los cuatro tipos de ataque de Intruder y cuándo se usa cada uno · Cómo montar una lista de payloads simple y lanzar el ataque · Qué límites concretos tiene Community Edition frente a Professional, con el aviso real que muestra Burp

1. Enviar la petición y marcar posiciones

Igual que con Repeater, cualquier petición llega a Intruder con el menú contextual o Ctrl+I. La pestaña Positions muestra la petición completa; el botón Auto § marca automáticamente los puntos que Burp identifica como parámetros -valores de cookies, parámetros de la URL, el cuerpo de la petición- delimitándolos con el símbolo `§`.

Auto § ha marcado 5 posiciones: el término de búsqueda y cuatro valores más dentro de las cabeceras

Auto § ha marcado 5 posiciones: el término de búsqueda y cuatro valores más dentro de las cabeceras

Marcar todo automáticamente rara vez es lo que interesa. Lo habitual es seleccionar a mano solo el trozo de texto que quieres variar -por ejemplo, únicamente el valor del parámetro `q`- y pulsar Add § para marcar solo ese punto, dejando el resto de la petición fija. Cuantas menos posiciones, más simple es interpretar los resultados después.

2. Los cuatro tipos de ataque

Tipo de ataqueQué hace
SniperRecorre las posiciones una por una, probando cada valor de una única lista en cada posición por turnos. El más usado con diferencia
Battering ramPone el mismo valor en todas las posiciones marcadas a la vez, en cada intento
PitchforkUsa una lista distinta por posición, avanzando todas en paralelo (payload 1 de la lista A con payload 1 de la lista B, luego los segundos, etc.)
Cluster bombPrueba todas las combinaciones posibles entre las listas de cada posición -crece muy rápido: 3 listas de 10 valores son 1.000 peticiones

3. Montar una lista de payloads

En la pestaña Payloads (panel derecho), el tipo Simple list deja escribir o pegar valores uno por uno. Para este ejemplo, cuatro términos de búsqueda sencillos:

Cuatro payloads cargados (apple, banana, juice, melon): Payload count 4, Request count 20 -4 payloads × 5 posiciones marcadas-

Cuatro payloads cargados (apple, banana, juice, melon): Payload count 4, Request count 20 -4 payloads × 5 posiciones marcadas-

Menos posiciones, menos peticiones

Con 5 posiciones marcadas y 4 payloads, Sniper dispara 20 peticiones -uno por cada combinación posición×payload-, no 4. Si solo interesa el término de búsqueda, marcar una única posición reduce el ataque a exactamente 4 peticiones, mucho más rápido de leer después.

4. Los límites reales de Community Edition

Al pulsar Start attack, Community Edition muestra siempre este aviso antes de arrancar:

El aviso real de Burp:

El aviso real de Burp: "contains a demo version of Burp Intruder. Some functionality is disabled, and attacks are time throttled."

En la práctica esto se traduce en un ataque notablemente más lento que en Professional -Burp introduce una pausa entre peticiones a propósito- y en algunas opciones de payload avanzadas (generadores de fuerza bruta con reglas complejas, algunos tipos de payload processing) que solo están disponibles en la versión de pago. Para el volumen de este manual -decenas o pocos cientos de peticiones- el límite de velocidad es una molestia menor, no un bloqueo real.

5. Leer los resultados: la columna Length es la pista

El ataque termina en una tabla con una fila por petición enviada. La columna que más se mira no es Status code, es Length -el tamaño de la respuesta-: una respuesta con un tamaño claramente distinto al resto casi siempre significa que ese payload provocó un comportamiento diferente.

Resultados reales: en la posición 1 (el término de búsqueda),

Resultados reales: en la posición 1 (el término de búsqueda), "juice" devuelve Length 12907 frente a los ~663-1307 del resto -encontró muchos más productos-

Este resultado real lo dice todo sobre el método: sin mirar una sola respuesta con detalle, la sola comparación de longitudes ya señala que "juice" fue el término que más coincidencias encontró en el catálogo (tiene sentido, es una tienda de zumos). El mismo principio -ordenar por Length y mirar qué se sale del patrón- es exactamente el que se usa para encontrar, por ejemplo, qué usuario de una lista de 500 nombres es una cuenta real, o qué contraseña de una lista corta funciona contra un login sin protección de fuerza bruta.

Conclusión

Intruder convierte una pregunta con muchas respuestas posibles en una tabla ordenable: marca la posición, carga los valores, lanza el ataque, y deja que la columna Length (o Status code, o un patrón de texto con Grep - Match, una opción que no hemos tocado en este ejemplo) señale la fila distinta.

El siguiente capítulo cierra el bloque de herramientas activas con tres piezas más pequeñas pero igual de útiles: Decoder para transformar datos, Comparer para diferenciar dos respuestas byte a byte, y Sequencer para medir qué tan aleatorio es un token de sesión.

unfantasmaenelsistema.com | Seguridad, sistemas y todo lo que no debería funcionar (pero funciona)