¿Se puede realizar un ataque XSS en una página estática que no utiliza JavaScript?
Realmente tienes dos preguntas aquí.
¿Funciona DOM XSS en páginas que no usan js?
Supongo que te refieres a XSS basado en DOM , y en ese caso, no. El XSS basado en DOM requiere que la entrada del usuario se coloque en el lado del cliente DOM, lo que sucede a través de JavaScript.
Un ejemplo simple es que JavaScript lee parte de una URL y la escribe en el documento.
¿Se puede realizar un ataque XSS en una página estática que no utiliza JavaScript?
Claro. Si hace un eco de la entrada del usuario en la página estática, que, en contraste con XSS basado en DOM, ocurre en el lado del servidor, un usuario simplemente puede agregar etiquetas script
o ingresar un contexto de JavaScript a través de varios atributos de eventos.
Si sabe que solo tendrá páginas estáticas, puede evitar la ejecución de JavaScript inyectado utilizando una Política de seguridad del contenido . Tenga en cuenta que la tarea del navegador es hacer cumplir esta política, por lo que es posible que esto no sea de ayuda con los navegadores más antiguos, y que aún se deben aplicar las defensas adecuadas contra XSS.
El ataque DOM XSS necesita que los elementos DOM sean un ataque exitoso y es necesario el código JS. Ahora, puede realizar ataques XSS en la página sin Código JS, esto es posible utilizando los ataques XSS reflejados o persistentes, por ejemplo, tiene el siguiente campo en su formulario HTML y la aplicación web refleja el valor en ese campo o obtiene el valor desde una base de datos u otro tipo de almacenamiento de datos, y coloca esos datos en el atributo value
del campo:
<input id="user" name="user" value="{value_from_server}" />
Puedes inyectar algo como esto:
" /><script>alert("XSS");</script><input id="user2" name="user2" value="
Luego, si reemplaza {value_from_server}
por el texto anterior, obtendrá el siguiente resultado:
<input id="user" name="user" value=" " /><script>alert("XSS");</script><input id="user2" name="user2" value=" " />
Como puede ver, solo necesita saber cómo la aplicación web coloca los datos en su página web y el resto es solo creatividad, en este caso, una página web sin código JS podría ser vulnerable a los ataques XSS.
Espero que esta información te ayude.
Buena suerte.
Lea otras preguntas en las etiquetas xss