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

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

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

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

工具目录

分类

查看所有分类
Loading categories
cve-2026-34486-tomcat_encrypt_bypass_reproduction — CVE复现:cve-2026-34486-tomcat_encrypt_bypass_reproduction | Kitploit
工具/GitHubGitHub/razureink/cve-2026-34486-tomcat_encrypt_bypass_reproduction
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试学习与教育
GitHubrazureink/cve-2026-34486-tomcat_encrypt_bypass_reproduction

cve-2026-34486-tomcat_encrypt_bypass_reproduction

CVE复现:cve-2026-34486-tomcat_encrypt_bypass_reproduction

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
21个月前尚未审核
分享

CVE-2026-34486:Apache Tomcat EncryptInterceptor 绕过漏洞

字段值
CVECVE-2026-34486
CVSS7.5 高危
类型敏感数据加密缺失
组件Apache Tomcat 集群 EncryptInterceptor
发布时间2026

概述

CVE-2026-34486 是由于修复 CVE-2026-29146 时引入的不完全回归缺陷。在 Apache Tomcat 的集群复制机制中,EncryptInterceptor 负责加密和认证集群消息。修复 CVE-2026-29146 时的重构意外地将 super.messageReceived(msg) 调用移到了处理解密失败的 try-catch 块之外。因此,当消息解密失败(即消息以明文形式到达,但拦截器期望加密数据)时,原始未加密的消息仍会被传递到处理链中,而不是被丢弃。

技术细节

代码流回归

集群消息到达时会调用 EncryptInterceptor.messageReceived() 方法。预期的流程如下:

  1. 接收原始消息字节
  2. 解密并验证消息(在 try-catch 内部)
  3. 如果解密成功,调用 super.messageReceived(msg) 转发解密后的消息
  4. 如果解密失败,丢弃消息(或记录错误)

在受影响版本中,解密/验证逻辑仍被包裹在 try-catch 中,但调用链被重构,使得 super.messageReceived(msg) 在保护解密的 try-catch 块 外部 执行。变量 msg 在 try-catch 之前声明,并在块内赋值。当解密抛出异常时,msg 保留其初始(未加密/原始)值,而 catch 块仅记录错误——它不会提前返回。执行继续执行 super.messageReceived(msg),处理未处理的原始数据。

这意味着能够访问 Tomcat 集群端口的攻击者可以注入任意未加密的消息,拦截器将接受并处理这些消息。

漏洞的简化伪代码

root@kitploit:~
public void messageReceived(Message msg) {
    // msg arrives raw
    try {
        // decrypt and populate msg fields
        decrypt(msg);
    } catch (Exception e) {
        log.error("Decryption failed", e);
        // BUG: no return statement here
    }
    // msg is still the original unencrypted object when catch is hit
    super.messageReceived(msg); // outside try-catch → passes raw data
}

修复必须确保:

  • super.messageReceived(msg) 仅在解密的 try 块内部成功解密后调用,或者
  • catch 块立即返回,这样未加密的消息永远不会被转发。

受影响版本

产品版本
Apache Tomcat 1111.0.20
Apache Tomcat 1010.1.53
Apache Tomcat 99.0.116

复现

先决条件

  • 一个启用了 EncryptInterceptor 的集群复制功能的受影响 Tomcat 实例
  • 能够访问 Tomcat 集群端口(通常为 4000 或 5000,通过 <Receiver> 配置)
  • Python 3.6+

步骤

  1. 确定一个在 server.xml 中配置了 EncryptInterceptor 的 Tomcat 集群成员。
  2. 确定集群接收器地址和端口。
  3. 运行利用脚本发送一个精心构造的原始集群消息。
  4. 观察接收器接受并记录该消息,绕过了加密验证。

PoC

本目录中的 exploit.py 脚本演示了绕过漏洞。它基于 ClusterMessage 序列化格式构造一个最小的 Tomcat 集群消息,并直接发送到接收器端口,不进行任何加密。受影响版本的拦截器会接受并转发该消息,尽管缺少加密。

缓解措施

升级到已修复版本的 Apache Tomcat:

产品已修复版本
Apache Tomcat 1111.0.21+
Apache Tomcat 1010.1.54+
Apache Tomcat 99.0.117+

如果无法立即升级,请限制对 Tomcat 集群端口的网络访问,仅允许受信任的主机(例如通过防火墙规则或将接收器绑定到回环地址或私有接口)。

参考

  • CVE-2026-34486
  • CVE-2026-29146(原始漏洞)
  • Apache Tomcat 安全公告
  • EncryptInterceptor 文档
下载工具