WSTG 实战|客户端测试(4.11 / CLNT)
有些漏洞在”浏览器里”发作,服务器从没见过请求。WSTG 4.11 v5.0 扩展到 15 个子项(含子项),新增 CSS 注入、跨站闪烁、反向标签劫持、客户端模板注入。
① 是什么
客户端测试 检查在用户浏览器中发生的漏洞:DOM XSS、JS 执行、HTML/CSS 注入、重定向、CORS、点击劫持、WebSockets、Web Messaging、浏览器存储等。
WSTG 类别码:CLNT
② 为什么重要
- 客户端漏洞直接危害真实用户,且常绕过服务端防护。
- DOM 型问题数据只在客户端流动,传统扫描易漏,需浏览器内分析。
③ 核心概念拆解(对应 4.11.x / WSTG-CLNT-01 到 -15)
| ID | 测试项 | 关键点 |
|---|---|---|
| 4.11.1 / WSTG-CLNT-01 | 测试基于 DOM 的 XSS | Source(location.*/document.referrer/postMessage)→ Sink(innerHTML/eval/document.write/jQuery.html)链路追踪、DOM Invader |
| 4.11.1.1 / WSTG-CLNT-01.1 | 测试自 DOM XSS | 单页面内 Source→Sink、无服务端交互、Hash 路由、SPA 框架内部 |
| 4.11.2 / WSTG-CLNT-02 | 测试 JavaScript 执行 | eval/Function/setTimeout/setInterval/new Function 动态代码、模板字符串、JS 模板引擎 |
| 4.11.3 / WSTG-CLNT-03 | 测试 HTML 注入 | innerHTML/outerHTML/insertAdjacentHTML/document.write 注入标签/属性/事件 |
| 4.11.4 / WSTG-CLNT-04 | 测试客户端 URL 重定向 | location.href/assign/replace、window.open、a[href]、meta refresh、开放重定向参数 |
| 4.11.5 / WSTG-CLNT-05 | 测试 CSS 注入 | 选择器注入、属性值注入、@import、url()、expression()、CSS Exfiltration、CSS Keylogger |
| 4.11.6 / WSTG-CLNT-06 | 测试客户端资源操纵 | localStorage/sessionStorage/IndexedDB/Cookies/Cache API 篡改、污染缓存 |
| 4.11.7 / WSTG-CLNT-07 | 测试跨域资源共享 (CORS) | Access-Control-Allow-Origin 反射/通配符、凭证模式、预检缺失、子域/正则宽泛 |
| 4.11.8 / WSTG-CLNT-08 | 测试跨站闪烁 (Cross-Site Flashing) | Flash 历史漏洞、SWF 加载、allowScriptAccess、ExternalInterface、现代替代(WebAssembly) |
| 4.11.9 / WSTG-CLNT-09 | 测试点击劫持 | X-Frame-Options、frame-ancestors、UI Redress、多层 iframe、拖拽劫持、光标劫持 |
| 4.11.10 / WSTG-CLNT-10 | 测试 WebSockets | 握手源校验、消息验证、敏感数据传输、重连攻击、DoS、未授权广播 |
| 4.11.11 / WSTG-CLNT-11 | 测试 Web Messaging | postMessage 目标源校验、消息内容验证、敏感数据泄露、事件监听器污染 |
| 4.11.12 / WSTG-CLNT-12 | 测试浏览器存储 | localStorage/sessionStorage/IndexedDB/Cache API 存敏感数据、无加密、XSS 可读、持久化风险 |
| 4.11.13 / WSTG-CLNT-13 | 测试跨站脚本包含 (XSSI) | JSONP 回调劫持、动态脚本加载、数组/对象字面量泄露、原型污染链 |
| 4.11.14 / WSTG-CLNT-14 | 测试反向标签劫持 | target="_blank" 无 rel="noopener"、window.opener 篡改、标签页劫持、历史记录操纵 |
| 4.11.15 / WSTG-CLNT-15 | 测试客户端模板注入 | AngularJS/React/Vue/Svelte 模板表达式注入、沙箱逃逸、CSP 绕过、AST 分析 |
④ 常见误区
- 误区 1:服务端过滤了就安全。DOM XSS 数据可能只走客户端。
- 误区 2:没弹窗=没 XSS。看 source→sink 链路比等弹窗更准。
- 误区 3:CSP 万能。配置不当仍可绕过。
⑤ 一句话小结
客户端测试在浏览器内发作:DOM XSS、注入、重定向、CORS、点击劫持、WebSocket、存储、反向标签劫持、客户端模板注入——用浏览器内分析追 source→sink。
下一篇:API 安全测试(4.12 / APIT)
参考来源:OWASP Web Security Testing Guide(最新 v5.0 / 2026 开发线)(本文为原创讲解,非转载原文)