最近一直在研究服务器安全的问题,真正体验了什么是一个老鼠坏锅汤的真实例子。
因为有个同事在某站下载了一套帝国cms仿逗游网的源码,安装在了服务器上。导致服务器上所有的大网站以及有权重有流量的站全被被劫持。
曾经也有过被劫持的情况,不过都是在另外一台服务器,找到后门删了就没了。这次就不是了,严重了!
服务器一共200多个网站,6个高权重网站被黑,都被插入了劫持的js代码,而且全是在主页,可能其他小站黑客看不上,也可能只是埋了伏笔等以后再攻击。 而且是春风吹又生。
昨天大量查看网站的访问日志,因为我们的系统一般只有后台才有post请求,再加上前台都是伪静态,而且大概的时间短我也知道就10个小时内发生的,所以我范围筛选就好了很多。我就注重查找1.post请求的、2.访问php文件的。
然后根据访问地址,还真找到了隐藏的文件,伪装的很像,而且文件的创建时间都被伪装了。
这段代码是个POST上传接口,跟正常代码无异,就是一个post上传,然后把大马上传到服务器上做来提权。
这段代码就恐怖了,正是大马文件,他有密码我不知道是什么,但是我把密码删掉之后越墙进入,看到的景象.......
全部的文件都一目了然呈现在这里,而且都是通过php操作,这种挂马根本防不胜防,可怕的是他可以进入上级目录。因为无法区分是恶意请求还是自己站的请求,毕竟这些站的源码不是我们自己的。(自己开发的站 另当别论,只需要增加中间件验证所有请求真伪就好)
这种请求一般都是在国外,什么乌兰多、菲律宾、美国等等,昨天我的nginx禁止了国外ip访问,但是好像对方也很聪明。拿他没办法
这种低级的挂马今天上午又加了2重限制,
1.所有文件权限设置为644。
那么挂马即使你能访问那么你也无法修改删除我的代码。
2.nginx上传限制
因站点模板太多,没有时间和精力去一一划分自己的上传接口,所以增加了上传日志,每个上传的post请求全部记录。
3.时效性改变文件属性(chattr)
写了一个脚本定时锁定index.html index.php。因为对方只需要首页,其他页面对他们用处不大,毕竟对方不是个聪明的对手。如果是我 我连数据库都拿到,直接sql里注入生成文件的代码。 可惜你不再有机会了
列一下sh文件
#!/bin/bash
for file in `ls /home/wwwroot/www`
do
htmlpath="/home/wwwroot/www/"$file"/index.html"
phppath="/home/wwwroot/www/"$file"/index.php"
if [ -f $htmlpath ];then
chattr +i $htmlpath
elif [ -f $phppath ];then
chattr +i $phppath
fi
done
4.禁止国外ip访问
国外ip列表:可下载下面的配置文件
https://download.youkuaiyun.com/download/helloworld_dream/11989909
把他作为nginx的配置文件 在nginx配置文件最后加上
include allowip.conf;
即可禁止国外ip访问,毕竟搞这行业的都在国外。
5.禁用eval函数(他确实不是一个函数 - - )
上片文章也讲过了如何禁用eval函数,这种东西百度一大把,但是适不适合自己很重要,毕竟有的系统是会使用到eval的。
eval只可以避免一句话木马,但是无法避免上传接口以及大马文件。
后续再更