Wordpress / Elementor 误报的 modsecurity 规则的正确语法
Correct syntax for modsecurity rules for Wordpress / Elementor false positives
我被使用 OWASP3 规则的 WHM ModSecurity 绊倒了。
我想在主页>安全中心>ModSecurity 工具>规则列表中为规则列表创建一个自定义规则,遵循这些排除项:
<locationmatch "/wp-admin/admin-ajax.php">
SecRuleRemoveById 300013
SecRuleRemoveById 300015
SecRuleRemoveById 300016
SecRuleRemoveById 300017
SecRuleRemoveById 949110
SecRuleRemoveById 980130
</locationmatch>
<locationmatch "/wp-admin/page.php">
SecRuleRemoveById 300013
SecRuleRemoveById 300015
SecRuleRemoveById 300016
SecRuleRemoveById 300017
SecRuleRemoveById 949110
SecRuleRemoveById 980130
</locationmatch>
<locationmatch "/wp-admin/post.php">
SecRuleRemoveById 300013
SecRuleRemoveById 300015
SecRuleRemoveById 300016
SecRuleRemoveById 300017
SecRuleRemoveById 949110
SecRuleRemoveById 980130
</locationmatch>
我不确定如何使用 modsec 规则语法构建它 'SecRule / phase, etc'
欢迎任何建议。
*** 更新
以下是 ModSecurity HitList
中的触发项
921110:HTTP 请求走私攻击
请求:POST /wp-admin/post.php
动作描述:警告。
理由:模式匹配“(?:get|post|head|options|connect|put|delete|trace|track|patch|propfind|propatch|mkcol|copy|move|lock|unlock)\s+(? :\/|\w)[^\s]*(?:\s+http\/\d|[\r\n])" 在 ARGS:content.
941100:通过 libinjection 检测到 XSS 攻击
请求:POST /wp-admin/post.php
动作描述:警告。
理由:使用 libinjection 检测到 XSS。
941160:NoScript XSS InjectionChecker:HTML 注入
要求:POST /wp-admin/admin-ajax.php
动作描述:警告。
理由:模式匹配 "(?i:(?:<\w[\s\S]*[\s\/]|'"?)(?:on(?:d(?:e(?:vice (?:(?:orienta|mo)tion|proximity|found|light)|livery(?:success|error)|activate)|r(?:ag(?:e(?:n(?:ter|d) )|xit)|(?:gestur|leav)e|start|drop|over)|op)|i(?:s(?:c(?:hargingtimechange ..." at ARGS:actions.
核心规则集 Dev on Duty 在这里。由于您提供的排除列表来自其他人的博客 post,因此最好忽略它们。他们禁用核心规则集的一些关键功能(您使用的 9xxxxx 规则是 OWASP 核心规则集)所以最好不要应用这些规则排除,除非您确定您知道自己在做什么以及为什么这些排除是必需的。
您引用的“HitList”中的三个条目:您确定那些是已知良好流量的结果吗?那些 definitely 是在您尝试更新页面时出现 403 错误吗?如果您确定这些是真正的误报(而不是攻击),那么让我们继续……
误报 #1
- 导致误报的规则: 921110
- 有问题的位置: /wp-admin/post.php
- 导致误报的变量: ARGS:content
应用规则排除意味着在 WAF 的安全性中戳一个洞。我们想尽可能具体,这样我们只需要制作最小的孔。我们 只是 想让被错误阻止的交易通过,仅此而已。我们不想打开一个大洞并为攻击者提供机会。
考虑到这一点,让我们尝试采用以下方法:让我们排除 only 有问题的变量 (ARGS:content) 并排除它 only 来自导致问题的规则 (921110) 和 仅 我们看到问题发生在 (/wp-admin/post.php) 的位置.
将所有这些放在一起看起来像这样:
SecRule REQUEST_URI "@beginsWith /wp-admin/post.php" \
"id:1000,\
phase:1,\
pass,\
nolog,\
ctl:ruleRemoveTargetById=921110;ARGS:content"
误报 #2
- 导致误报的规则: 941100
- 有问题的位置: /wp-admin/post.php
- 导致误报的变量: 未知
我们不知道是什么变量导致了这里的问题。
您 可以 完全禁用位置 /wp-admin/post.php 的规则 941100,但这可能有点矫枉过正(记住我们可能的最小漏洞)重新尝试制作?)
您可能想再次检查您的日志以找出是哪个变量导致了规则 941100 的问题。
误报 #3
- 导致误报的规则: 941160
- 相关位置: /wp-admin/admin-ajax.php
- 导致误报的变量: ARGS:actions
遵循与之前相同的食谱:
SecRule REQUEST_URI "@beginsWith /wp-admin/admin-ajax.php" \
"id:1010,\
phase:1,\
pass,\
nolog,\
ctl:ruleRemoveTargetById=941160;ARGS:actions"
更多信息
有关规则排除的更多信息以及您可以自己使用和改编的大量示例,请在此处查看我们出色的文档:https://coreruleset.org/docs/configuring/false_positives_tuning/
我被使用 OWASP3 规则的 WHM ModSecurity 绊倒了。
我想在主页>安全中心>ModSecurity 工具>规则列表中为规则列表创建一个自定义规则,遵循这些排除项:
<locationmatch "/wp-admin/admin-ajax.php">
SecRuleRemoveById 300013
SecRuleRemoveById 300015
SecRuleRemoveById 300016
SecRuleRemoveById 300017
SecRuleRemoveById 949110
SecRuleRemoveById 980130
</locationmatch>
<locationmatch "/wp-admin/page.php">
SecRuleRemoveById 300013
SecRuleRemoveById 300015
SecRuleRemoveById 300016
SecRuleRemoveById 300017
SecRuleRemoveById 949110
SecRuleRemoveById 980130
</locationmatch>
<locationmatch "/wp-admin/post.php">
SecRuleRemoveById 300013
SecRuleRemoveById 300015
SecRuleRemoveById 300016
SecRuleRemoveById 300017
SecRuleRemoveById 949110
SecRuleRemoveById 980130
</locationmatch>
我不确定如何使用 modsec 规则语法构建它 'SecRule / phase, etc'
欢迎任何建议。
*** 更新 以下是 ModSecurity HitList
中的触发项921110:HTTP 请求走私攻击 请求:POST /wp-admin/post.php 动作描述:警告。 理由:模式匹配“(?:get|post|head|options|connect|put|delete|trace|track|patch|propfind|propatch|mkcol|copy|move|lock|unlock)\s+(? :\/|\w)[^\s]*(?:\s+http\/\d|[\r\n])" 在 ARGS:content.
941100:通过 libinjection 检测到 XSS 攻击 请求:POST /wp-admin/post.php 动作描述:警告。 理由:使用 libinjection 检测到 XSS。
941160:NoScript XSS InjectionChecker:HTML 注入 要求:POST /wp-admin/admin-ajax.php 动作描述:警告。 理由:模式匹配 "(?i:(?:<\w[\s\S]*[\s\/]|'"?)(?:on(?:d(?:e(?:vice (?:(?:orienta|mo)tion|proximity|found|light)|livery(?:success|error)|activate)|r(?:ag(?:e(?:n(?:ter|d) )|xit)|(?:gestur|leav)e|start|drop|over)|op)|i(?:s(?:c(?:hargingtimechange ..." at ARGS:actions.
核心规则集 Dev on Duty 在这里。由于您提供的排除列表来自其他人的博客 post,因此最好忽略它们。他们禁用核心规则集的一些关键功能(您使用的 9xxxxx 规则是 OWASP 核心规则集)所以最好不要应用这些规则排除,除非您确定您知道自己在做什么以及为什么这些排除是必需的。
您引用的“HitList”中的三个条目:您确定那些是已知良好流量的结果吗?那些 definitely 是在您尝试更新页面时出现 403 错误吗?如果您确定这些是真正的误报(而不是攻击),那么让我们继续……
误报 #1
- 导致误报的规则: 921110
- 有问题的位置: /wp-admin/post.php
- 导致误报的变量: ARGS:content
应用规则排除意味着在 WAF 的安全性中戳一个洞。我们想尽可能具体,这样我们只需要制作最小的孔。我们 只是 想让被错误阻止的交易通过,仅此而已。我们不想打开一个大洞并为攻击者提供机会。
考虑到这一点,让我们尝试采用以下方法:让我们排除 only 有问题的变量 (ARGS:content) 并排除它 only 来自导致问题的规则 (921110) 和 仅 我们看到问题发生在 (/wp-admin/post.php) 的位置.
将所有这些放在一起看起来像这样:
SecRule REQUEST_URI "@beginsWith /wp-admin/post.php" \
"id:1000,\
phase:1,\
pass,\
nolog,\
ctl:ruleRemoveTargetById=921110;ARGS:content"
误报 #2
- 导致误报的规则: 941100
- 有问题的位置: /wp-admin/post.php
- 导致误报的变量: 未知
我们不知道是什么变量导致了这里的问题。
您 可以 完全禁用位置 /wp-admin/post.php 的规则 941100,但这可能有点矫枉过正(记住我们可能的最小漏洞)重新尝试制作?)
您可能想再次检查您的日志以找出是哪个变量导致了规则 941100 的问题。
误报 #3
- 导致误报的规则: 941160
- 相关位置: /wp-admin/admin-ajax.php
- 导致误报的变量: ARGS:actions
遵循与之前相同的食谱:
SecRule REQUEST_URI "@beginsWith /wp-admin/admin-ajax.php" \
"id:1010,\
phase:1,\
pass,\
nolog,\
ctl:ruleRemoveTargetById=941160;ARGS:actions"
更多信息
有关规则排除的更多信息以及您可以自己使用和改编的大量示例,请在此处查看我们出色的文档:https://coreruleset.org/docs/configuring/false_positives_tuning/