基于污点分析的XSS漏洞辅助挖掘的一种方式
字数 2011 2025-08-26 22:11:51
基于污点分析的XSS漏洞辅助挖掘技术详解
1. 概述
本文档详细讲解基于污点分析的XSS漏洞辅助挖掘技术,包括输入源识别、危险函数分类、整体架构设计以及实现细节。
2. 污点来源(输入源)
2.1 当前状态相关输入
window.namewindow.location.hrefwindow.location.searchwindow.location.hashwindow.location.pathnamewindow.location.urldocument.URLdocument.documentURIdocument.URLUnencodeddocument.baseURIdocument.referrer
2.2 网络请求输入
通过Hook以下API获取:
XMLHttpRequestfetch
2.3 存储相关输入
- Cookie
- IndexedDB
- localStorage
- sessionStorage
监控机制:
- 静态输入:网页初始化时已确定的输入,程序直接记录
- 动态输入:通过插桩和事件处理实时监控变化(如cookie等)
3. 危险函数分类
3.1 直接执行JavaScript
eval(payload)setTimeout(payload, 100)setInterval(payload, 100)Function(payload)()<script>payload</script>- ``
3.2 加载URL执行
location=javascript:alert(/xss/)location.href=javascript:alert(/xss/)location.assign(javascript:alert(/xss/))location.replace(javascript:alert(/xss/))
3.3 执行HTML
xx.innerHTML=payloadxx.outerHTML=payloaddocument.write(payload)document.writeln(payload)
3.4 创建元素
scriptElement.srcdomElement.appendChilddomElement.insertBeforedomElement.replaceChild
3.5 部分可控执行
(new Array()).reduce(func)(new Array()).reduceRight(func)(new Array()).map(func)(new Array()).filter(func)
4. 系统架构设计
4.1 污点追踪实现方案
方案一:浏览器Native层Hook
- 优点:底层,全面
- 缺点:
- 需要对浏览器实现机制深入了解
- 编译过程复杂
- 难以迁移
- 浏览器更新后需要大量修改
方案二:浏览器插件层JavaScript Hook
- 实现方式:Chrome插件架构
content-script:可操纵宿主页面DOMbackground/popup:其他功能
- 优点:
- 开发快速
- 易于迁移
- 适应新机制能力强
- 实现细节:
- 通过注入方式hook宿主页面JavaScript
- 记录危险函数调用和网络请求到后台
4.2 疑似利用确认机制
4.2.1 静态分析
-
以域名为单位遍历sink和source
-
查找source在sink参数中出现的情况
-
过滤规则:
- 去除同一域名下相同参数相同调用的sink
- 去除同一源和相同返回结果
-
确认算法:
- 使用公共子字符串算法
- 子串长度需小于sink和source的最小长度
4.2.2 动态验证
- 修改请求参数
- 修改函数调用参数
- 注入测试payload
- 检查返回结果确认漏洞
特点:
- 高误报率(可能因WAF、sanitizer、CSP等)
- 低漏报率(hook全面时)
4.3 结果展示方案
初始方案
- 使用插件自带界面(popup/background)
- 浏览器层localStorage存储数据
- 缺点:影响浏览器间迁移兼容性
最终方案
- 独立Web应用
- 前端:Vue.js
- 后端:Django
- 功能:接收请求、展示结果
5. 关键技术点总结
- 全面覆盖输入源:包括状态、网络、存储三大类
- 精细危险函数分类:5大类20+具体函数/模式
- 实用实现方案选择:基于浏览器插件而非修改浏览器
- 双重验证机制:静态分析+动态验证相结合
- 合理结果展示:独立Web应用保证兼容性
6. 实施建议
-
输入监控:
- 对静态输入建立初始化快照
- 对动态输入实现实时监控
-
Hook实现:
- 优先覆盖所有危险函数
- 特别注意网络请求相关API
-
验证优化:
- 设计多样化测试payload
- 建立误报过滤规则库
-
结果处理:
- 实现漏洞风险等级分类
- 提供详细上下文信息辅助人工验证