← Todas las guías
WebLaboratorio guiadoPrincipiante25 min

Burp Suite para eJPT: Proxy, HTTP History y Repeater

Aprende el flujo manual esencial de Burp Suite: capturar una petición con Proxy, localizarla en HTTP History, enviarla a Repeater, modificar una sola variable y comparar la respuesta con una línea base.

1. El recorrido: observar, aislar y comprobar

Burp se coloca entre el navegador y el servidor. Proxy recibe el tráfico, HTTP History conserva el intercambio y Repeater permite repetir una petición después de editarla. El aprendizaje no está en cambiar muchos campos, sino en modificar uno y explicar qué diferencia produjo respecto a la línea base.

Proxy

Captura o deja pasar la petición que genera el navegador. Es el punto de observación.

HTTP History

Localiza el intercambio por host, método, URL, estado o longitud y conserva la evidencia original.

Repeater

Duplica la petición, cambia una variable, la reenvía y muestra la nueva respuesta junto a la solicitud.

El resultado se clasifica como efecto confirmado, sin efecto observado o inconcluso. Que un parámetro aparezca en la URL no demuestra que la aplicación lo procese.

2. Prepara Burp y un objetivo local desechable

Descarga Burp Suite desde PortSwigger, ejecuta el instalador nativo de tu arquitectura y selecciona Community Edition. Inicia un proyecto temporal con la configuración por defecto. Para este ejercicio usa el navegador integrado: ya está preparado para el proxy y evita instalar una autoridad certificadora en tu navegador habitual. El listener predeterminado suele estar en 127.0.0.1:8080; por eso el pequeño servidor de práctica escucha en 8000.

Laboratorio local · Linux
mkdir -p "$HOME/cubix-burp-lab"printf '%s\n' 'respuesta alfa' > "$HOME/cubix-burp-lab/index.html"printf '%s\n' 'respuesta beta modificada' > "$HOME/cubix-burp-lab/beta.html"python3 -m http.server 8000 --bind 127.0.0.1 --directory "$HOME/cubix-burp-lab"

Deja esa terminal abierta. Una respuesta como Serving HTTP on 127.0.0.1 port 8000 confirma que el servicio está listo; Ctrl + C lo detiene. Si python3 o py no existe, instala Python desde su distribución oficial antes de continuar, sin exponer el servidor a otra interfaz.

3. Captura una petición y luego deja navegar

En Burp abre Proxy → Intercept, pulsa Open browser y visita http://127.0.0.1:8000/index.html?term=alpha. Si Intercept está activado, la página esperará mientras Burp muestra la petición: léela y pulsa Forward. Después cambia a Intercept is offpara que el resto de recursos fluya sin detenerse.

