Cross-Site Scripting (XSS)
Definición
XSS (Cross-Site Scripting) es una vulnerabilidad de seguridad que permite a un atacante inyectar scripts maliciosos (generalmente en JavaScript) en una página web. Estos scripts se ejecutan en el navegador de otros usuarios, lo que puede permitir el robo de información sensible, como cookies o credenciales, o realizar acciones no autorizadas en nombre de la víctima.
Clasificación
XSS Reflejado: El código malicioso se envía como parte de la URL o un formulario y se refleja inmediatamente en la respuesta del servidor. El script solo se ejecuta cuando el usuario hace clic en un enlace malicioso.
XSS Almacenado: El código malicioso se guarda en el servidor, como en un comentario o publicación. Luego, cada vez que alguien ve esa página, el script malicioso se ejecuta en su navegador.
XSS Basado en el DOM: En un DOM-based XSS, el ataque ocurre dentro del navegador, manipulando el contenido dinámico que ves en la página. Aquí no hay una respuesta directa del servidor. El script malicioso se ejecuta porque el navegador toma los datos que ingresa el usuario y los inserta en la página sin verificar si son seguros. Esto puede ocurrir a través de sumideros, que son lugares en la página donde esos datos se insertan (como un campo de texto o una etiqueta de título).
Some Payloads
Alert box
Redirección
Exfiltración
XSS Unrestricted File Upload
Estos ejemplos son ideales cuando tenemos subida de archivos a buckets S3 por ejemplo, donde si subimos un SVG que haga una redirección podemos demostrar un poco más de impacto en un XSS.
SVG Simple:
SVG + Redirección :
XSS + Unrestircted File Upload + Bypass CSP y CORS
En el siguiente ejemplo tenemos un caso real donde un cliente era vulnerable a XSS a través de un campo descripción, supongamos que era para guardar un curso, bueno, en la descripción del curso era vulnerable a XSS.
Resulta que para este caso, no había forma de saltar las políticas CSP y CORS, por lo que el hacker B4st3r decidió crear el siguiente script:
privesc.js:
Este archivo se subió a un bucket S3 aprovechando la vulnerabilidad Unrestricted File Upload.
Una vez que se subió el archivo javascript el cual iba a otorgar permisos administrativos a su usuario de pruebas se procedió a enviar la siguiente request:
HTTP Request:
En la solicitud previa lo único que cambia es que se agrega una imagen que cuando se genera un error porque no se lo encuentra llama al privesc.js del bucket, ejecutándose en el contexto del usuario que esté observando el curso actual. Cuando el administrador vea el curso y se inter
Por detrás la solicitud que viaja es la siguiente:
HTTP Request:
Como la solicitud la ejecuta un administrador, hace que el usuario atacante en este caso con userId 100 eleve sus privilegios al asignarse los perfiles administrativos 1, 2 y 3.
El archivo JS en el bucket permite que pase desapercibido y al ser de un dominio confiable (vulnerablesite.com) permite la carga del mismo respetando las políticas de CORS y CSP. Es decir,
Condiciones para que este ataque se dé:
Que haya XSS.
Que esté sobre un dominio confiable el bucket. En este caso estaba sobre el dominio vulnerablesite.com pero hay otros casos donde las respuestas
XSS para descargar malware
En este ejemplo vemos un XSS donde previamente se podía subir malware a un Bucket S3 por lo que se concate el XSS con el Unrestricted File Upload:
All in one payload:
Explicación
Lab Portswigger:
Link al laboratorio: https://portswigger.net/web-security/essential-skills/using-burp-scanner-during-manual-testing/lab-scanning-non-standard-data-structures
XSS Desde cookie, donde los : separa el nombre y un valor.
Seleccionamos selected scan insertion point, en weiner, como toma esa porción ahí descubre un xss y luego usa este payload:
Luego exfiltramos la cookie:
CSRF
Hay otros ejemplos donde si no podemos robar una cookie de usuario podemos llevar al usuario víctima a ejecutar acciones sin su consentimiento lo que se conoce como CSRF
BXSS Hunter
Una buena alternativa a buscar XSS es la herramienta BXSS que te entrega diferentes payloads y se si triggerea un XSS te llegará toda la información a la plataforma:
Recursos
Última actualización