Generar un PoC de CSRF en Burp Suite

Beginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá una técnica fundamental en las pruebas de seguridad de aplicaciones web: la generación de una Prueba de Concepto (PoC) de Cross-Site Request Forgery (CSRF) utilizando Burp Suite. CSRF es un tipo de ataque que engaña a una víctima para que envíe una solicitud maliciosa. Burp Suite proporciona una potente función para crear automáticamente una PoC, que puede utilizarse para demostrar el impacto de la vulnerabilidad.

Utilizará el proxy de Burp Suite para interceptar una solicitud que cambie el estado de la aplicación (como actualizar una dirección de correo electrónico) y luego usará sus "Engagement tools" para generar un formulario HTML que reproduzca esta solicitud. Este ejercicio práctico solidificará su comprensión de cómo se elaboran y prueban los ataques CSRF.

Encontrar una Solicitud que Cambia el Estado (ej. actualizar correo electrónico) en el Historial del Proxy

En este paso, iniciará Burp Suite, utilizará su navegador integrado para realizar una acción en un sitio web objetivo y luego localizará la solicitud correspondiente en el historial del proxy. Una "solicitud que cambia el estado" es cualquier solicitud que modifica datos en el servidor, como cambiar una contraseña, enviar un comentario o actualizar información del perfil.

Primero, iniciemos Burp Suite.

  1. Haga clic en el menú Applications en la esquina superior izquierda de la pantalla.
  2. Vaya a Web y seleccione Burp Suite Community Edition.
  3. Aparecerá un cuadro de diálogo. Mantenga la configuración predeterminada (Temporary project) y haga clic en Next.
  4. En la siguiente pantalla, seleccione Use Burp defaults y haga clic en Start Burp.

Una vez que Burp Suite esté en ejecución, abra su navegador integrado.

  1. Vaya a la pestaña Proxy y luego a la subpestaña Intercept.
  2. Haga clic en el botón Open Browser. Se abrirá una nueva ventana del navegador Chromium, preconfigurada para dirigir el tráfico a través de Burp Suite.

Ahora, realicemos una acción para capturar. Para este laboratorio, utilizaremos un sitio web de prueba de PortSwigger.

  1. En el navegador de Burp, navegue a la siguiente URL:
    https://portswigger.net/web-security/csrf/lab-no-defenses
  2. Haga clic en Access the lab. Será redirigido a un sitio web de blog.
  3. Inicie sesión en la aplicación utilizando las credenciales wiener:peter. Puede encontrar estas credenciales en la descripción del laboratorio en la página.
  4. Después de iniciar sesión, verá un formulario "Update email". Ingrese una nueva dirección de correo electrónico, por ejemplo, test@example.com, y haga clic en Update email.

Finalmente, encontremos la solicitud en Burp Suite.

  1. Regrese a la ventana de Burp Suite.
  2. Navegue a la pestaña Proxy y luego a la subpestaña HTTP history.
  3. Revise la lista de solicitudes. Debería ver una solicitud POST /my-account/change-email. Esta es la solicitud que cambia el estado que queremos atacar. Haga clic en ella para ver sus detalles en el panel inferior.
POST /my-account/change-email HTTP/2
Host: your-lab-id.web-security-academy.net
...

email=test%40example.com

Ahora ha interceptado e identificado con éxito una solicitud que cambia el estado.

Hacer Clic Derecho en la Solicitud

En este paso, utilizará el menú contextual de Burp Suite para acceder a sus funciones avanzadas. El menú contextual es una parte central del flujo de trabajo de Burp Suite, ya que proporciona acceso rápido a diversas herramientas que se pueden aplicar a una solicitud seleccionada.

Con la solicitud POST /my-account/change-email aún resaltada en la pestaña Proxy > HTTP history, realice la siguiente acción:

  1. Mueva el cursor del ratón sobre la línea de la solicitud seleccionada.
  2. Haga clic derecho en la solicitud.

Esto abrirá un menú contextual grande con muchas opciones. Este menú es sensible al contexto, lo que significa que las opciones disponibles pueden cambiar dependiendo de dónde haga clic. Al hacer clic derecho en una solicitud, obtiene una lista de acciones que puede realizar sobre esa solicitud específica, como enviarla a otras herramientas de Burp como Repeater, Intruder o, en nuestro caso, al generador de PoC de CSRF.

Tómese un momento para observar las opciones disponibles y familiarizarse con las posibilidades.

Ir a Engagement tools > Generate CSRF PoC

En este paso, navegará por el menú contextual para encontrar y lanzar el generador de PoC de CSRF. Esta herramienta se clasifica bajo "Engagement tools" (Herramientas de compromiso), que son funciones diseñadas para ayudar a demostrar y reportar vulnerabilidades.