Petición didáctica · vista abreviada
GET /index.html?term=alpha HTTP/1.1Host: 127.0.0.1:8000User-Agent: Mozilla/5.0 (…) Accept: text/html,*/*

La primera línea contiene método, ruta y query string; Host identifica el destino. En este GET no hay cuerpo. No edites todavía: esta petición será la línea base que permitirá atribuir cada cambio posterior.

4. Encuentra y lee la línea base en HTTP History

Abre Proxy → HTTP history. El historial registra el tráfico que cruza Proxy incluso con Intercept desactivado. Filtra por 127.0.0.1 o busca term=alpha, selecciona la fila y revisa las vistas de petición y respuesta. Los filtros cambian lo que ves; no borran el historial.

Solicitud

Registra método, ruta, parámetros y Host. Comprueba que no has seleccionado un favicon u otro recurso auxiliar.

Respuesta

Anota estado 200, tipo de contenido, longitud y el marcador visible respuesta alfa.

Contexto

Conserva hora y orden. La duración orienta sobre latencia, pero una única medición no prueba una diferencia.

Si el listado tiene demasiado ruido, activa temporalmente los filtros «solo elementos con respuesta» o «solicitudes con parámetros». Para trabajos reales añade únicamente el host autorizado al scope y revisa que el filtro no esté ocultando una petición relevante.

5. Envía a Repeater y cambia una sola variable

Haz clic derecho en la petición base y elige Send to Repeater. Abre la pestaña Repeatery pulsa Send sin modificar nada: esa repetición debe aproximarse a la respuesta original. Después realiza estas tres pruebas en orden, restaurando la línea base entre ellas.

A · Query string

Cambia solo term=alpha por term=beta. El servidor estático ignora el parámetro: esperas el mismo cuerpo.

B · Ruta

Cambia solo /index.html por /beta.html. Esperas un 200 con cuerpo y longitud distintos.

C · Recurso ausente

Cambia solo la ruta por /missing.html. Esperas un 404 y el documento de error del servidor local.

Repeater · prueba A
GET /index.html?term=beta HTTP/1.1Host: 127.0.0.1:8000HTTP/1.0 200 OKContent-Type: text/htmlrespuesta alfa

La prueba A confirma ausencia de efecto observado, no que el parámetro sea seguro en cualquier aplicación. Las pruebas B y C demuestran que Repeater sí está reenviando tus cambios. No alteres a la vez método, ruta, cookies, cabeceras y cuerpo: perderías la capacidad de atribuir el resultado.

6. Compara señales, no solo el aspecto visual

Para cada envío anota el valor cambiado y compáralo con la línea base. Repeater muestra la respuesta actual; el historial conserva la original para volver a consultarla. En esta práctica basta una tabla manual: no necesitas aprender Comparer ni otra herramienta de Burp.

Estado

200 → 404 es una diferencia clara, pero el código solo describe cómo respondió el servidor.

Longitud

Una variación ayuda a detectar cuerpos distintos. Compárala con contenido, compresión y cabeceras.

Cabeceras

Observa Content-Type, Location, caché y cookies sin copiar valores sensibles al informe.

Cuerpo

Busca un marcador estable como respuesta alfa; ignora fechas, tokens o identificadores dinámicos.

Tiempo

Repite varias veces antes de interpretarlo. Red, caché y carga introducen variación normal.

Conclusión

Declara efecto confirmado, sin efecto observado o inconcluso, y explica la evidencia mínima.

Un cambio reproducible de estado, longitud o marcador confirma que la variable influye en la respuesta. No prueba por sí solo una vulnerabilidad: para eso harían falta una hipótesis de seguridad, impacto y autorización adicional.

7. Resuelve los fallos habituales sin cambiar de herramienta

History está vacío

Usa Open browser y comprueba que el listener esté activo. Un navegador externo puede no estar enviando tráfico al proxy.

La página no termina

Probablemente Intercept sigue activo. Pulsa Forward para esa petición y luego desactívalo.

Advertencia HTTPS

Vuelve al navegador integrado. Un navegador externo requiere confiar explícitamente en el certificado CA de Burp.

Demasiadas filas

Filtra por host, parámetros o respuestas. Recuerda que el filtro solo oculta elementos.

La respuesta cambia sola

Busca fechas, tokens, cookies, balanceo o contenido dinámico y repite una línea base limpia.

El servidor no arranca

El puerto 8000 puede estar ocupado. Detén el proceso que controlas o elige otro puerto y actualiza Host y URL.

8. Cierra el laboratorio con una evidencia explicable

  • El objetivo es local o está incluido expresamente en el alcance autorizado
  • Burp Community se abrió con un proyecto temporal y la configuración por defecto
  • El navegador integrado cargó 127.0.0.1:8000 a través de Proxy
  • La primera petición se dejó intacta como línea base
  • HTTP History conserva solicitud, respuesta, estado y longitud originales
  • La petición base se envió a Repeater y se repitió sin cambios
  • Cada prueba modificó una sola variable y restauró la línea base después
  • El parámetro ignorado se clasificó como sin efecto observado, no como seguro
  • Los cambios de ruta produjeron un cuerpo distinto y un 404 reproducibles
  • La evidencia no contiene cookies, tokens, credenciales ni datos personales
  • Intercept quedó desactivado y el servidor local se detuvo con Ctrl+C

Ya tienes el ciclo manual esencial: capturar → localizar → repetir → cambiar → comparar. En un laboratorio posterior puedes aplicarlo a formularios o APIs autorizadas, manteniendo la misma disciplina de una variable por prueba. Cierra el navegador de Burp y el proyecto temporal; elimina la carpeta cubix-burp-lab cuando ya no necesites los dos archivos de práctica.

Glosario

Proxy interceptador

Intermediario que permite observar y, cuando se habilita la interceptación, detener mensajes entre el navegador y el servidor.

Proxy listener

Dirección y puerto locales en los que Burp acepta las conexiones enviadas por un navegador configurado para usarlo como proxy.

Intercept

Estado del Proxy que retiene una petición o respuesta para revisarla antes de reenviarla o descartarla.

HTTP History

Registro de solicitudes y respuestas que han atravesado el Proxy, incluso cuando Intercept está desactivado.

Repeater

Herramienta manual para editar y reenviar repetidamente un mensaje y observar la respuesta obtenida.

Parámetro

Dato de entrada enviado en la URL, el cuerpo, una cabecera u otra parte de la petición.

Query string

Parte de una URL situada después del signo de interrogación que transporta pares de parámetros.

Cabecera HTTP

Campo de metadatos que acompaña a una solicitud o respuesta, como Host o Content-Type.

Cuerpo HTTP

Contenido opcional de un mensaje, como HTML, JSON o datos de un formulario.

Línea base

Petición y respuesta de referencia con las que se comparan cambios posteriores.

Código de estado

Número HTTP de tres cifras que resume el resultado de una solicitud, como 200 o 404.

Longitud de respuesta

Tamaño del mensaje devuelto; sirve como señal comparativa, pero no explica por sí solo qué cambió.

Scope

Conjunto de hosts y rutas definidos como alcance para filtrar y organizar el tráfico autorizado.

Ver más guías
Burp Suite para eJPT: Proxy, HTTP History y Repeater | Cubix Academia