*本文作者:6265113,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。
背景介绍:
近期客服的妹子来找我说,客户服务器被恶意上传了大量的非法页面,客户要求三天内必须确认漏洞并提出修复方案,作为伪粉丝的我正在听某某女神唱歌,突然被打断一种莫名的惆怅在心理慢慢升起,赶紧去洗了一把脸开始干活拉,理一理思路先。
分析思路:
1、非法页面所属用户是谁 ,上传时间是什么时候?
2、拥有什么权限可以上传非法页面到此目录?
3、攻击者利用什么样的漏洞可以获取这样的权限?
4、攻击者可以通过那些手段上传非法页面到服务器?
带着这些疑问一一来验证!
验证思路:
1、非法页面所有用户是 Nginx, 上传时间是晚上凌晨1点左右;
2、攻击者只需要有Web项目编辑权限即可;
3、Web项目常见的如Sql注入、文件包含、代码执行、文件上传、后门等均可以获取这样权限;
4、Web项目常用一句话木马、WebShell、反弹Shell等均可以上传到目录;
排查木马:
首先使用WebShell扫描工具(如:河马)先过一遍,一边扫描一边查看请求日志,由于项目文件较大花了将近2个多小时才扫描完成,遗憾的无论扫描结果还是请求日志并没有发现异常,推测那么就有可能通过反Shell上传、或者WebShell混淆加密扫描工具并不能发现,看来只能通过手动进行了,经过1个多小时奋战最后发现一个异常的PHP文件,攻击者利用PHP文件在Redis里面执行反弹shell 如图:
有了IP和端口后就好办了,只要确认了近期有这个IP的请求日志基本就可以确认,攻击者通过反弹Redis反弹Shell上传了非法页面,但是分析近几天的防火墙的日志分析并没有发现此IP的任何请求日志,推测攻击者在获得反弹Shell后肯定进行了提权、或者部署其他的控制服务器手段;
经过几个小时的努力和对流量层层过滤,最终确认了一个IP、一个域名比较异常(如图1)且近期出现大量的链接,在相同的时间内多次链接,进一步对IP、域名进行分析发现发起该进程的文件是Bash看来又是一个反弹shell,通过查询发现有7个Bash进程运行者均是Nginx用户 (如图2):
图1
图2
既然是 Bash 发起的首先确认以下Bash是否被恶意修改,通过查看父进程发现发起的 bash 文件已被删除,无法进一步确认,只能先把bash进程kill掉,一边观察,一边查询调度任务是否存在自动生成进程;
通过观察和查询并没有发现该类进程运行,推测攻击者使用Redis反弹Shell链接后创建了多条隧道来进行控制服务器,为了避免被发现Redis反弹Shell,故用来上传非法页面的反弹shell使用的并不是同一个IP,把Bash进程停止掉以后,经过一段时间观察后并没有发现异常的Bash再次运行,由此确认攻击者避免被发现并没有做过多的手段;
确认没有异常的进程后清理Redis反弹Shell,删除后在1个小时后发现此文件又被再次生成,推测攻击者有可能利用漏洞,在此写入或者项目文件里面有自动生成机制,看来又是一个烟雾弹,对请求日志、项目文件、数据库扫描,最终发现攻击者利用网站后台其中一个功能写入此段代码到数据库如图:
看来攻击者是拿到了网站后台权限,在对网站后台日志排查后最终确认攻击者是利用xxx账户登入后台并写入反弹Shell代码如图(模糊了页面):
经过2天多的努力日志最终确认到非法登录时间,登录用户、IP并移交相关部门处理,不辱使命提前完成任务,晚上要要好好庆祝以下,买5块钱的烤串犒劳以下自己。
总结:
此次事件最终确认是从后台密码泄漏导致,不管有意还是无意,密码一定要提高复杂度并且不定期的更换密码账户信息,如果可以后台可以限制IP,或者地域限制,非常感谢您能抽出时间来阅读,有不足之处还请多多指教!
*本文作者:6265113,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。