Cross Site Scripting (XSS)
¿Qué es y cómo funciona?
Un XSS es un tipo de vulnerabilidad típica de las aplicaciones Web, que puede permitir a una tercera persona inyectar en páginas web visitadas por el usuario código JavaScript.
Es posible encontrar una vulnerabilidad de Cross-Site Scripting en aplicaciones que tengan entre sus funciones presentar la información en un navegador web u otro contenedor de páginas web. Sin embargo, no se limita a sitios web disponibles en Internet, ya que puede haber aplicaciones locales vulnerables a XSS, o incluso el navegador en sí.
Diferencias entre Reflected, Stored, DOM, Blind y Self
Reflected: Se encuentra en los buscadores de la paginas, por el parámetro GET.
Stored: Parametro POST, normalmente en la típica pagina que se puede publicar un post donde introducir un payload.
DOM XSS: Se introducen en el lado del cliente, a través de la inyección de un payload por parte del atacante, puede ser a su vez Stored o Reflected.
Blind XSS: Se trata de una derivada de Stored XSS, cuya peculiaridad reside en que el atacante no tiene acceso a la pagina en la que esta ejecutando el código.
Self-XSS:  se trata del tipo menos peligroso, ya que es aquel que requiere que la víctima introduzca el código la petición al servidor.
Cheat Sheet basic
Cookie stealer
Este script se inyectaría mediante un XSS en un post vulnerable, cada vez que un usuario entre en cierto post de la web robará su cookie, este es un ataque XSS Stored.
Hay una forma de hacerlo más sencillo, estamos haciendo que cada vez que vea el blog o el articulo intente cargar un archivo que no existe, asi conseguimos que el usuario que ha entrado nos de su cookie.
Reflected
¿Qué és?
Cross-Site scripting reflected surge cuando la aplicación recibe datos en la petición HTTP y que incluya datos dentro de la respuesta inmediata de forma insegura.
Supongamos que un sitio web tiene una función de búsqueda que recibe el término de búsqueda introducido por el usuario en un parámetro URL:
Asumiendo que la aplicación no realiza otro proceso con los datos, el atacante puede construir un ataque como lo siguiente:
Y el resultado de la URL sería el siguiente
Si otro usuario de la aplicación solicita la URL del atacante, entonces el script suministrado por el atacante se ejecutará en el navegador del usuario víctima, en el contexto de su sesión con la aplicación.
HTML Context without encoded
HTML attribute angle brackets encoded
JavaScript string angle brackets encoded
Referencias
Stored
HTML context with nothing encoded
Href attribute with double quoted HTML encode
Referencias
DOM-Based
InnerHTML payload
jQuery
Referencias
Last updated