Tomcat 漏洞分析与修复(2)CVE-2024-21733

Tomcat 漏洞分析与修复(2)CVE-2024-21733

原创 ralap 网络个人修炼 2025-04-11 09:01

前言

接着继续研究CVE-2024-21733,详细阐述漏洞复现步骤及修复方法

漏洞概述

当 Web 服务器无法正确处理 POST 请求的内容长度时发生。这种错误行为可被攻击者利用来强制受害者的浏览器取消与网站的连接,从而导致敏感数据从服务器和/或客户端泄露。

受影响版本

此漏洞影响以下版本的 Apache Tomcat:

版本 8.5.7 到 8.5.63

版本 9.0.0-M11 到 9.0.43

环境搭建

为了测试这个漏洞,首先需要安装受影响版本的 Apache Tomcat,并创建一个简单的 JSP 文件进行测试。

1.下载并安装指定版本的Tomcat:

确保安装的是受影响范围内的版本。安装步骤可参考往期文章

Apache Tomcat 安装指南

Windows环境下JDK与Tomcat的安装与配置指南

2.部署JSP文件:

<%
     String id = request.getParameter("id");
     if (id != null) {
         out.print("ID is: " + id);
     } else {
         out.print("No ID parameter provided");
     }
%>

将上述JSP代码保存为
1.jsp
并放置在Tomcat的webapps/ROOT下。

漏洞复现

使用 Burp Suite 进行漏洞复现。步骤如下:

步骤一:启动Burp Suite并配置代理

  1. 启动Burp Suite并开启拦截模式。

  2. 配置浏览器通过Burp Suite代理上网,以便能够捕获HTTP请求。

  3. 在浏览器中访问部署好的JSP页面(如http://localhost:8080/1.jsp),在Burp Suite中捕获该请求后发送到重放器。

步骤二:发送GET请求并转换为POST请求

1.在Burp Suite重放器,将其GET转换为POST请求,并添加
Content-Type: application/x-www-form-urlencoded
头部(不添加后续的ID无法正常显示)。

2.设置参数
id=1111111111111
或其他值,确保正常返回预期的ID值。

步骤三:构造异常的POST请求

1.修改Content-Length:在Burp Suite的重放器模块中,取消更新Content-Length选项,手动设置Content-Length大于实际传输的数据长度(例如设置为33),而实际发送的数据仅为“id=X(实际长度为8)”。

2.发送请求:点击发送后,漏洞复现。(实测了9.0.1、9.0.22、9.0.44及8.0.56版本,仅8.0.56版本可以稳定复现,其他版本未成功复现)

附原始POC

整改建议

为了防止此类攻击,建议用户升级到版本 8.5.64 或 9.0.44 及更高版本,其中包含该问题的修复程序。

参考资料

https://hackerone.com/reports/2327341

https://blog.csdn.net/weixin_67997381/article/details/145679856

-End-

如果觉得我的分享有用

[点赞+分享+关注]