Después de hacer clic derecho en la solicitud en el paso anterior, el menú contextual ahora es visible. Siga estos pasos para generar el PoC:

  1. En el menú contextual, localice y pase el ratón sobre la opción Engagement tools. Esto revelará un submenú.
  2. Del submenú que aparece, haga clic en Generate CSRF PoC.

Se abrirá una nueva ventana titulada "Generate CSRF PoC". Burp Suite ha analizado automáticamente la solicitud POST que seleccionó y ha generado una página HTML simple que, al enviarse, reproducirá esa misma solicitud. Este es el núcleo de un ataque CSRF: engañar al navegador de un usuario para que envíe una solicitud a un sitio web donde ya está autenticado.

Revisar el Formulario HTML Generado

En este paso, examinará el código HTML generado por Burp Suite. Comprender este código es crucial para entender cómo funciona el ataque CSRF.

En la ventana "Generate CSRF PoC", verá un bloque de código HTML. Debería parecerse a lo siguiente:

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
    <script>
      history.pushState("", "", "/");
    </script>
    <form
      action="https://your-lab-id.web-security-academy.net/my-account/change-email"
      method="POST"
    >
      <input type="hidden" name="email" value="test&#64;example&#46;com" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

Analicemos los componentes clave de este HTML:

  • <form action="..." method="POST">: Esto define un formulario HTML. El atributo action especifica la URL a la que se enviarán los datos del formulario; en este caso, el mismo endpoint utilizado para cambiar la dirección de correo electrónico. El method="POST" coincide con el método de la solicitud original.
  • <input type="hidden" name="email" value="...">: Este es un campo de formulario oculto. Contiene el parámetro requerido por el servidor para realizar la acción. Aquí, es el parámetro email con el valor test@example.com. Debido a que está oculto, una víctima que visite esta página no lo verá.
  • <input type="submit" value="Submit request" />: Esto crea el botón que una víctima necesitaría hacer clic para activar el ataque. En ataques más avanzados, este envío se puede activar automáticamente usando JavaScript.

Esta simple página HTML es una Prueba de Concepto (Proof of Concept) funcional para la vulnerabilidad CSRF.

Usar la Función 'Test in browser' para Verificar el PoC

En este paso, utilizará el PoC generado para confirmar la vulnerabilidad CSRF. Burp Suite facilita esto con una función de prueba integrada.

En la ventana "Generate CSRF PoC", encontrará un botón etiquetado como Test in browser. Esta función le permite probar el PoC directamente en la misma sesión del navegador donde está autenticado en la aplicación objetivo.

  1. Haga clic en el botón Test in browser.
  2. Burp Suite le proporcionará una URL única. Haga clic en el botón Copy para copiar esta URL a su portapapeles.
  3. Regrese al navegador integrado de Burp (la ventana de Chromium).
  4. Pegue la URL copiada en la barra de direcciones y presione Enter.

Se cargará una nueva página que mostrará solo un botón "Submit request". Este es su PoC en acción.

  1. Haga clic en el botón Submit request.

El navegador enviará la solicitud POST a la aplicación web. Dado que ya ha iniciado sesión (su navegador tiene la cookie de sesión), la aplicación procesará la solicitud como si la hubiera realizado legítimamente.

Para confirmar que el ataque fue exitoso:

  1. Navegue de regreso a la pestaña de la aplicación del blog.
  2. Actualice la página o haga clic en el enlace "My account".
  3. Debería ver que el correo electrónico se ha actualizado a test@example.com (o cualquier valor que estuviera en su PoC). El laboratorio también debería mostrar un mensaje de "Congratulations, you solved the lab!".

Esto confirma que el PoC de CSRF funciona y que la aplicación es vulnerable.

Resumen

En este laboratorio, ha aprendido con éxito a utilizar Burp Suite para generar y probar una Prueba de Concepto (Proof of Concept) de Cross-Site Request Forgery (CSRF).

Ha practicado el flujo de trabajo completo para esta tarea:

  1. Interceptar una solicitud que cambia el estado utilizando el proxy de Burp.
  2. Utilizar el menú contextual para acceder a Engagement tools.
  3. Generar el PoC de CSRF con un solo clic.
  4. Analizar el HTML resultante para comprender el mecanismo del ataque.
  5. Probar el PoC en el navegador para confirmar la vulnerabilidad.

Esta habilidad es esencial para cualquier profesional de la seguridad de aplicaciones web, ya que proporciona una forma clara y efectiva de demostrar el impacto en el mundo real de una falla CSRF a desarrolladores y partes interesadas.