如何在 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).