PaperCut CVE-2026-81578 与 CVE-2026-82078 的安全研究工具
面向 PaperCut NG/MF 漏洞评估与授权利用的专业安全研究工具
╔══════════════════════════════════════════════════════════════════╗
║ PAPERCUT SECURITY TOOL – POWER MODE ║
║ CVE-2026-81578 · CVE-2026-82078 · v3.1.0 ║
║ ⚡ powered by yora 1928 ⚡ ║
╚══════════════════════════════════════════════════════════════════╝
该工具为 PaperCut NG/MF 服务器提供安全、非破坏性的漏洞评估以及可选的远程利用(需明确授权)。
它专为安全研究人员、渗透测试人员和蓝队防御者设计,用于验证两个关键 PaperCut 漏洞的存在。
| CVE ID | 描述 | CVSS | CWE |
|---|---|---|---|
| CVE-2026-81578 | 通过 Apache Tapestry "complex direct" 请求绕过身份验证 | 8.8 (高危) | CWE-306 |
| CVE-2026-82078 | 数据库连接工具中的不安全动态类加载 | 9.4 (严重) | CWE-470 |
关键参考:
该工具执行基于指标的远程检测。除非使用 --force 且获得明确的书面授权,否则它不声称能证明真实 PaperCut 服务器上的可利用性。
| 状态 | 含义 |
|---|---|
SAFE | 版本已修复或未检测到任何指标 |
AFFECTED_VERSION | 版本匹配受影响范围(厂商公告) |
TAPESTRY_DETECTED | 检测到 Apache Tapestry 框架(PaperCut 使用) |
ADMIN_ENDPOINT_ACCESSIBLE | 管理端点无需认证即可访问 |
DB_CONFIG_ACCESSIBLE | 数据库配置端点可访问 |
POTENTIALLY_VULNERABLE | 指标组合表明可能存在漏洞,但可利用性未经证实 |
NOT_DETECTABLE | 信息不足,无法评估 |
置信度分数基于证据权重计算,远程检测上限为 85%,以避免过度声明。
--force 标志(需授权)--input、--threads)--prefilter)| 功能 | 针对真实目标 | 针对本地实验室 |
|---|---|---|
| 指纹识别 | ✅ 安全(只读) | ✅ 安全 |
| CVE 评估 | ✅ 安全(基于指标) | ✅ 安全 |
| 概念演示 | ❌ 已阻止(仅限 localhost) | ✅ 允许 |
| 远程利用 | ⚠️ 需要 --force 及授权 | ✅ 允许 |
| 配置更改 | ❌ 从不 | ✅ 仅限实验室内部 |
| RCE / Payload 执行 | ❌ 从不 | ❌ 未实现(仅模拟) |
# 克隆仓库
git clone https://github.com/yourusername/papercut-cve-tool.git
cd papercut-cve-tool
# 创建虚拟环境
python3 -m venv .venv
source .venv/bin/activate # Linux/macOS
# 或
.venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
# 验证安装
python papercut.py self-test
# 显示帮助
python papercut.py --help
# 对目标执行完整扫描
python papercut.py scan http://127.0.0.1:8080
# 仅指纹识别
python papercut.py fingerprint http://127.0.0.1:8080
# 检查特定 CVE
python papercut.py check http://127.0.0.1:8080 --cve 81578
# 启动教育性本地实验室
python papercut.py lab
# 运行概念演示(仅限实验室)
python papercut.py exploit --cve 81578
# 远程利用(需授权)
python papercut.py exploit --cve 81578 --target https://target.com:9192 --force
# 带预过滤和多线程的批量扫描
python papercut.py scan --input targets.txt --prefilter --threads 10 --timeout 5
# 分析日志文件中的 IOC
python papercut.py detect server.log
# 生成 HTML 报告
python papercut.py report result.json --format html
# 交互模式
python papercut.py interactive
| 命令 | 描述 |
|---|---|
scan TARGET | 完整漏洞扫描,包含指纹识别 + CVE 检查 |
fingerprint TARGET | 检测 PaperCut 版本、Tapestry 框架和暴露的端点 |
check TARGET --cve {81578,82078} | 运行特定 CVE 指标检查 |
lab [--port PORT] [--test] | 启动教育性本地实验室(可选自检) |
exploit --cve {81578,82078} [--target] [--force] | 运行概念演示或远程利用(如已授权) |
detect LOGFILE [--output] | 分析日志文件中的可疑指标 |
report INPUT [--format {html,json,text}] [--output] | 从 JSON 结果生成专业报告 |
interactive | 启动交互菜单 |
self-test | 运行内部诊断 |
| 选项 | 描述 |
|---|---|
--timeout N | 请求超时时间(秒)(默认:10) |
--verbose | 显示详细调试输出 |
--quiet | 抑制非必要输出 |
--output FILE | 将结果保存到文件 |
--format {text,json,html} | 扫描/报告的输出格式 |
| 选项 | 描述 |
|---|---|
--input FILE | 包含目标列表的文件(每行一个)用于批量扫描 |
--output-dir DIR | 保存批量结果的目录 |
--threads N | 并发线程数(批量模式) |
--prefilter | 扫描前检查开放端口(仅限批量模式) |
该实验室是一个极简 Python HTTP 服务器,用于教育目的复现两个漏洞的概念。
Error.page、Exception.page)的同时调用管理组件(ConfigEditor、UserList)# 启动实验室
python papercut.py lab
# 运行自动化实验室测试
python papercut.py lab --test
实验室端点:
http://127.0.0.1:8080/lab/cve-81578?component=ConfigEditor&display=Errorhttp://127.0.0.1:8080/lab/cve-82078?driver=org.attacker.RCEPayload该工具分析日志文件中源自漏洞机制的可疑指标(IOC):
| 指标 | 严重性 | 描述 |
|---|---|---|
tapestry_complex_direct | 严重 | Tapestry .page.*.zone 请求模式 |
admin_component_access | 高危 | ConfigEditor / UserList 页面访问 |
public_page_tapestry | 高危 | 带 Tapestry 的 Error / Exception 页面 |
tapestry_post_request | 严重 | 对 Tapestry .page 的 POST 请求 |
db_driver_config | 严重 | 数据库驱动配置更改 |
class_loading_error | 高危 | ClassNotFoundException / NoClassDefFoundError |
dynamic_class_loading | 严重 | 从外部来源加载类 |
python papercut.py detect /var/log/papercut/server.log --output detection.json
生成 HTML、JSON 或纯文本格式的专业报告。
# 首先,将扫描结果保存为 JSON
python papercut.py scan http://127.0.0.1:8080 --format json --output result.json
# 生成 HTML 报告
python papercut.py report result.json --format html --output report.html
# 生成 JSON 报告
python papercut.py report result.json --format json --output report.json
# 生成文本报告
python papercut.py report result.json --format text --output report.txt
HTML 报告包含:
基于 PaperCut 安全公告(2026年8月27日):
| 版本范围 | 状态 |
|---|---|
| 24.x < 24.1.10 | ❌ 受影响 |
| 24.1.10+ | ✅ 已修复 |
| 25.x < 25.0.13 | ❌ 受影响 |
| 25.0.13+ | ✅ 已修复 |
| 26.x < 26.0.5 | ❌ 受影响 |
| 26.0.5+ | ✅ 已修复 |
| 23.x 及以下 | ⚠️ 已停止支持 – 建议升级 |
PaperCut 使用 Apache Tapestry 框架。Tapestry 的 "complex direct" 请求格式允许同时指定:
Error.page)ConfigEditor.page)访问验证仅检查显示的页面,而非正在执行的组件。攻击者可以在显示公共页面的同时调用管理组件,从而完全绕过身份验证。
攻击向量: POST /papercut/ConfigEditor.page?... 带 .zone 请求,通过 Error.page 显示
PaperCut 从可配置的驱动名称(例如 database.driver.class)实例化 JDBC 数据库驱动类。应用程序不会针对白名单验证这些类名。能够操纵系统配置的攻击者(通过身份验证绕过或其他方式)可以指定任意 Java 类名,这些类名将被 PaperCut 服务进程加载和实例化。
影响: 在 PaperCut 服务的安全上下文下实现远程代码执行(RCE)。
欢迎贡献!请阅读 CONTRIBUTING.md 了解指南。
MIT 许可证 – 详情请参阅 LICENSE。
该工具仅用于授权的安全测试和教育目的。未经明确书面许可,请勿对任何系统使用。概念演示已锁定为 localhost,无法对远程主机生效。
使用该工具即表示您同意:
版本: 3.1.0
最后更新: 2026-08-29
维护者: yora 1928
"安全不是一种产品,而是一个过程。" – Bruce Schneier
---
## 🚀 GitHub 后续步骤
1. **打开** `https://github.com/yora1928/PaperCut-CVE-2026-81578-82078`
2. **点击** `README.md`
3. **点击** 铅笔图标(编辑)
4. **删除** 所有旧内容
5. **粘贴** 上述全部文本
6. **点击** `Commit changes...`
7. **填写** 提交信息:`Update README.md with final version`
8. **点击** `Commit changes`
---
## 🎉 **完成!您的项目已专业且准备好用于作品集!** ⚡