MediaWiki 将 CLTF 文本视为 RCE

MediaWiki treats CLTF text as RCE

求助。我在安装 MediaWiki 1.37.2 时遇到了一个奇怪的问题。我们(我和音乐家)正在尝试建立一个用于 Clan Lord Tune Format 音乐的维基(类似于 midi,但带有 a–g,“.”表示降调,“[...]”表示和弦,因此“[DFA.]”是一个可能的和弦)。然而,当我们尝试编辑或创建一个包含 CLTF 的页面时,有时 MediaWiki 会抛出异常,认为这是 RCE 攻击:

ModSecurity: Warning. Pattern match "(?:$(?:\((?:\(.\)|.)\)|\{.\})|[<>]\(.\)) at ARGS:text at ARGS:text. [file "…/apache2/template/etc/mod_sec3_CRS/REQUEST-932-APPLICATION-ATTACK-RCE.conf"] [line "366"] [id "932130"] [msg "Remote Command Execution: Unix Shell Expression Found"] [data "Matched Data:

[severity "CRITICAL"] [ver "OWASP_CRS/3.3.2"] [tag "application-multi"] [tag "language-shell"] [tag "platform-unix"] [tag "attack-rce"] [tag "paranoia-level/1"] [tag "OWASP_CRS"] [tag "capec/1000/152/248/88"] [tag "PCI/6.5.2"]

最后。

如何禁用或修改安全模块以不对此文本抛出异常并且不将其标记为 RCE 攻击以便将其保存在 wiki 中?是否有允许 CLTF 格式音乐的文本设置或格式?

提前感谢您提供解决此问题的任何答案。

*编辑:我发现了这个:https://www.mediawiki.org/wiki/ModSecurity 它说要使用 .htaccess 文件关闭安全模块。这会进入 MediaWiki 目录还是网络根目录?

**编辑 2:我们还发现了这个:https://anto.online/guides/how-to-disable-modsecurity-rules-that-cause-403-errors/ 并且不确定 OWASP_CRS 的代码是:“capec/1000/152/248/88”?

完整日志(减去用省略号删除的个人身份信息:...):

[5 月 18 日星期三 08:27:38.649383 2022] [:error] [pid 3490:tid 3408850568960] [client …] [client …] ModSecurity:警告。模式匹配 "(?:\\$(?:\\((?:\\(.\\)|.)\\)|\\{.\\})|[<>]\\(.\\))" 在 ARGS:wpTextbox1。 [文件“…/apache2/template/etc/mod_sec3_CRS/REQUEST-932-APPLICATION-ATTACK-RCE.conf”] [行“366”] [id“932130”] [消息“远程命令执行:Unix Shell 找到表达式”] [数据“匹配数据:>( (@150[e]4ppp[b]2pp[e]2pp[e]2p[d]3ppp[e]2pp|1[e]2pp[e]2p!ppp)2)4([=egb]8[e]4ppp[b]2p[=egb]8p[e]2pp[e]2p[=df#b] 8[d]3ppp[e]2p[=egb]8p|1[e]2pp[e]2p!ppp)2([=cea]8[a]4ppp[e]2p[=cea]8p[a]2pp[a]2p[=df#b]8[d]3ppp[f#]2p|1[=cea]8p[e] 2pp[e]2p![=egb]8pppp)2(([=egb]8[e]4ppp[b]2p[=egb]8p[e]2pp[e] 2p[=df#b]8[d]3ppp[e]2p|1[=egb]8p[e]2pp[e]2p![=egb]pppp)2)2( [=egb]8[e]4ppp[b]2p[=egb]8p[e]2pp[e]2p[=df#b]8[d]3ppp[e]2p[=egb]8p|1[e]2pp[e]2p!ppp)2([=cea]8[a]4ppp[e]2p[=cea]8p[a]2pp[a]2p[=df#b]8[d]3ppp[f#]2p|1[=cea..."] [严重性"严重"] [ver "OWASP_CRS/3.3.2"] [tag "application-multi"] [tag "language-shell"] [tag "platform-unix"] [tag "attack-rce"] [tag "paranoia-level/1 "] [tag "OWASP_CRS"] [tag "capec/1000/152/248/88"] [tag "PCI/6.5.2" [hostname "..."] [uri "...bardsfield/index.php"] [ unique_id“YoUQak6BVgxiylKa6BNQVgAAAAE”],引用者:https://…/bardsfield/index.php?title=…&action=edit

好的。因此,我们获得了托管 ISP 的服务器管理员豁免的所有 modSec 规则 ID(我们有 6 次安全违规)。那么,这个案子就结案了。

尝试这个排除规则(将其放入REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf):

SecRule REQUEST_FILENAME "@endsWith /index.php" \
    "id:80,\
    phase:1,\
    pass,\
    t:none,\
    nolog,\
    chain"
    SecRule ARGS:action "@streq submit" \
        "t:none,\
        chain"
        SecRule &ARGS:action "@eq 1" \
            "t:none,\
            ctl:ruleRemoveTargetById=930120;ARGS:wpTextbox1,\
            ctl:ruleRemoveTargetById=932100;ARGS:wpTextbox1,\
            ctl:ruleRemoveTargetById=932130;ARGS:wpTextbox1,\
            ctl:ruleRemoveTargetById=941100;ARGS:wpTextbox1,\
            ctl:ruleRemoveTargetById=941160;ARGS:wpTextbox1"