我遇到了modsecurity的问题,我想知道是否有人可以提供帮助。我遇到了将文件上传到我的应用程序的问题,只要有问题的文件在文件名中有引号。最终我将进行客户端验证,它将提醒用户他们试图上传的文件名中的引号并告诉他们重命名,但是现在我需要修改我的modsecurity设置以忽略该特定检查。
modsecurity规则是:
SecRule MULTIPART_STRICT_ERROR "!@eq 0" \
"phase:2,t:none,log,deny,msg:'Multipart request body \
failed strict validation: \
PE %{REQBODY_PROCESSOR_ERROR}, \
BQ %{MULTIPART_BOUNDARY_QUOTED}, \
BW %{MULTIPART_BOUNDARY_WHITESPACE}, \
DB %{MULTIPART_DATA_BEFORE}, \
DA %{MULTIPART_DATA_AFTER}, \
HF %{MULTIPART_HEADER_FOLDING}, \
LF %{MULTIPART_LF_LINE}, \
SM %{MULTIPART_SEMICOLON_MISSING}, \
IQ %{MULTIPART_INVALID_QUOTING}, \
IH %{MULTIPART_INVALID_HEADER_FOLDING}, \
IH %{MULTIPART_FILE_LIMIT_EXCEEDED}'"
我得到的错误是:
[2016-10-11T16:08:06.8336+01:00] [OHS] [ERROR:32] [OHS-9999] [blah.c] [host_id: blah-web-kc1d] [host_addr: 1.2.3.4] [tid: 1724] [user: SYSTEM] [ecid: 00ibIu6vODDF4ETzA8m3SD0000_^001B9G] [rid: 0] [VirtualHost: main] [client 1.2.3.4] ModSecurity: Access denied with code 403 (phase 2). Match of "eq 0" against "MULTIPART_STRICT_ERROR" required. [file "E:/blah/security/<span class="skimlinks-unlinked">blah_base_rules.conf</span>"] [line "65"] [msg "Multipart request body failed strict validation: PE 0, BQ 0, BW 0, DB 0, DA 0, HF 0, LF 0, SM , IQ 1, IH 0, IH 0"] [hostname "<span class="skimlinks-unlinked">www.dev.uk</span>"] [uri "/pls/dev/blah_details_form.process_blah"] [unique_id "ZOMG!<span class="skimlinks-unlinked">ROFL.TL;DR</span>"]
IQ 1表明它的无效引用是有道理的。如何判断modsecurity,在检测到无效引用时不阻止,而不禁用其余规则?
由于
P.S。我知道允许文件名中的引号可能会引入SQL注入,但我们并不担心这是因为我无法进入。
答案 0 :(得分:0)
只需将当前规则(检查整个MULTIPART_STRICT_ERROR变量)替换为每个单独变量的单独规则,将拒绝更改为警告您不想拒绝的一个变量:
SecRule REQBODY_PROCESSOR_ERROR&#34;!@ eq 0&#34; \ &#34;阶段:2,t:无,日志,拒绝,消息:&#39;多部分请求正文\失败严格 验证:\ PE%{REQBODY_PROCESSOR_ERROR}&#39;&#34;
SecRule MULTIPART_BOUNDARY_QUOTED&#34;!@ eq 0&#34; \ &#34;阶段:2,t:无,日志,拒绝,消息:&#39;多部分请求正文\失败严格 验证:\ BQ%{MULTIPART_BOUNDARY_QUOTED}&#39;&#34;
...等
SecRule MULTIPART_INVALID_QUOTING&#34;!@ eq 0&#34; \ &#34;阶段:2,t:无,日志,警告,消息:&#39;多部分请求正文\失败严格 验证:\ IQ%{MULTIPART_INVALID_QUOTING}&#39;&#34;
SecRule MULTIPART_INVALID_HEADER_FOLDING&#34;!@ eq 0&#34; \ &#34;阶段:2,t:无,日志,拒绝,消息:&#39;多部分请求正文\失败严格 验证:\ IH%{MULTIPART_INVALID_HEADER_FOLDING}&#39;&#34;
...等
注意较新版本的ModSecurity(自2.7起)需要一个唯一ID,因此,如果您的规则中包含您未在问题中显示的ID,请确保在创建许多规则时将其设为唯一。
最后,还可以检查一个规则中的所有变量,或者让规则对值进行求和(或将它们作为一个大型链式规则的一部分,其中值类似地求和)然后检查sum = 0但是分开规则可能会更简单,更容易遵循。
答案 1 :(得分:0)
我通过重命名要上传的文件名来修复此问题,因为它包含一些无法识别的模式。
如何解决此问题?
简单地说,重命名文件以从文件名中删除有问题的特殊字符
或者(在/etc/{path}/mod_security.conf中通过注释“SecRule MULTIPART_STRICT_ERROR”行来禁用此安全规则!@eq 0“\”或.htaccess文件 - 不建议全部使用)
这个错误是怎么造成的?
此错误是由mod_security阻止潜在的恶意上载引起的。虽然它可能完全无害,但mod_security无法知道它是否无害。
通常,所讨论的内容是一个正在上传的文件,其中包含一个特殊字符,例如文件名中的单引号或双引号,攻击者经常使用该引号将恶意脚本注入网站。