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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2021-40444 — CVE-2021-40444(Microsoft Office Word RCE)を悪用する悪意のあるDOCXジェネレーター。CABベースのDLLサイドローディングとCABレスRAR/WSF攻撃チェーンをペネトレーションテスト用に使用。 | Kitploit
ツール/GitHubGitHub/tiagob0b/cve-2021-40444
ペイロード生成エクスプロイトウェブアプリケーション悪用ペネトレーションテストシェルコード生成バイナリエクスプロイト
GitHubtiagob0b/cve-2021-40444

CVE-2021-40444

CVE-2021-40444(Microsoft Office Word RCE)を悪用する悪意のあるDOCXジェネレーター。CABベースのDLLサイドローディングとCABレスRAR/WSF攻撃チェーンをペネトレーションテスト用に使用。

リポジトリを見る
54年前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

Fully Weaponized CVE-2021-40444

CVE-2021-40444(Microsoft Office Word リモートコード実行)を悪用する悪意のある docx ジェネレーター。任意の DLL ファイルで動作します。

背景

多くの PoC がすでにインターネット上に存在しますが、この脆弱性を武器化するために自分自身で試してみることにしました。見つけた既存のものには共有する価値のある有益な情報が不足していたためです。また、Microsoft がこの脆弱性に対するパッチをすでにリリースしていることも考慮しました。

これまでのところ、完全に動作するジェネレーターを作成するために価値のあるリソースは次のとおりです:

  • Blog by Ret2Pwn
  • Twit by j00sean

上記のリソースには、完全なチェーンを作成するために必要な要件の多くが記載されています。不必要な情報を繰り返すのを避けるため、関連する詳細を要約します。

エクスプロイトチェーン

  1. Docx が開かれる
  2. document.xml.rels に保存されたリレーションシップが悪意のある HTML を指す
  3. HTML リンクを開くために IE プレビューが起動される
  4. HTML 内の JScript には、CAB ファイルを指すオブジェクトと、".cpl:" ディレクティブが前置された INF ファイルを指す iframe が含まれる
  5. CAB ファイルが開かれ、INF ファイルが %TEMP%\Low ディレクトリに保存される
  6. CAB のパストラバーサル(ZipSlip)脆弱性により、INF を %TEMP% に保存することが可能
  7. その後、".cpl:" ディレクティブで INF ファイルが開かれ、rundll32 による INF ファイルのサイドローディングが発生します(これが DLL の場合)

見落とされがちな要件

このエクスプロイトを機能させるためには、かなりの数の見落とされがちな要件があります。そのため、lockedbyte による PoC のような優れた PoC でさえ正常に動作しないことがありました。

おそらく、脆弱性がさらに悪用されるのを避けるために、誰も明示的に「公開」しなかったのでしょう。しかし現在はパッチが適用されているため、詳細を公開しても大きな問題にはならないはずです。

HTML ファイル

Will Dormann によるこの ツイート にあるように、MS Word 内で「プレビュー」をトリガーするには、HTML は少なくとも 4096 バイトのサイズである必要があります。

CAB ファイル

CAB ファイルは、抽出エラーを回避し ZipSlip を達成するためにバイト単位でパッチを適用する必要があります:

  • filename.inf は ../filename.inf にする必要があります
  • filename.inf 正確には <12文字>.inf であるべき 実際にはそうではありません。重要なのは coffCabStart を変更することです
  • CFFOLDER.typeCompress 0(圧縮なし)にする必要があります
  • CFFOLDER.coffCabStart は('../' の追加により)3 増やす必要があります
  • CFFOLDER.cCfData 2 にする必要があります
  • CFFILE.cbFile は CFHEADER.cbCabinet 全体よりも大きくする必要があります
  • CFDATA.csum 再計算(またはゼロ化)する必要があります [任意]

