Nuevos labs cada semana — Accede a todos desde 5€/mes
Ver labs →xss
Cross-Site Scripting: inyección de JavaScript en el contexto de otra página, robando sesiones y datos.
Respuesta rápida
¿Qué es xss?
Cross-Site Scripting: inyección de JavaScript en el contexto de otra página, robando sesiones y datos.
Artículos
15
Básico
1
Intermedio
4
Avanzado
10
Nivel básico
1Nivel intermedio
4postMessage — vulnerabilidades comunes: origin bypass, XSS sink, IDOR cross-window
Cómo identificar y explotar vulnerabilidades en window.postMessage(): listeners sin validación de origin, payloads JSON inseguros que llegan a DOM XSS, IDOR cross-origin.
Stored XSS €1200 — bypass de sanitizer via SVG href javascript: con entity encoding
Walkthrough de un report real €1200: stored XSS en POE bypassando sanitizer fix mediante SVG con href=`javascript:` y HTML entity encoding sobre los caracteres filtrados.
XSS contexts — payloads por contexto (HTML, atributo, JS, URL, CSS)
Cómo identificar el contexto exacto donde se inyecta tu input y los payloads que escapan cada uno: HTML body, atributo HTML, JS string, JS event, URL, CSS, JSON.
Stored XSS vía SVG con href javascript: en chat — reclasificación de Self-XSS
Un payload SVG subido como adjunto. Filtro bypassed. Renderizado inline en el contexto principal. Cualquier participante del chat queda expuesto al click.
Nivel avanzado
10DOM XSS — gadgets, postMessage handlers y CVE-2025-59840
DOM XSS no es solo innerHTML. Sources/sinks, gadget chains via toString(), postMessage handlers sin origin check, hash-based routing rotos.
CSP bypass + CORS misconfig + XSS — chain completo de explotación
Cómo encadenar misconfiguración CSP (unsafe-inline, wildcard sources, JSONP endpoints whitelistados), CORS con credentials y XSS para data exfiltration sin restricciones.
DOM clobbering — override de variables globales JS para bypassear sanitizers
Cómo usar DOM clobbering (name/id collisions) para sobrescribir variables JS globales y bypassear sanitizers como DOMPurify, achivar XSS donde innerHTML está bloqueado por defecto.
XSS Android — Activity exported via ContentActivity (POE/Quora real report)
Walkthrough de XSS Android explotable via Activity Exported intent en POE: cómo un ContentActivity sin filtros leaks WebView a sites attacker-controlled.
Secondary context XSS — encontrando XSS donde el primary parsing no lo detecta
Cuando el primary parsing escapa pero un secondary context (markdown render, BBCode, custom template engine) interpreta de nuevo, abriendo XSS oculto a sanitizers tradicionales.
XSS escalation — de Self-XSS a Account Takeover con chains reales
Cómo convertir un Self-XSS aparentemente inútil en un takeover total: clickjacking, login-CSRF + Self-XSS, cookie tossing, postMessage hijack, hash injection, OAuth flow abuse.
XSS WAF bypass — encoding, parser differentials, case-only mutations
Técnicas de bypass WAF para XSS: HTML entities, hex/decimal/unicode encoding, parser differentials (browser vs WAF), comments injection, case variations, JS template literals.
CSP Bypass — JSONP, base-uri, AngularJS gadgets, dangling markup
Content-Security-Policy roto con strict-dynamic + JSONP, sin base-uri, AngularJS sandbox escapes, JSON hijacking. Cómo escalar XSS cuando el CSP teóricamente bloquea.
Mutation XSS — cuando el HTML cambia entre sanitizar y renderizar
El sanitizer ve A pero el browser renderiza B. SVG namespace tricks, comments mal cerrados, MathML, template element. Cómo encontrar mXSS contra DOMPurify y sanitizers caseros.
Reflected XSS en página 429 vía Google Analytics — el snippet de tracking como vector
El snippet de Google Analytics tomaba parte de la URL como input sin sanitizar. Un breakout de string literal dentro del propio script: la inyección estaba ya en contexto JavaScript.
Practica xss con labs reales
Aplica las técnicas en entornos seguros basados en reportes reales de bug bounty.