揭秘原型污染漏洞利用工具
引言
原型污染近年来已成为Web安全领域的热门漏洞。当攻击者利用JavaScript原型继承特性修改对象原型时,就可能注入恶意代码或改变应用程序行为,导致敏感信息泄露、类型混淆漏洞,甚至在某些条件下实现远程代码执行。
|
|
理解漏洞利用需要掌握两个核心概念:
污染源(Source):指未经验证就执行递归赋值的代码片段,主要分为:
- 自定义代码:开发者编写的未充分验证用户输入的代码
- 存在漏洞的第三方库
|
|
利用链(Gadget):指利用原型污染漏洞实现攻击的代码方法,通过操纵基础对象原型来改变应用逻辑。
现有研究现状
客户端原型污染已有丰富研究和工具,如PP-Finder CLI和Burp Suite的DOM Invader。但服务端研究存在明显不足:
- PortSwigger的研究缺乏实际漏洞利用方案
- YesWeHack的指南虽提供有用gadgets但缺乏自动化发现方法
工具介绍
我们开发了Burpsuite插件"Prototype Pollution Gadgets Finder",其核心工作流程是:
- 从请求中获取JSON对象
- 尝试用预定义gadgets污染所有可能字段
- 检测后自动清除污染以避免系统影响
工具采用带外(OOB)检测技术,即使污染属性未被立即使用也能被发现。
Gadget发现方法论
我们通过系统分析Node.js库文档发现可利用参数,并定义标准化gadget描述格式:
|
|
Axios库案例
通过操纵baseURL
和proxy
参数可实现SSRF和请求劫持:
|
|
Nodemailer库案例
利用cc
和bcc
参数可拦截邮件:
|
|
我们鼓励安全社区贡献新的gadgets,共同完善这一工具。完整安装指南和使用说明请访问我们的GitHub仓库。