SuperAPI AI 工具集

exploiting-prototype-pollution-in-javascript

安全与审计

查看项目

更新于 10-15 15:56

技能介绍

用途

本技能用于在授权安全测试中检测和利用 JavaScript 原型链污染(Prototype Pollution)漏洞,目标对象包括 Node.js 应用与重度使用 JavaScript 的 Web 应用。适用于测试接受深度合并 JSON 对象的 API、审查对象合并/克隆/扩展操作,以及评估 npm 包中的原型污染 gadget。

主要能力

  • 污染源识别:客户端 URL 参数(?__proto__[key]=value、?constructor[prototype][key]=value)、hash 片段、postMessage;服务端 JSON 请求体中的 __proto__ 与 constructor.prototype。
  • 客户端利用:结合 gadget 实现 DOM XSS,涉及 innerHTML、jQuery $.html()、transport_url 等属性,以及通过污染绕过净化器(如 allowedTags、tagName)。
  • 服务端利用:通过 child_process、EJS、Handlebars、Pug 等 gadget 实现远程代码执行;通过污染 isAdmin、role、verified 等属性实现认证与授权绕过;通过污染 schema 校验属性绕过输入验证;通过污染 toString/valueOf 造成拒绝服务。
  • 自动化检测:使用 ppfuzz、Nuclei 模板、Burp Scanner 服务端检测,以及基于状态码反射(如污染 status 为 510)和错误/时序的探测技术。

使用方式

  1. 识别并验证污染源:在浏览器控制台检查 ({}).polluted,或用 curl 构造 JSON 请求体测试服务端。
  2. 定位 gadget:借助 DOM Invader 自动检测源并扫描 gadget,或依据已知属性链条手动构造。
  3. 构造利用链:将源与 sink 连接,实现 XSS、RCE、权限提升等效果。
  4. 自动化扫描:运行 ppfuzz、Nuclei 或 Burp Scanner 的对应检查项。
  5. 输出评估报告:记录目标、类型、影响、源—gadget—sink 对应表及修复建议。

适用场景

  • DOM XSS(如通过分析脚本的 transport_url 注入)。
  • 通过模板引擎 gadget 实现 RCE。
  • 管理员权限提升。
  • JSON Schema 校验绕过。
  • 拒绝服务。

前置条件

Burp Suite(含 DOM Invader 扩展)、Node.js 开发环境、对 JavaScript 原型链与对象继承的理解、常见污染 gadget 知识。

限制与法律声明

技能明确声明仅限授权安全测试与教育用途;未经系统所有者书面许可的使用属违法,可能违反计算机欺诈相关法律。

修复建议

使用 Object.create(null) 创建配置对象、冻结 Object.prototype、过滤 __proto__ 与 constructor 键、用 Map 替代普通对象、更新存在漏洞的 npm 包。