
Security research tool for PaperCut CVE-2026-81578 & CVE-2026-82078
Professional security research tool for PaperCut NG/MF vulnerability assessment & authorized exploitation
╔══════════════════════════════════════════════════════════════════╗
║ PAPERCUT SECURITY TOOL – POWER MODE ║
║ CVE-2026-81578 · CVE-2026-82078 · v3.1.0 ║
║ ⚡ powered by yora 1928 ⚡ ║
╚══════════════════════════════════════════════════════════════════╝
This tool provides safe, non‑destructive vulnerability assessment and optional remote exploitation (with explicit authorization) for PaperCut NG/MF servers. It is designed for who need to validate the presence of two critical PaperCut vulnerabilities.
| CVE ID | Description | CVSS | CWE |
|---|---|---|---|
| CVE-2026-81578 | Authentication Bypass via Apache Tapestry "complex direct" requests | 8.8 (HIGH) | CWE-306 |
| CVE-2026-82078 | Unsafe Dynamic Class Loading in Database Connection Utilities | 9.4 (CRITICAL) | CWE-470 |
Key references:
This tool performs indicator‑based remote detection. It does not claim to prove exploitability on real PaperCut servers unless --force is used with explicit written authorization.
| Status | Meaning |
|---|---|
SAFE | Version is fixed or no indicators detected |
AFFECTED_VERSION | Version matches the affected range (vendor advisory) |
TAPESTRY_DETECTED | Apache Tapestry framework detected (used by PaperCut) |
ADMIN_ENDPOINT_ACCESSIBLE | Administrative endpoints are accessible without auth |
DB_CONFIG_ACCESSIBLE | Database configuration endpoints are accessible |
POTENTIALLY_VULNERABLE | Combination of indicators suggests possible vulnerability, but exploitability is not verified |
NOT_DETECTABLE | Insufficient information to assess |
Confidence scores are calculated based on the weight of evidence and are capped at 85% for remote detection to avoid over‑claiming.
--force flag (authorization required)--input, --threads)--prefilter)| Feature | Against Real Target | Against Local Lab |
|---|---|---|
| Fingerprinting | ✅ Safe (read‑only) | ✅ Safe |
| CVE Assessment | ✅ Safe (indicator‑based) | ✅ Safe |
| Concept Demonstration | ❌ BLOCKED (localhost only) | ✅ Allowed |
| Remote Exploitation | ⚠️ Requires --force & authorization | ✅ Allowed |
| Configuration Changes | ❌ Never | ✅ Only within lab |
| RCE / Payload Execution | ❌ Never | ❌ Not implemented (simulated only) |
# Clone the repository
git clone https://github.com/yourusername/papercut-cve-tool.git
cd papercut-cve-tool
# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate # Linux/macOS
# or
.venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
# Verify installation
python papercut.py self-test
# Show help
python papercut.py --help
# Run a full scan against a target
python papercut.py scan http://127.0.0.1:8080
# Fingerprint only
python papercut.py fingerprint http://127.0.0.1:8080
# Check a specific CVE
python papercut.py check http://127.0.0.1:8080 --cve 81578
# Start the educational local lab
python papercut.py lab
# Run concept demonstration (lab only)
python papercut.py exploit --cve 81578
# Remote exploit (AUTHORIZATION REQUIRED)
python papercut.py exploit --cve 81578 --target https://target.com:9192 --force
# Batch scan with prefilter and threading
python papercut.py scan --input targets.txt --prefilter --threads 10 --timeout 5
# Analyze log file for IOCs
python papercut.py detect server.log
# Generate HTML report
python papercut.py report result.json --format html
# Interactive menu
python papercut.py interactive
| Command | Description |
|---|---|
scan TARGET | Full vulnerability scan with fingerprinting + CVE checks |
fingerprint TARGET | Detect PaperCut version, Tapestry framework, and exposed endpoints |
check TARGET --cve {81578,82078} | Run a specific CVE indicator check |
lab [--port PORT] [--test] | Start the educational local lab (with optional self‑test) |
exploit --cve {81578,82078} [--target] [--force] | Run concept demonstration or remote exploit (if authorized) |
detect LOGFILE [--output] | Analyse log file for suspicious indicators |
report INPUT [--format {html,json,text}] [--output] | Generate professional report from JSON results |
interactive | Launch interactive menu |
self-test | Run internal diagnostics |
| Option | Description |
|---|---|
--timeout N | Request timeout in seconds (default: 10) |
--verbose | Show detailed debug output |
--quiet | Suppress non‑essential output |
--output FILE | Save results to file |
--format {text,json,html} | Output format for scan/report |
| Option | Description |
|---|---|
--input FILE | File with targets (one per line) for batch scanning |
--output-dir DIR | Directory to save batch results |
--threads N | Number of concurrent threads (batch mode) |
--prefilter | Check open ports before scanning (batch only) |
The lab is a minimal Python HTTP server that reproduces the concepts of both vulnerabilities for educational purposes.
ConfigEditor, UserList) while displaying a public page (Error.page, Exception.page)# Start the lab
python papercut.py lab
# Run automated lab test
python papercut.py lab --test
Lab endpoints:
http://127.0.0.1:8080/lab/cve-81578?component=ConfigEditor&display=Errorhttp://127.0.0.1:8080/lab/cve-82078?driver=org.attacker.RCEPayloadThe tool analyses log files for suspicious indicators (IOCs) derived from the vulnerability mechanics:
| Indicator | Severity | Description |
|---|---|---|
tapestry_complex_direct | CRITICAL | Tapestry .page.*.zone request pattern |
admin_component_access | HIGH | ConfigEditor / UserList page access |
public_page_tapestry | HIGH | Error / Exception page with Tapestry |
tapestry_post_request | CRITICAL | POST request to Tapestry .page |
db_driver_config | CRITICAL | Database driver configuration changes |
class_loading_error | HIGH | ClassNotFoundException / NoClassDefFoundError |
dynamic_class_loading | CRITICAL | Loading class from external source |
python papercut.py detect /var/log/papercut/server.log --output detection.json
Generate professional reports in HTML, JSON, or plain text.
# First, save scan results as JSON
python papercut.py scan http://127.0.0.1:8080 --format json --output result.json
# Generate HTML report
python papercut.py report result.json --format html --output report.html
# Generate JSON report
python papercut.py report result.json --format json --output report.json
# Generate text report
python papercut.py report result.json --format text --output report.txt
HTML report includes:
Based on PaperCut Security Bulletin (August 27, 2026):
| Version Range | Status |
|---|---|
| 24.x < 24.1.10 | ❌ Affected |
| 24.1.10+ | ✅ Fixed |
| 25.x < 25.0.13 | ❌ Affected |
| 25.0.13+ | ✅ Fixed |
| 26.x < 26.0.5 | ❌ Affected |
| 26.0.5+ | ✅ Fixed |
| 23.x and below | ⚠️ End‑of‑life – upgrade recommended |
PaperCut uses the Apache Tapestry framework. Tapestry's "complex direct" request format allows specifying both:
Error.page)ConfigEditor.page)Access validation only checks the displayed page, not the component being executed. Attackers can invoke administrative components while displaying public pages, bypassing authentication entirely.
Attack vector: POST /papercut/ConfigEditor.page?... with .zone request, displayed via Error.page
PaperCut instantiates JDBC database driver classes from configurable driver names (e.g., database.driver.class). The application does not validate these class names against an allowlist. Attackers who can manipulate system configuration (via the authentication bypass or other means) can specify arbitrary Java class names, which are loaded and instantiated by the PaperCut service process.
Impact: Remote Code Execution (RCE) under the security context of the PaperCut service.
Contributions are welcome! Please read CONTRIBUTING.md for guidelines.
MIT License – see LICENSE for details.
This tool is for authorised security testing and educational purposes only. Do not use against any system without explicit written permission. The concept demonstrations are locked to localhost and will not work against remote hosts.
By using this tool, you agree to:
Version: 3.1.0
Last Updated: 2026-08-29
Maintainer: yora 1928
“Security is not a product, but a process.” – Bruce Schneier
---
## 🚀 Langkah Selanjutnya di GitHub
1. **Buka** `https://github.com/yora1928/PaperCut-CVE-2026-81578-82078`
2. **Klik** `README.md`
3. **Klik** icon pensil (Edit)
4. **Hapus** semua isi yang lama
5. **Paste** seluruh teks di atas
6. **Klik** `Commit changes...`
7. **Tulis** pesan commit: `Update README.md with final version`
8. **Klik** `Commit changes`
---
## 🎉 **Selesai! Project Anda sudah profesional dan siap untuk portfolio!** ⚡