Configuración de Proxy y flujo de trabajo
- Proxy > Options:
127.0.0.1:8080por defecto. Para tráfico SSL, instala el certificado de CA de Burp en el cliente (o usa-kcon curl). - Intercept Off por defecto en pruebas; usa
Ctrl+Tpara toggle rápido de interceptación. - History: filtra por
MIME type,status code, o extensiones:^css$|^js$|^png$en el campo de filtro (regex). - Match and Replace (Proxy > Options > Match and Replace): reglas globales para modificar requests/responses en tiempo real.
- Eliminar headers de control:
Match: ^Host: .*→Replace: Host: target.com(para virtual hosting). - Bypass client-side check:
Match: ^.*"token":"[a-f0-9]{32}".*$→Replace: $1(si usas reemplazo vacío, cuidado con la regex). - Ejemplo accionable: quitar
Sec-Fetch-*headers para simular navegación directa:Match: ^Sec-Fetch.*\r?\n→ Replace vacío.
- Eliminar headers de control:
- Response Modification: si un JS valida un campo, usa Match and Replace en responses para quitar
onclick="verificar()"o cambiartype="submit"atype="button".
Repeater: mejores prácticas
- Cambiar método HTTP: haz clic derecho en la request >
Change Request Method. Útil para probarGETvsPOSTy bypass de CSRF tokens. - Force TLS: en el menú del protocolo (junto a URL) selecciona
HTTP/1.1sobre TLS para puertos no estándar (ej: 9443). - Add Content-Length: tras modificar el body, usa
Ctrl+Shift+Upara URL-encode selección, y recuerda que Burp no recalcula automáticamente el Content-Length en manual; usaContent-Length: 0conTransfer-Encoding: chunkedpara bypass de WAF (probado conTE: chunked). - Tab de Repeater con
Chunked encodingmanual: escribe0\r\n\r\nal final.
Intruder: tipos de ataque y cuándo usarlos
Sniper
- Uso: un solo payload position, fuerzas un solo parámetro. Ejemplo: fuzzing de IDs
id=1→id=999. - Payload positions: encierra el valor con
§(clic enAdd §). - Payload type: números secuenciales (1-1000, step 1).
- Resource pool: usa threads 1 (para rate limit) o hasta 5 si el host lo permite.
- Grep-Extract: añade regex para extraer datos de la respuesta (ej:
Location: (.*)).
Battering Ram
- Payload único insertado en todas las posiciones a la vez. Útil para cambiar el token CSRF en varios puntos donde el mismo valor debe repetirse.
- Ejemplo: request POST con
csrf=§token§&cookie=§token§– fuerzas el mismo valor para ambos.
Pitchfork
- Parejas de payloads: cada línea de los archivos de payload se alinea por índice (línea 1 con archivo1 línea 1, etc.).
- Ejemplo: ataque de credenciales con dos diccionarios:
user=§usr§&pass=§pwd§. Asegura que el número de líneas sea igual, de lo contrario se trunca. - Uso típico: pruebas de IDOR con pares
account_idyuser_idconocidos.
Cluster Bomb
- Producto cartesiano: todas las combinaciones posibles. O(n*m) requests – úsalo con moderación.
- Ejemplo: fuzzing de parámetros:
param=§name§&value=§val§con 100 nombres x 1000 valores = 100k requests. - Configura
Intruder > Options > Request EngineaNumber of threads: 10yRetries: 0para no sobrecargar. - Para guardar logs:
Intruder > Save responseso usa extensiones para almacenar en archivo.
Payload generation rápida
- Números:
1-1000step1(formato min:max:step). - Custom iterator: usa
Payload Processing > Add > Encodepara convertir a URL-encoding. - Payload fuzzing:
Burp Intruder > Payloads > Payload type: Fuzzing– incluye strings de bypass como' OR '1'='1,../../,%00.
Extensiones esenciales (BApp Store)
- Logger++: log de todas las requests/responses incluso fuera del proxy (extensiones que generan tráfico). Configura filtros por URL o IP.
- Turbo Intruder: ataque de alta velocidad con Python. Ejemplo para brute-force con retardo:
def queueRequests(target, wordlists): engine = RequestEngine(endpoint=target.endpoint, concurrentConnections=20, requestsPerConnection=5) for word in open('passwords.txt'): engine.queue(target.req, word.rstrip(), learn=1) - Autorize: detecta fallos de autorización – envía requests como otro usuario de baja privilegio (cambia cookies automáticamente).
- 403 Bypasser: añade headers
X-Original-URL,X-Rewrite-URLy prueba variantes de path traversal. - Content-Type Converter: cambia entre
application/x-www-form-urlencoded,multipart/form-data, y JSON para probar parsers. - Reflected Parameters: detecta reflejos XSS de forma dinámica con payloads canary.
- J2EEScan: scan pasivo para vulnerabilidades específicas de Java (Spring, Struts).
Match and Replace – Bypass de controles del lado del cliente
- Bypass validación JS en el servidor: la validación se hace en JS pero el request llega limpio. Ejemplo:
- Match:
if\(.*\)\{.*submit.*\}en response, reemplazar conif(true){...}– usa regex para encontrar la función.
- Match:
- Eliminar parámetro de timestamp/checksum: en response,
Match: ^.*timestamp=.*$→Replace: timestamp=0. - Modificar cookies: en Proxy > Match and Replace > Request header:
Match: ^Cookie: session=.*→Replace: Cookie: session=valid(si conoces el formato). - Caso real: una app bloqueaba clicks con
disableden botones; añadimos regla que en Response body reemplazaradisabled=""con vacío.
Comandos curl equivalentes (para scripting)
- Exporta requests desde Burp con clic derecho >
Copy to fileo usacurldirectamente con-x http://127.0.0.1:8080. - Ejemplo de request manual con proxy y auth:
curl -x http://127.0.0.1:8080 -b 'session=ABC' -d 'user=admin' http://target.com/login --insecure - Para usar Intruder desde CLI, exporta los payloads y usa
curlen un bucle de shell.
Atajos de teclado rápidos
Ctrl+R: enviar a Repeater,Ctrl+I: a Intruder,Ctrl+Shift+U/H: URL-encode/decode selección.Ctrl+B: base64 decode/encode.Ctrl+Shift+B: comparar respuestas (Util > Comparer).Ctrl+Fen la ventana de Intruder: búsqueda visual en resultados.
Notas finales de contexto
- Para applications con WebSocket, usa
Proxy > WebSocket historypara manipular tramas. - Si hay TLS pinning, usa
Burp > Proxy > Options > Import/Export CA certy o instala en el sistema. - Prueba siempre con HTTP/2 si el servidor lo soporta; Burp 2023+ usa por defecto HTTP/2 en Repeater si está habilitado.
Relacionado
- [[_Cheatsheets — índice]]