Express Prototype Pollution Gadgets
最后更新于
最后更新于
WhiteIntel是一个由暗网支持的搜索引擎,提供免费功能,用于检查公司或其客户是否受到窃取恶意软件的侵害。
WhiteIntel的主要目标是打击由信息窃取恶意软件导致的账户劫持和勒索软件攻击。
您可以访问他们的网站并免费尝试他们的引擎:
有关更多详细信息,请参阅原始研究
在使用JSON内容类型响应并反映JSON的Express应用程序中:
在这些情况下,使用 JSON 内容类型通常不会导致 XSS。然而,通过原型污染,我们可以混淆 Express 以提供 HTML 响应。 这种漏洞依赖于应用程序使用**res.send(obj)
** 并使用 body 解析器与 application/json 内容类型。
通过污染 body
和 _body
属性,可以导致Express提供HTML内容类型并反映_body
属性,从而导致存储型XSS。
可以让express 渲染UTF-7内容:
以下的 PP 将使 JSON 内部的属性多出一个空格,而不会破坏功能:
然后反射的 JSON 将如下所示:
以下的 PP 工具将会让服务器发送回 HTTP 头部:Access-Control-Expose_headers: foo
需要安装CORS模块
使用以下有效载荷,可以从OPTIONS响应中隐藏一个方法:
可以使用以下 PP 负载更改返回的状态码:
当您使用原始值(如字符串)分配给原型时,会产生无操作操作,因为原型必须是一个对象。如果您尝试将原型对象分配给Object.prototype
本身,这将引发异常。我们可以利用这两种行为来检测原型污染是否成功:
当一个应用程序在其响应中包含一个对象时,创建一个与 __proto__
并列的不寻常名称的属性可能会很有见地。具体来说,如果响应中只返回了不寻常的属性,这可能表明应用程序存在漏洞:
此外,在使用诸如Lodash之类的库的情况下,通过原型污染(PP)和直接在对象内部设置属性,提供了另一种诊断方法。如果在响应中省略了这样的属性,则表明Lodash在合并之前验证了目标对象中属性的存在:
在 Express 中有一个选项,允许你从查询字符串参数创建对象。 你绝对可以在一个漏洞链中使用它来利用原型污染漏洞。
?foo.bar=baz
在 Node 中创建一个对象。
WhiteIntel 是一个由暗网支持的搜索引擎,提供免费功能,用于检查公司或其客户是否受到窃取恶意软件的侵害。
WhiteIntel 的主要目标是打击由信息窃取恶意软件导致的账户劫持和勒索软件攻击。
您可以访问他们的网站并免费尝试他们的引擎: