郑重声明:所用漏洞环境为自建虚拟机vulnhub靶机环境,仅供本人学习使用。
漏洞简述
Supervisor是基于 Python 的进程管理工具,可以帮助我们更简单的启动、重启和停止服务器上的后台进程,是 Linux 服务器管理的效率工具。Supervisor有四个组件:
1. supervisord运行Supervisor的后台服务,它用来启动和管理那些你需要Supervisor管理的子进程,响应客户端发来的请求,重启意外退出的子进程,将子进程的stdout和stderr写入日志,响应事件等。它是Supervisor最核心的部分。
2. supervisorctl相当于supervisord的客户端,它是一个命令行工具,用户可以通过它向supervisord服务发指令,比如查看子进程状态,启动或关闭子进程。它可以连接不同的supervisord服务,包括远程机上的服务。
3. Web服务器这是supervisord的Web客户端,用户可以在Web页面上完成类似于supervisorctl的功能。
4. XML-RPC接口这是留给第三方集成的接口,你的服务可以在远程调用这些XML-RPC接口来控制supervisord管理的子进程。上面的Web服务器其实也是通过这个XML-RPC接口实现的。
漏洞就出在XML-RPC接口对数据的处理上。
默认情况下Supervisor并不会开启这个接口,但这并不代表这个漏洞不重要,相反的是,在Supervisor的使用中,很多人喜欢利用web页面来管理,而不是使用上文中提到的supervisorctl命令行工具。使用web页面有一个方便之处,即通过简单配置,使用者可以在其他机器的浏览器上通过网址访问并控制Supervisor。省去非一定在本地配置的麻烦(例如在docker中使用Supervisor,就不用每次进入容器控制Supervisor)。
漏洞复现
POC 引用:https://www.leavesongs.com/PENETRATION/supervisord-RCE-CVE-2017-11610.html
使用NC侦听反弹端口
执行反弹命令
得到反弹Shell
使用MSF也可以
网友评论