如何在 Modsecurity Rule 中编辑正则表达式
How to edit regular expression within Modsecurity Rule
我需要修改以下规则中的特定正则表达式(ID:932130 - 文件REQUEST-932-APPLICATION-ATTACK-RCE.conf)而不改变原来的文件:
SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/|REQUEST_COOKIES_NAMES|ARGS_NAMES|ARGS|XML:/* "@rx (?:$(?:\((?:\(.*\)|.*)\)|\{.*\})|[<>]\(.*\))" \
所以关键是我需要从 ARGS 变量中排除正则表达式的最后一部分 - [<>](.*))
我在 RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf 中尝试使用 SecRuleUpdateTargetById 932130 "!ARGS:/[<>]\(.*\)/"
命令,但没有成功。
感谢您的帮助。
CRS Dev-On-Duty 在这里。您不能更改此规则的正则表达式。
如果您必须调整 OWASP ModSecurity 核心规则集 (CRS) 规则,您有以下可能性:
使用 SecRuleRemoveById 932130
完全删除规则 -> 在 CRS 之后包含 -> 不推荐,有更细粒度的可能性,如:
删除特定参数的规则SecRuleUpdateTargetById 932130 "ARGS:yourArg"
-> 在 CRS 之后包含
删除特定参数的规则以及路径等附加条件 -> 在 CRS 之前包含
SecRule REQUEST_URI "@beginsWith /my/path"
“phase:1,nolog,pass,id:10000,ctl:ruleRemoveTargetById=932130;ARGS:yourArg”
如果您想了解更多关于 CRS 中误报调整的信息,我强烈推荐 CRS co-leaders 教程,尤其是这个:https://www.netnea.com/cms/apache-tutorial-8_handling-false-positives-modsecurity-core-rule-set/。
感谢您的回复。
我通过在 RESPONSE-999-ECLUSION-RULES-AFTER.CRS.conf.SecRuleUpdateTargetById 932130 "!ARGS"
中使用命令 SecRuleUpdateTargetById 932130 "!ARGS"
从 932130 规则中删除 ARGS 解决了这个问题。 =13=]
之后,我在我的自定义文件(在 CRS 之前)中创建了一个新规则,与 932130 相同,但仅使用 ARGS 变量且没有正则表达式 [<>](.*))
。所以原文件没有手动修改
在这种情况下,变量包含 table 名称和字段(示例 - ARGS[equipment][description] 是动态的 - 更多 tables 具有相同的字段。描述字段具有 HTML 段落标记 <p>
,并且每当用户在方括号中键入内容时,如 (test),它会触发规则 932130 和匹配值类似于 >(test).
我需要修改以下规则中的特定正则表达式(ID:932130 - 文件REQUEST-932-APPLICATION-ATTACK-RCE.conf)而不改变原来的文件:
SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/|REQUEST_COOKIES_NAMES|ARGS_NAMES|ARGS|XML:/* "@rx (?:$(?:\((?:\(.*\)|.*)\)|\{.*\})|[<>]\(.*\))" \
所以关键是我需要从 ARGS 变量中排除正则表达式的最后一部分 - [<>](.*))
我在 RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf 中尝试使用 SecRuleUpdateTargetById 932130 "!ARGS:/[<>]\(.*\)/"
命令,但没有成功。
感谢您的帮助。
CRS Dev-On-Duty 在这里。您不能更改此规则的正则表达式。
如果您必须调整 OWASP ModSecurity 核心规则集 (CRS) 规则,您有以下可能性:
使用
SecRuleRemoveById 932130
完全删除规则 -> 在 CRS 之后包含 -> 不推荐,有更细粒度的可能性,如:删除特定参数的规则
SecRuleUpdateTargetById 932130 "ARGS:yourArg"
-> 在 CRS 之后包含删除特定参数的规则以及路径等附加条件 -> 在 CRS 之前包含
SecRule REQUEST_URI "@beginsWith /my/path"
“phase:1,nolog,pass,id:10000,ctl:ruleRemoveTargetById=932130;ARGS:yourArg”
如果您想了解更多关于 CRS 中误报调整的信息,我强烈推荐 CRS co-leaders 教程,尤其是这个:https://www.netnea.com/cms/apache-tutorial-8_handling-false-positives-modsecurity-core-rule-set/。
感谢您的回复。
我通过在 RESPONSE-999-ECLUSION-RULES-AFTER.CRS.conf.SecRuleUpdateTargetById 932130 "!ARGS"
中使用命令 SecRuleUpdateTargetById 932130 "!ARGS"
从 932130 规则中删除 ARGS 解决了这个问题。 =13=]
之后,我在我的自定义文件(在 CRS 之前)中创建了一个新规则,与 932130 相同,但仅使用 ARGS 变量且没有正则表达式 [<>](.*))
。所以原文件没有手动修改
在这种情况下,变量包含 table 名称和字段(示例 - ARGS[equipment][description] 是动态的 - 更多 tables 具有相同的字段。描述字段具有 HTML 段落标记 <p>
,并且每当用户在方括号中键入内容时,如 (test),它会触发规则 932130 和匹配值类似于 >(test).