我需要修改以下规则(ID:932130 - 文件REQUEST-932-APPLICATION-ATTACK-RCE.conf)中的特定正则表达式,而不更改原始文件:
SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/|REQUEST_COOKIES_NAMES|ARGS_NAMES|ARGS|XML:/* "@rx (?:\$(?:\((?:\(.*\)|.*)\)|\{.*\})|[<>]\(.*\))" \
所以重点是我需要从 ARGS 变量中排除正则表达式的最后一部分 - [<>](.*))
我尝试过 SecRuleUpdateTargetById 932130 "!ARGS:/[<>]\(.*\)/"
命令 RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf 但没有运气。
非常感谢您的帮助。
最佳答案
感谢您的回复。
我通过使用命令 SecRuleUpdateTargetById 932130 "!ARGS"
从 932130 规则中删除 ARGS 解决了这个问题在 RESPONSE-999-ECLUSION-RULES-AFTER.CRS.conf 内。
之后,我在自定义文件中(在 CRS 之前)创建了一条与 932130 相同的新规则,但仅使用 ARGS 变量且不使用正则表达式 [<>](.*))
。所以原始文件没有被手动修改过。
在这种情况下,变量保存表名称和字段(例如 - ARGS[设备][描述],它是动态的 - 更多具有相同字段的表。描述字段具有 HTML 段落标记 <p>
,并且每当用户在括号中输入一些内容,例如 (test),它会触发规则 932130 并且匹配的值类似于 (test).
关于regex - 如何在 Modsecurity 规则中编辑正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72463056/