我们的REST API托管在Azure API管理(内部VNET模式)中,只能通过网站管家应用网关(网站管家v2 SKU)从互联网访问,并在网站管家中启用OWASP CRS3.1规则。然而,有一项渗透测试观察到,黑客可以通过调用Content-Type标头为"application/xml“的POST API来绕过网站管家规则,但仍在请求正文中发送恶意JSON有效负载。在这种情况下,请求不会被WAF拦截,并且API返回HTTP 200,这与Content-Type被发送为"application/json“的情况不同,在这种情况下,相同的恶意有效负载被WAF返回403 (禁止)阻止。有没有办法在App Gateway/WAF拦截恶意JSON负载,即使请求头Content-Type header是"application/xml"?或者,是否需要在API端注意此验证,即传入请求是否具有"application/json“以外的Content-Type?
发布于 2021-11-02 22:18:47
如果这只是一个头的问题,你可以只允许application/json或只阻止application/xml的create a custom rule。
修改该页面中的示例,这将阻止任何不包含application/json的内容
{
"customRules": [
{
"name": "requirejson",
"ruleType": "MatchRule",
"priority": 2,
"action": "Block",
"matchConditions": [
{
"matchVariable": "RequestHeaders",
"Selector": "Content-Type",
"Operator": "Contains",
"NegationConditon": true,
"matchValues": [
"application/json"
]
}
]
}
]
}将否定条件设置为true会将其从==转换为!=规则,就像在if Content-Type does not contain application/json中一样。尽管请记住,这将适用于“正确设置”标头,但如果标头设置为仅包含匹配字符串的任何内容,则此规则仍允许进一步处理。
对有效负载的完整解释是here。
https://stackoverflow.com/questions/69801193
复制相似问题