账号密码
zgsf/zgsf
【1】攻击者的两个ip地址
首先拿到靶机先开启环境记得先赋予权限:
chmod 777 /home/zgsf/桌面/开启环境.sh
/home/zgsf/桌面/开启环境.sh
登录root账户看看历史命令有些什么:
看这样子攻击者可能是写了一个恶意脚本upgrade.sh
打开发现是乱码什么也没有。
下面攻击者还去操作了system.log,我们不知道这个日志文件的具体位置,我们用find命令去找一下:
find / -name 'system.log' 2>/dev/null #这个会隔绝因权限问题的报错
find / -name 'system.log'
找到该文件路径了,直接去访问:
vim /home/.system_config/system.log
发现这个是一个 GoTTY 服务的运行日志。GoTTY 是一个将命令行工具转换为 Web 服务的工具,允许用户通过浏览器访问终端会话。
只发现一个外部IP访问一些非常规目录
所以第一个攻击者IP应该是: 192.168.31.64
也可以通过Linux的任务计划程序去看看:
cat /etc/crontab
只有这一个任务计划程序,这应该是攻击者留下的恶意脚本,我们去打开看看:
可以看到是反弹shell脚本,更加确定了攻击者IP: 192.168.31.64
我当时查看靶机IP的时候发现有docker的网卡信息:
所以攻击者可能还会通过docker发起攻击
我们去查看一下docker容器状态:
docker ps -a
可以看到容器有: webdav,phpmyadmin,think,nginx,mysql,rabbitmq
其中thinkphp的漏洞风险更大,所以我们优先去排查该容器
进入thinkphp的docker容器进行排查:
sudo docker exec -it [容器ID] sh
sudo docker exec -it 1d1 sh #进入phpthink的容器 这里只输入了三位容器id
thinkphp框架的默认日志路径是:
ThinkPHP 5.1/6.x/7.x/8.x runtime/log/
ThinkPHP 3.x/5.0 runtime/Logs/
跟着路径下去访问:
可以看到这个ip在对phpthink框架进行恶意操作,执行远程命令,显示phpinfo
所以这是第二个攻击IP: 192.168.31.251
【2】flag1
排查了一圈没什么思路,继续回到一开始查看的历史命令:
攻击者还有一个动作:在/home目录下面搞了一个隐藏文件.system_config
我们去看一下:
cd /home/
ls -a 可以显示出隐藏文件
可以看到这里有很多隐藏文件,我们挨着看看:
在.system找到一个flag SYS{ZGSFYYDSadmin}
【3】后门程序进程名称
继续查看,在.system_config下面是之前看到的一个日志,system.log:
除了日志文件还有一个可执行程序,不知道是什么。
这里需要结合一下日志和历史命令来看:
在历史命令中有一个命令是:
nohup ./system_null -port 8899 -w bash > system.log 2>&1 &
这个命令是在后台启动一个名为 system_null 的程序,并让它监听靶机的 8899 端口,同时将输出日志保存到 system.log 文件。
我们再结合system.log文件继续看:
这里日志显示建立了一个新连接,连接的IP地址和端口是之前找到的那个攻击者IP
所以这里就可以确定,后门程序就是: systemd_null
不得不说这个后门程序有点牛叉,我把他拖出来扔进沙箱检测,什么也检测不出来,还有8MB那么大
【2】flag2
这个的话是参考了别人的思路,实在是不知道flag2放在哪了,结果是在nginx容器里面:
进入到nginx容器:
sudo docker exec -it 2da bash
查看历史命令:
history
flag2: zgsf{yerhawtigouhegih}
【4】攻击者的提权方式(输入程序名称即可)
首先要搞清楚攻击者的攻击方式是什么:
我们之前去看了docker环境,发现有phpthink的框架漏洞,所以攻击者可能获取到docker的权限之后 是利用的容器逃逸进行的提权
但是容器逃逸需要一定条件,就是去检查docker.sock是否可访问
ls -la /var/run/docker.sock
可以看到回显的是:
srw-rw---- 1 root 124 0 Apr 28 13:40 /var/run/docker.sock
权限:rw- 对所有者(root)和组(124,通常是 docker 组)可读写。
默认情况下,安装 Docker 时会将当前用户加入 docker 组,导致权限过宽。
所以攻击者的提取方式是通过docker容器逃逸了
程序名称应该就是: docker