Vulnhub|Thinkphp-5.0.23RCE引申的反弹shell

0x01环境搭建

使用docker
因为前期没有安装docker-compose
所以先装一下

1
2
3
4
5
6
#1)下载docker-compose
$ sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#2)授权
$ sudo chmod +x /usr/local/bin/docker-compose
#3)查看版本信息
$ docker-compose -v

1

去github下载TP5.0.23rce环境

把docker-compose.yml文件放在一个空目录里边
然后执行docker-compose up -d
2

访问http://ip:8080得到
3

搭建完成

0x02漏洞利用

构造数据包发送
3

显示404
3

没关系,我们双击打开
3
命令已经执行

ok,存在漏洞
为方便测试,转到bp
3
列出了当前目录文件

那弹shell呢?
想到就做,服务器开监听
3

bp发包
3

Go!
查看服务器并未得到shell

这个原因有很多,可能环境没有bash命令,或者当前tp用户没有权限等等

没关系,这个等下再看
先得到webshell再说

先随便测一下能不能写
echo
echo

ok,没问题

直接上
echo
echo

网站管理工具连接
ant

0x03反弹shell

虽然webshell也可以执行命令,管理文件
但毕竟不是真正的shell,无法执行交互式命令、无法控制进程状态、无法补全命令等等
鉴于以上,必须反弹shell。

打开终端,服务器监听443,目标机执行命令:
ant
等了一会,服务器还是没有回连信息。但在目标机上确认 bash 命令的确存在:
ant

此时迫切的心情让我决定换一个思路
反弹shell的方法有很多,python、nc,甚至curl等等

既然拥有写入权限,并且web目录可以访问
那么可以构造一个php文件执行命令反弹shell

我们开始
1.php文件
服务器监听443
目标机创建文件键入以下内容:
ant
web访问
ant
服务器得到shell
ant

2.curl
服务器监听443
服务器创建shell.txt(注:若为php则反弹不成功)
ant
目标机执行:
ant
服务器得到shell
ant

3.nc
目标机没有nc
ant

FAQ:

启动docker-compose报错:Couldn’t connect to Docker daemon at http+docker://localhost - is it running?
1.切换为root用户执行命令。sudo docker-compose up -d
2.将当前用户加入到docker组。 sudo gpasswd -a ${USER} docker 然后切换成root用户,再切换为当前用户,再次执行docker-compose up -d

拉取镜像出错?
出现这个问题原因为国内网络问题,无法连接到 docker hub。 以下为创建配置文件./etc/docker/daemon.json指定国内源
Docker 官方中国区
https://registry.docker-cn.com
网易
http://hub-mirror.c.163.com
中国科技大学
https://docker.mirrors.ustc.edu.cn
阿里云
https://pee6w651.mirror.aliyuncs.com
ant
更改完配置文件要重启docker
systemctl restart docker