一个防御性工具包,用于检查并了解对 PaperCut 中链式预认证远程代码执行漏洞的暴露情况:
链式利用路径:互联网 → 无认证 → 配置篡改 → 不安全类加载 → 任意 Java 执行 → 主机命令执行。
| 文件 | 用途 |
|---|---|
papercut-exposure-checker.py | 深度防御检测:版本与补丁对比、Web 暴露、IOC 载荷扫描、配置异常扫描、被投放的 .class 载荷扫描 |
papercut-cve-prevention.md | 参考文档,展示 CWE-306 和不安全类加载的易受攻击与安全代码模式对比 |
扫描器不仅限于版本检查。它还能检测野外观察到的实际攻击痕迹(Huntress / PaperCut 公告):
< 24.1.10、< 25.0.13、< 26.0.5)。--log)— 检测 server.log 中的攻击者痕迹:
jdbc:derby:memory:pwn(gadget 链中使用的 Derby 内存数据库)No suitable driver found for jdbc:no:xdatabase error looking up cardIDwhoami & ver、whoami & ver & tasklist)--config)— 标记被攻击者修改的外部用户查找设置:
jdbc:h2、jdbc:derby:memory)# 检查 PaperCut 服务器的 Web 暴露情况(非破坏性)
python3 papercut-exposure-checker.py --url https://print.server:9191
# 评估构建版本与已修补版本的对比
python3 papercut-exposure-checker.py --version 25.0.11.75758
# 扫描服务器日志以查找已发布的 IOC(载荷痕迹)
python3 papercut-exposure-checker.py --log /usr/local/papercut/server/logs/server.log
# 扫描配置文件以查找被攻击者修改的用户查找设置
python3 papercut-exposure-checker.py --config /usr/local/papercut/server/server.properties
# 扫描 lib 目录以查找被投放的 .class 载荷
python3 papercut-exposure-checker.py --lib /usr/local/papercut/server/lib
# 完整深度扫描 + HTML/JSON 报告
python3 papercut-exposure-checker.py \
--url https://print.server:9191 \
--version 25.0.11.75758 \
--log /usr/local/papercut/server/logs/server.log \
--config /usr/local/papercut/server/server.properties \
--lib /usr/local/papercut/server/lib \
--html report.html --json report.json
pc-app.exe 活动(利用后)server.log 缺失、被截断或被删除No suitable driver found、特定的 CardID 查找错误注意: 没有 IOC 并不能证明服务器是干净的。
本工具包仅用于防御。它不会利用任何漏洞,且应仅用于您被授权测试的服务器。预防参考文档展示了正确/安全的代码模式,用于学习和加固——绝不用于攻击。
在生产环境使用前,请从供应商公告中核实确切的紧急补丁发布 2 构建版本号,并更新扫描器中的 PATCHED_BUILDS(当前使用占位值)。
INIT/CALL 的值(Derby→H2 gadget 提示)--lib)— 检测 server/lib 中被攻击者投放的 .class 文件(已观察到:Udydn.class、Moo97.class)。