.htaccess逃逸期
我最近遇到了一次RFI攻击,其中查询字符串包含大量../../../,我想修改.htaccess以防止查询字符串中出现任何../ 我一直在尝试这一点,直到我意识到这段时间需要逃避:.htaccess逃逸期,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我最近遇到了一次RFI攻击,其中查询字符串包含大量../../../,我想修改.htaccess以防止查询字符串中出现任何../ 我一直在尝试这一点,直到我意识到这段时间需要逃避: RewriteCond %{QUERY_STRING} ../ RewriteRule .* - [F] 然后我把它改成: RewriteCond %{QUERY_STRING} \.\./ RewriteRule .* - [F] 但它仍然禁止查询字符串中的任何/ 另外,如果我在{REQUEST\u URI}中
RewriteCond %{QUERY_STRING} ../
RewriteRule .* - [F]
然后我把它改成:
RewriteCond %{QUERY_STRING} \.\./
RewriteRule .* - [F]
但它仍然禁止查询字符串中的任何/
另外,如果我在{REQUEST\u URI}
中有规则,这会使{QUERY\u STRING}
多余吗
谢谢
编辑:
我通过以下方式成功地实现了这一目标:
RewriteCond %{QUERY_STRING} (\.\./)
但是,
RewriteCond%{REQUEST\u URI}\.\./
或RewriteCond%{REQUEST\u URI}(\.\.\./)
没有。我还尝试了/\.\./
&(/\.\./)
在?之后是%{QUERY\u STRING}
,因此您的规则成功地阻止了类似htis的URL:
http://domain.com/blah.php?../../../path
但是您的URI不会被检查。您可以通过修改规则来检查这两种情况:
RewriteCond %{QUERY_STRING} \.\./ [OR]
RewriteCond %{REQUEST_URI} \.\./
RewriteRule .* - [F]
{REQUEST\u URI}
会包括{HTTP\u HOST}
之后和{QUERY\u STRING}
之前的所有内容吗<代码>http://mysite/../带我去http://mysite
。不显示禁止。@Go3Team是的,在上面的示例中,%{REQUEST\u URI}
将是/blah.php
@Go3Team另外,您可以将这两个条件替换为:RewriteCond%{the\u REQUEST}\./
,这将涵盖URI和查询字符串