在 crs 3.2 中,有一条 ID=941320 的规则,它阻止 CKEditor 在 drupal 中工作。
CKEditor 是一个所见即所得的编辑器,它生成 html 并尝试将其上传到服务器。带有 crs 的 Modsecurity 3 会阻止此类请求。
为了减少误报,我确实克隆了原始规则 941320 并修改了 html 标签列表。现在我的自定义规则保存在 RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf 文件中,并使用专用的唯一规则 ID。新的自定义规则对仍然被禁止的 html 标签的减少子集进行操作。一些常见的 html 标签已从黑名单中删除,应该可以通过。
对于像“/private-message/create”这样的 URI,如何用我的规则 9001121 替换规则 941320?
答案1
首先,您必须创建一个排除项,以避免941320
在 URI 是您给出的时候激活规则:
SecRule REQUEST_URI "@streq /private-message/create" \
"id:9001120,\
phase:1,\
pass,\
nolog,\
ctl:ruleRemoveById=941320"
然后如果您想控制该端点的请求,您可以创建一个链式规则:
SecRule REQUEST_URI "@streq /private-message/create" \
"id:9001121,
phase:2,
block,\
capture,\
t:none,t:urlDecodeUni,t:jsDecode,t:lowercase,\
msg:'Possible XSS Attack Detected - HTML Tag Handler',\
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}',\
tag:'application-multi',\
tag:'language-multi',\
tag:'platform-multi',\
tag:'attack-xss',\
tag:'OWASP_CRS',\
tag:'capec/1000/152/242/63',\
tag:'PCI/6.5.1',\
tag:'paranoia-level/2',\
ver:'OWASP_CRS/3.3.0',\
severity:'CRITICAL',\
chain"
SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/|!REQUEST_COOKIES:/_pk_ref/|REQUEST_COOKIES_NAMES|ARGS_NAMES|ARGS|XML:/* "@rx <your-modified-pattern...\W" \
setvar:'tx.xss_score=+%{tx.critical_anomaly_score}',\
setvar:'tx.anomaly_score_pl2=+%{tx.critical_anomaly_score}'"
或类似的东西...您可以看到最后一个链式规则的第二部分与原始规则相同。不要忘记将您自己的模式放入论证中。
您必须将其放入您的自定义排除规则集中,例如REQUEST-903.9010-custom-exclusions.conf
,并将其包含到您的服务器中(*.conf
就足够了)