在表单字段中发布带有“on”或以“on”开头的任何单词作为最后一个单词的表单,导致来自此规则阻止的 aws waf 的 XSS 阻止正文在解码为 URL 后包含跨站点脚本威胁,例如“仅二十" or " online" or "check on" 所有结果都在 XSS 块中
这些似乎是正常的词,为什么它会被 xss 阻止?
但最后有空格它不会阻止例如“仅二十”或“在线”或“检查”这些作品
在表单字段中发布带有“on”或以“on”开头的任何单词作为最后一个单词的表单,导致来自此规则阻止的 aws waf 的 XSS 阻止正文在解码为 URL 后包含跨站点脚本威胁,例如“仅二十" or " online" or "check on" 所有结果都在 XSS 块中
这些似乎是正常的词,为什么它会被 xss 阻止?
但最后有空格它不会阻止例如“仅二十”或“在线”或“检查”这些作品
我们昨晚刚开始使用 WAF,一夜之间就阻止了几十个合法请求。
果然,每个 XSS 规则在请求正文中都有字符串“on”,然后是其他字符。
我想知道它是否试图检测一百个左右onerror
,onload
以及其他 javascript 事件?感觉它可能比匹配on
后跟“一些东西”更具体......
这里唯一的解决方案似乎是对我们禁用此规则 - 否则它将成为我们误报的持续来源,这使得它毫无价值。
您可以尝试升级到 WAFv2,但是与字符“on”+“&”的某些组合仍可能导致误报。导致问题的规则是带有 URL 解码的主体上的 XSS。因此,如果您的表单数据是使用 url 编码提交的,您可能会遇到问题。如果您将表单作为 JSON 数据提交或使用 MIME multipart/form-data 它应该可以工作。我有 2 个应用程序,一个使用 fetch api 使用 javascript XHR 提交 formdata,它使用 multipart/form-data,另一个使用 JSON 数据没有被阻止。
否则,您必须调整您的 XSS 规则或将该特定规则设置为计数。我不会发布如何调整以免有人潜伏在这里并试图搞笑。
您添加空格的建议也有效,后端可以删除空格或保持原样。有点烦人,但它有效。
CrossSiteScripting_BODY
这是AWS 作为规则集的一部分提供的 WAFv2 规则的一个已知问题AWSManagedRulesCommonRuleSet
。该规则将阻止任何匹配的输入on*=*
在具有多个输入的表单中,任何包含“ on
”的文本都可能会以误报触发此规则,例如a=three two one&b=something else
2021 年 9 月,我向 AWS Enterprise Support 投诉了这一明显违反的规则,他们回答说:“在有疑问时阻止请求比允许恶意请求更好”,我强烈不同意。支持工程师还建议我可以尝试将触发此规则的输入列入白名单,这对于任何重要的 Web 应用程序都是完全不切实际的。
我相信该规则试图阻止包含脚本的 XSS 攻击onerror=eval(src)
,请参阅https://cheatsheetseries.owasp.org/cheatsheets/XSS_Filter_Evasion_Cheat_Sheet.html#waf-bypass-strings-for-xss
我建议从您的 WAF 中排除所有黑盒 CrossSiteScripting 规则,因为它们不适合目的。