Cheatsheet

Burp Cheatsheet Pentest Web Proxy Intruder Extensions

Configuración de Proxy y flujo de trabajo

  • Proxy > Options: 127.0.0.1:8080 por defecto. Para tráfico SSL, instala el certificado de CA de Burp en el cliente (o usa -k con curl).
  • Intercept Off por defecto en pruebas; usa Ctrl+T para 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.
  • Response Modification: si un JS valida un campo, usa Match and Replace en responses para quitar onclick="verificar()" o cambiar type="submit" a type="button".

Repeater: mejores prácticas

  • Cambiar método HTTP: haz clic derecho en la request > Change Request Method. Útil para probar GET vs POST y bypass de CSRF tokens.
  • Force TLS: en el menú del protocolo (junto a URL) selecciona HTTP/1.1 sobre TLS para puertos no estándar (ej: 9443).
  • Add Content-Length: tras modificar el body, usa Ctrl+Shift+U para URL-encode selección, y recuerda que Burp no recalcula automáticamente el Content-Length en manual; usa Content-Length: 0 con Transfer-Encoding: chunked para bypass de WAF (probado con TE: chunked).
  • Tab de Repeater con Chunked encoding manual: escribe 0\r\n\r\n al 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 en Add §).
  • 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_id y user_id conocidos.

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 Engine a Number of threads: 10 y Retries: 0 para no sobrecargar.
  • Para guardar logs: Intruder > Save responses o usa extensiones para almacenar en archivo.

Payload generation rápida

  • Números: 1-1000 step 1 (formato min:max:step).
  • Custom iterator: usa Payload Processing > Add > Encode para 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-URL y 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 con if(true){...} – usa regex para encontrar la función.
  • 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 disabled en botones; añadimos regla que en Response body reemplazara disabled="" con vacío.

Comandos curl equivalentes (para scripting)

  • Exporta requests desde Burp con clic derecho > Copy to file o usa curl directamente 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 curl en 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+F en la ventana de Intruder: búsqueda visual en resultados.

Notas finales de contexto

  • Para applications con WebSocket, usa Proxy > WebSocket history para manipular tramas.
  • Si hay TLS pinning, usa Burp > Proxy > Options > Import/Export CA cert y 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]]