
Outil de recherche en sécurité pour PaperCut CVE-2026-81578 & CVE-2026-82078
Outil professionnel de recherche en sécurité pour l'évaluation des vulnérabilités PaperCut NG/MF et l'exploitation autorisée
╔══════════════════════════════════════════════════════════════════╗
║ PAPERCUT SECURITY TOOL – POWER MODE ║
║ CVE-2026-81578 · CVE-2026-82078 · v3.1.0 ║
║ ⚡ powered by yora 1928 ⚡ ║
╚══════════════════════════════════════════════════════════════════╝
Cet outil fournit une évaluation de vulnérabilités sûre et non destructive ainsi qu'une (avec autorisation explicite) pour les serveurs PaperCut NG/MF. Il est conçu pour les qui doivent valider la présence de deux vulnérabilités critiques de PaperCut.
| CVE ID | Description | CVSS | CWE |
|---|---|---|---|
| CVE-2026-81578 | Contournement d'authentification via les requêtes « complex direct » d'Apache Tapestry | 8.8 (ÉLEVÉE) | CWE-306 |
| CVE-2026-82078 | Chargement dynamique de classes non sécurisé dans les utilitaires de connexion à la base de données | 9.4 (CRITIQUE) | CWE-470 |
Références clés :
Cet outil effectue une détection à distance basée sur des indicateurs. Il ne prétend pas prouver l'exploitabilité sur de véritables serveurs PaperCut, sauf si --force est utilisé avec une autorisation écrite explicite.
| Statut | Signification |
|---|---|
SAFE | La version est corrigée ou aucun indicateur détecté |
AFFECTED_VERSION | La version correspond à la plage affectée (avis du fournisseur) |
TAPESTRY_DETECTED | Framework Apache Tapestry détecté (utilisé par PaperCut) |
ADMIN_ENDPOINT_ACCESSIBLE | Les points de terminaison administratifs sont accessibles sans authentification |
DB_CONFIG_ACCESSIBLE | Les points de terminaison de configuration de la base de données sont accessibles |
POTENTIALLY_VULNERABLE | La combinaison d'indicateurs suggère une vulnérabilité possible, mais l'exploitabilité n'est pas vérifiée |
NOT_DETECTABLE | Informations insuffisantes pour évaluer |
Les scores de confiance sont calculés en fonction du poids des preuves et sont plafonnés à 85 % pour la détection à distance afin d'éviter toute surévaluation.
--force (autorisation requise)--input, --threads)--prefilter)| Fonctionnalité | Contre une cible réelle | Contre le laboratoire local |
|---|---|---|
| Empreinte | ✅ Sûr (lecture seule) | ✅ Sûr |
| Évaluation CVE | ✅ Sûr (basé sur des indicateurs) | ✅ Sûr |
| Démonstration de concept | ❌ BLOQUÉE (localhost uniquement) | ✅ Autorisée |
| Exploitation à distance | ⚠️ Nécessite --force et une autorisation | ✅ Autorisée |
| Modifications de configuration | ❌ Jamais | ✅ Uniquement dans le laboratoire |
| RCE / Exécution de payload | ❌ Jamais | ❌ Non implémentée (simulation uniquement) |
# Cloner le dépôt
git clone https://github.com/yourusername/papercut-cve-tool.git
cd papercut-cve-tool
# Créer un environnement virtuel
python3 -m venv .venv
source .venv/bin/activate # Linux/macOS
# ou
.venv\Scripts\activate # Windows
# Installer les dépendances
pip install -r requirements.txt
# Vérifier l'installation
python papercut.py self-test
# Afficher l'aide
python papercut.py --help
# Exécuter une analyse complète contre une cible
python papercut.py scan http://127.0.0.1:8080
# Empreinte uniquement
python papercut.py fingerprint http://127.0.0.1:8080
# Vérifier une CVE spécifique
python papercut.py check http://127.0.0.1:8080 --cve 81578
# Démarrer le laboratoire local pédagogique
python papercut.py lab
# Exécuter la démonstration de concept (laboratoire uniquement)
python papercut.py exploit --cve 81578
# Exploitation à distance (AUTORISATION REQUISE)
python papercut.py exploit --cve 81578 --target https://target.com:9192 --force
# Analyse par lots avec préfiltre et threading
python papercut.py scan --input targets.txt --prefilter --threads 10 --timeout 5
# Analyser un fichier journal pour les IOC
python papercut.py detect server.log
# Générer un rapport HTML
python papercut.py report result.json --format html
# Menu interactif
python papercut.py interactive
| Commande | Description |
|---|---|
scan TARGET | Analyse complète des vulnérabilités avec empreinte + vérifications CVE |
fingerprint TARGET | Détecter la version de PaperCut, le framework Tapestry et les points de terminaison exposés |
check TARGET --cve {81578,82078} | Exécuter une vérification d'indicateur CVE spécifique |
lab [--port PORT] [--test] | Démarrer le laboratoire local pédagogique (avec auto-test optionnel) |
exploit --cve {81578,82078} [--target] [--force] | Exécuter la démonstration de concept ou l'exploitation à distance (si autorisée) |
detect LOGFILE [--output] | Analyser le fichier journal pour les indicateurs suspects |
report INPUT [--format {html,json,text}] [--output] | Générer un rapport professionnel à partir des résultats JSON |
interactive | Lancer le menu interactif |
self-test | Exécuter les diagnostics internes |
| Option | Description |
|---|---|
--timeout N | Délai d'expiration de la requête en secondes (défaut : 10) |
--verbose | Afficher la sortie de débogage détaillée |
--quiet | Supprimer la sortie non essentielle |
--output FILE | Enregistrer les résultats dans un fichier |
--format {text,json,html} | Format de sortie pour l'analyse/le rapport |
| Option | Description |
|---|---|
--input FILE | Fichier avec les cibles (une par ligne) pour l'analyse par lots |
--output-dir DIR | Répertoire pour enregistrer les résultats du lot |
--threads N | Nombre de threads simultanés (mode lot) |
--prefilter | Vérifier les ports ouverts avant l'analyse (lot uniquement) |
Le laboratoire est un serveur HTTP Python minimal qui reproduit les concepts des deux vulnérabilités à des fins pédagogiques.
ConfigEditor, UserList) tout en affichant une page publique (Error.page, Exception.page)# Démarrer le laboratoire
python papercut.py lab
# Exécuter le test automatisé du laboratoire
python papercut.py lab --test
Points de terminaison du laboratoire :
http://127.0.0.1:8080/lab/cve-81578?component=ConfigEditor&display=Errorhttp://127.0.0.1:8080/lab/cve-82078?driver=org.attacker.RCEPayloadL'outil analyse les fichiers journaux pour les indicateurs suspects (IOC) dérivés des mécanismes de vulnérabilité :
| Indicateur | Sévérité | Description |
|---|---|---|
tapestry_complex_direct | CRITIQUE | Modèle de requête Tapestry .page.*.zone |
admin_component_access | ÉLEVÉE | Accès aux pages ConfigEditor / UserList |
public_page_tapestry | ÉLEVÉE | Page Error / Exception avec Tapestry |
tapestry_post_request | CRITIQUE | Requête POST vers Tapestry .page |
db_driver_config | CRITIQUE | Modifications de la configuration du pilote de base de données |
class_loading_error | ÉLEVÉE | ClassNotFoundException / NoClassDefFoundError |
dynamic_class_loading | CRITIQUE | Chargement de classe depuis une source externe |
python papercut.py detect /var/log/papercut/server.log --output detection.json
Générez des rapports professionnels en HTML, JSON ou texte brut.
# D'abord, enregistrer les résultats d'analyse au format JSON
python papercut.py scan http://127.0.0.1:8080 --format json --output result.json
# Générer un rapport HTML
python papercut.py report result.json --format html --output report.html
# Générer un rapport JSON
python papercut.py report result.json --format json --output report.json
# Générer un rapport texte
python papercut.py report result.json --format text --output report.txt
Le rapport HTML comprend :
Basé sur le bulletin de sécurité PaperCut (27 août 2026) :
| Plage de versions | Statut |
|---|---|
| 24.x < 24.1.10 | ❌ Affectée |
| 24.1.10+ | ✅ Corrigée |
| 25.x < 25.0.13 | ❌ Affectée |
| 25.0.13+ | ✅ Corrigée |
| 26.x < 26.0.5 | ❌ Affectée |
| 26.0.5+ | ✅ Corrigée |
| 23.x et inférieures | ⚠️ Fin de vie – mise à niveau recommandée |
PaperCut utilise le framework Apache Tapestry. Le format de requête « complex direct » de Tapestry permet de spécifier à la fois :
Error.page)ConfigEditor.page)La validation d'accès ne vérifie que la page affichée, pas le composant en cours d'exécution. Les attaquants peuvent invoquer des composants administratifs tout en affichant des pages publiques, contournant ainsi entièrement l'authentification.
Vecteur d'attaque : POST /papercut/ConfigEditor.page?... avec une requête .zone, affichée via Error.page
PaperCut instancie les classes de pilotes JDBC à partir de noms de pilotes configurables (par exemple, database.driver.class). L'application ne valide pas ces noms de classes contre une liste blanche. Les attaquants qui peuvent manipuler la configuration système (via le contournement d'authentification ou d'autres moyens) peuvent spécifier des noms de classes Java arbitraires, qui sont chargés et instanciés par le processus du service PaperCut.
Impact : Exécution de code à distance (RCE) sous le contexte de sécurité du service PaperCut.
Les contributions sont les bienvenues ! Veuillez lire CONTRIBUTING.md pour les directives.
Licence MIT – voir LICENSE pour plus de détails.
Cet outil est destiné uniquement aux tests de sécurité autorisés et à des fins pédagogiques. Ne l'utilisez pas contre un système sans autorisation écrite explicite. Les démonstrations de concept sont verrouillées sur localhost et ne fonctionneront pas contre des hôtes distants.
En utilisant cet outil, vous acceptez de :
Version : 3.1.0
Dernière mise à jour : 2026-08-29
Mainteneur : yora 1928
« La sécurité n'est pas un produit, mais un processus. » – Bruce Schneier
---
## 🚀 Prochaines étapes sur GitHub
1. **Ouvrez** `https://github.com/yora1928/PaperCut-CVE-2026-81578-82078`
2. **Cliquez** sur `README.md`
3. **Cliquez** sur l'icône crayon (Modifier)
4. **Supprimez** tout l'ancien contenu
5. **Collez** tout le texte ci-dessus
6. **Cliquez** sur `Commit changes...`
7. **Écrivez** le message de commit : `Update README.md with final version`
8. **Cliquez** sur `Commit changes`
---
## 🎉 **Terminé ! Votre projet est professionnel et prêt pour votre portfolio !** ⚡