これらの制約の理由は多く、すべてを深く理解するのに十分な時間を費やしていませんが、最も重要なものを見てみましょう:

  • TypeCompress: CAB が圧縮されている場合、オブジェクトファイル内で開いて INF 書き込みをトリガーするトリックは失敗します 誤り。MSZIP 圧縮サンプルでも同じ結果を達成できました
  • CoffCabStart: CoffCabStart は最初の CFDATA 構造体の絶対位置を示します。'../' を追加したため、ファイルを指すようにこれを 3 増やす必要があります(これは推測に近いです)
  • cCfData: ファイルが 1 つだけなので、CFDATA も 1 つだけのはずです。これを 2 に設定しなければならない理由はよくわかりません 実際には 1 のままで問題ありません
  • cbFile: 興味深いことに、CAB 抽出がエラーなしで終了すると、INF ファイルは WORD によって削除対象とマークされ、エクスプロイトが台無しになります。これを防ぐ唯一の方法は、WORD に抽出が失敗したと思わせることです。cbFile の値をキャビネットファイル自体よりも大きく定義すると、抽出プログラムは cbFile で定義されたすべてのバイトを読み取る前に EOF に到達し、抽出エラーが発生します。
  • [任意] この値は MS Word によってチェックされないようです。いずれにせよ、正しい CAB にするには、csum 値を再計算する必要があります。幸い、j00sean が指摘し、MS ドキュメント によると、この値は 0 にできます

注1: Defender は現在、_IMAGE_DOS_HEADER.e_magic 値をシグネチャとして使用して CAB ファイルに PE が含まれているかどうかを検出するため、PE ファイルが CAB に埋め込まれるのを防ぐ可能性があります。このシグネチャは回避できるでしょうか? 確かなことはわかりませんが、前述のようにこれはパッチ適用済みの脆弱性であるため、これ以上時間を費やすつもりはありません。さらに発展させるかは好奇心旺盛な読者次第です。

注2: Microsoft のパッチは、任意の URI スキームをブロックします。おそらくブラックリスト方式を使用しています(これは単なる推測です)

DLL 攻撃

CVE-2021-40444 に関連する主な攻撃チェーンは、.cpl URI スキームを介してロードされる DLL 攻撃です。これを悪用するには、攻撃者は特別に細工された DLL を生成する必要があります。テストしてみたい場合は、私の evildll-gen スクリプトを試してください。

JScript, VBScript, Javaw, MSIexec, ...

Max Maluin が指摘したように、IE と関連するファイル拡張子ベースの URI を悪用して、いくつかのファイルタイプと対話することが可能です。これは IE を悪用する良い方法かもしれませんが、制限があります。

実際、エクスプロイトでファイルをダウンロードするために使用される方法は ActiveX コントロールの更新に基づいており、任意のファイルをダウンロードするために使用することはできません。 Microsoft の ドキュメント によると、codebase タグが指すことができるファイルタイプはわずかです: OCX、INF、CAB。

OCX または INF ファイルを直接ダウンロードできたとしても、ファイルをシステム内の正しい場所にダウンロードできるとは限りません。CAB エクスプロイトでは、パストラバーサルを使用して .inf ファイルを既知のパスに移動できますが、それ以外の場合はファイルはランダムなディレクトリに保存されるため、実質的に参照することは不可能です。

今日の時点で、CAB ファイルなしでダウンロードと実行をチェーンする方法は見つけていません。

注: IE だけに限って言えば、HTML スムグリングはこの脆弱性を悪用する可能なシナリオです。

ハイブリッド RAR ファイルを使用した CAB レスファイル攻撃

この技術は、Eduardo Braun によって Twitter で初めて公開され、この ペーパーでさらに説明されました。

この技術を使用する場合、攻撃チェーンが少し異なることに注意してください。この攻撃では、ユーザーが特別に細工された RAR ファイルをダウンロードする必要があります。これは、有効な WSF スクリプトと有効な RAR ファイルを連結して得られます。開かれると、RAR には HTML への参照を含む DOCX が含まれており、HTML は RAR ファイルを WSF スクリプトとしてロードしようとします。

