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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2021-43408 — 对CVE-2021-43408的技术分析和概念验证利用,该漏洞是WordPress Duplicate Post插件1.1.9版本中的一个SQL注入漏洞,附带逐步利用指南和修复建议。 | Kitploit
工具/GitHubGitHub/tuannq2299/cve-2021-43408
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试
GitHubtuannq2299/cve-2021-43408

CVE-2021-43408

对CVE-2021-43408的技术分析和概念验证利用,该漏洞是WordPress Duplicate Post插件1.1.9版本中的一个SQL注入漏洞,附带逐步利用指南和修复建议。

查看仓库
14年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2021-43408: WordPress 插件 Duplicate Post 版本 1.1.9 - SQL 注入

I. 概述

1. 什么是 WordPress

WordPress 是一款开源的 CMS(内容管理系统)软件,是一个内容管理系统。与使用 HTML 编码语言不同,WP 采用 PHP 编程语言编写,并使用 MySQL 数据库平台。WordPress 由程序员 Matt Mullenweg 和 Mike Little 创立。目前 WordPress 归 Automattic 公司所有,该公司总部位于美国加利福尼亚州旧金山。

2. CVE-2021-43408

WordPress 的 Duplicate Post 插件在 1.1.9 及更早版本中存在 SQL 注入漏洞。此类利用方式允许攻击者注入 SQL 查询语句,从而可以读取、修改甚至删除数据库中的资源。 该漏洞可被任何有权使用 Duplicate Post 插件功能的认证用户利用。默认情况下,只有管理员拥有此权限,但权限可以修改,因此编辑、作者、投稿者甚至订阅者也可能使用该插件。 CVE-2021-43408 发现于 2021 年 11 月 19 日,根据 CVSS 评分被评估为 HIGH 级别。

II. 详细分析

该漏洞的根本原因是用户请求发送的数据在执行 SQL 之前未被清理。 具体而言,在文件 post/handler.php 的 cdn_insert_post() 函数中:

root@kitploit:~
 function cdp_insert_post($id, $data, $times, $areWePro, $isChild = false, $p_ids = null, $site) {

        // 获取 WordPress 数据库
        global $wpdb;

        // 为新 ID 和错误创建空数组
        $results = array('ids' => array(), 'error' => 0, 'counter' => 0);

        // 获取计数器值
        $prefix = (($site != -1) ? $wpdb->get_blog_prefix($site) : $wpdb->get_blog_prefix());
        $newestId = $wpdb->get_results("SELECT post_id FROM {$prefix}postmeta WHERE meta_key = '_cdp_origin' AND meta_value = {$id} ORDER BY post_id DESC LIMIT 1", ARRAY_A);

$id 受攻击者控制

变量 $id 被传入包含 SQL 查询语句的函数,且未经过任何清理。此函数通过 WordPress Ajax wp_ajax_cdp_action_handling 调用。 可以看出参数 id 经过 cdn_sanitize_array 函数处理,在此函数中,post 的各个数据字段会通过 sanitize_text_field 函数,该函数会对数据字符串中的任何引号 ' 进行转义。

各个数据字段经过 sanitize_text_field 处理

然而,代码存在一个漏洞:当将 Integer 类型字段的数据(如 id 字段)传递给 SQL 执行语句时,攻击者可以利用这一点,在该字段值中插入额外的 SQL 语句。因此,要控制 SQL 查询,攻击者只需避免使用 ' 字符即可。

III. 演示

1. 环境

  • 操作系统:Windows
  • Xampp:7.1.33
  • WordPress:5.0
  • 插件 Duplicate Post:1.1.9

2. PoC

步骤 1: 以管理员用户身份登录,安装 Duplicate Post 插件版本 1.1.9。该插件帮助用户复制现有文章。

步骤 2: 访问 文章 菜单,选择一篇文章,选择操作 复制 并点击 应用。

步骤 3: 选择 设置:默认 并点击 复制。

步骤 4: 拦截 HTTP 请求,此处需要注意的数据字段是 id,可以看到该字段的数据是整数类型。

步骤 5: 注入 SQL 注入 payload,发送请求,发现 9 秒后服务器才返回响应 -> SQL 注入成功。 Payload:1 and (select*from(select(sleep(9)))a)--

3. 漏洞利用代码

IV. 修复措施

  • 将插件更新到 1.2.0 或更高版本

V. 参考

  • https://appcheck-ng.com/security-advisory-duplicate-post-wordpress-plugin-sql-injection-vulnerability
下载工具