shell脚本劫持了我的.htaccess文件

时间:2016-07-05 17:52:07

标签: php apache .htaccess shell

昨晚,一个shell脚本能够执行一些修改我的.htaccess文件的linux命令,从而简单地重定向到广告网站。我已经从.htaccess中删除了重定向,但我正在尝试采取预防措施,以免再次发生这种情况。

我从我的服务器查看了访问日志,它显示了以下条目:

partners.xxxxxxxx.com-Jul-2016.gz:184.168.192.26 - - [03/Jul/2016:10:40:01 -0500] "GET /e5nbwvcxef.php HTTP/1.1" 200 61 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0 SeaMonkey/2.26"
partners.xxxxxxxx.com-Jul-2016.gz:69.64.37.219 - - [03/Jul/2016:10:40:03 -0500] "POST /e5nbwvcxef.php HTTP/1.1" 200 20 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0 SeaMonkey/2.26"

我记得很久以前如果用户有这种访问权限就很糟糕。任何人都可以了解我可以做些什么来保护我的服务器,以便他们无法上传这样的东西?谢谢!

2 个答案:

答案 0 :(得分:2)

首先,您要阻止访问.htaccess文件,您可以使用以下方式执行此操作:

<Files .htaccess>
order allow,deny
deny from all
</Files>

然后,您可以实际重命名.htaccess文件以帮助隐藏它免受潜在威胁,这并不意味着它们无法找到它......但它肯定会让它变得更难!

AccessFileName thehtfile.ess

然后,您可以使用多种方法来帮助预防&#34; hacks&#34;。首先,阻止URL中包含<script>标记的所有脚本:

RewriteEngine On

RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]

然后,您可以阻止尝试通过网址设置PHP Globals变量的任何脚本:

RewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2}) [OR]

阻止尝试通过网址使用base64_encode的任何脚本:

RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]

阻止尝试通过网址修改a_REQUEST变量的任何脚本:

RewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2})

最后,禁止在目录中使用脚本..

AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI

有很多不同的选择,我想还有更多!这些是我在.htaccess中使用的一些内容。我希望这些有助于防止将来发生类似攻击!它确实很糟糕:/

答案 1 :(得分:1)

应该有很多要点[MySQL注入,......]但非常有效

  • wwwrun用户无法写入包含脚本的目录。
  • 只有root用户才能访问
  • .htaccess - 如果可能的话。至少,所有者不得与wwwrun用户匹配。

wwwrun user是Apache运行的用户。