要約すると:

  1. 特別に細工された RAR ファイルがダウンロードされます(おそらくダウンロードフォルダー)
  2. DOCX が抽出されて開かれます
  3. document.xml.rels に保存されたリレーションシップが悪意のある HTML を指します
  4. HTML リンクを開くために IE プレビューが起動されます
  5. HTML 内の JScript には、".wsf:" URI スキームが前置された RAR ファイルを指すスクリプト/iframe が含まれます
  6. RAR は有効な RAR かつ有効な WSF スクリプトとして同時に機能するように設計されているため、スクリプトが実行されます

ツールによって実装されたエクスプロイト PoC

ジェネレーターユーティリティは現在、次の攻撃を再現できます:

1一部の環境では CAB が正しくダウンロードされません

2IE でファイルをダウンロードするには、ユーザーが「保存」をクリックする必要があります

CAB ファイルパーサー

cab_parser.py ユーティリティは、エクスプロイトファイルのヘッダーを表示するために使用できますが、これを完全なパーサーとは考えないでください。これは、何が起こっているのかを理解するために開発した、非常に迅速で粗雑な CAB ヘッダービューアです。

インストール

ジェネレーターは、makecab ユーティリティを使用するため、Windows で動作するように設計されています。使用前に、必要な依存関係をインストールしてください:

  • Virtualenv を使用する場合
root@kitploit:~
git clone https://github.com/klezVirus/CVE-2021-40444
cd CVE-2021-40444
pip install virtualenv
python -m virtualenv venv
venv\Scripts\activate.bat 
pip install -r requirements
  • Virtualenv を使用しない場合
root@kitploit:~
git clone https://github.com/klezVirus/CVE-2021-40444
cd CVE-2021-40444
pip install -r requirements

使用法

ジェネレーターの使用は簡単ですが、さまざまなペイロードと Windows バージョンでテストされていますが、完全に確実というわけではありません。Windows ビルドによって動作が異なるのを確認しています。共有できる詳細がわかり次第、ここに投稿します。

root@kitploit:~
usage: generator.py [-h] -P PAYLOAD -u URL [-o OUTPUT] [--host] [-c COPY_TO] [-nc] [-t]

[%] CVE-2021-40444 - MS Office Word RCE Exploit [%]

optional arguments:
  -h, --help            show this help message and exit
  -P PAYLOAD, --payload PAYLOAD
                        DLL payload to use for the exploit
  -u URL, --url URL     Server URL for malicious references (CAB->INF)
  -o OUTPUT, --output OUTPUT
                        Output files basename (no extension)
  --host                If set, will host the payload after creation
  -c COPY_TO, --copy-to COPY_TO
                        Copy payload to an alternate path
  -nc, --no-cab         Use the CAB-less version of the exploit
  -t, --test            Open IExplorer to test the final HTML file

例

  • 元のエクスプロイトを生成してローカルでテストする
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\calc.dll --host 

注: ポートは URL によって選択され、エクスプロイトはペイロードファイルの拡張子に基づいて生成されます

  • CAB レスエクスプロイトを RAR で生成し、IE を介してローカルでテストする
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\job-jscript.wsf --no-cab --host -t 
  • HTML スムグリングを使用した CAB レスエクスプロイト(IE のみ)を生成し、IE を介してローカルでテストする
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\calc.js --no-cab --host -t 

クレジット

  • RET2_pwn 素晴らしいブログをありがとう
  • j00sean 良いヒントをありがとう
  • lockedbyte 最初のまともな PoC をありがとう
  • Max_Mal 代替 URI スキームに関するヒントをありがとう
  • wdormann HTML ファイルサイズ制限に関するヒントをありがとう
  • Edu_Braun_0day クールな CAB レス版エクスプロイトをありがとう
ツールをダウンロード
攻撃HTML テンプレートターゲット配信方法実行方法動作
攻撃のオリジナルバージョンcab-orig-*WORDDOCXCAB + DLLYES
j00sean の IE のみの攻撃cab-orig-j00sanIEHTMLCAB + DLLYES
DLL なしの私のバージョンcab-uri-*WORDDOCXCAB + JS/VBSNO1
RAR を使用した Eduardo B. の "CABless" 攻撃cabless-rar-*WORDRARWSFYES
変更した j00sean 攻撃 + HTML スムグリングcabless-smuggling-*IEHTMLJS/VBSYES2