我尝试创建一个规则,允许传递任何包含 scrip%u0074 (t 的 Unicode 值)的参数值。我创建了这样一个规则:
SecRule REQUEST_URI "@contains scrip%u0074" \
"id:1234567,phase:1,pass,t:none,t:urlDecodeUni,logdata:'Bypass script',ctl:ruleRemoveTargetByTag=attack-xss,ctl:ruleRemoveTargetById=920220"
但是其他规则仍然阻止它。当我删除带有 t:... 的部分时,它可以工作,但发送到 Web 应用程序的值不是 script(Unicode 被 utf-8 替换),但仍然是 Unicode。
我们如何改进该规则以避免被其他规则检测/阻止并将 unicode 替换为 utf-8?
CRS 开发人员在这里值班。根据用户输入删除部分 OWASP CRS 是危险的。最好只从规则中删除特定参数。 什么论据包含这个
scrip%u0074
?你能认出他们吗?
ctl:ruleRemoveTargetByTag=attack-xss
和 ctl:ruleRemoveTargetById=920220
不起作用,因为您没有指定要删除的目标,您只指定了规则。所以你应该使用 ctl:ruleRemoveByTag=attack-xss
和 ctl:ruleRemoveById=920220
来代替。
请参阅此处:https://github.com/owasp-modsecurity/ModSecurity/wiki/Reference-Manual-(v2.x)#ctl