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