Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2021-40444 — Microsoft-Office-Word-MSHTML-Remote-Code-Execution-Exploit | Kitploit
ツール/GitHubGitHub/mracumen/cve-2021-40444
ペイロード生成エクスプロイトウェブアプリケーション悪用マルウェア分析バイナリ解析シェルコード生成
GitHubmracumen/cve-2021-40444

CVE-2021-40444

Microsoft-Office-Word-MSHTML-Remote-Code-Execution-Exploit

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

人気

すべて見る →

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

すべてのツールを探索

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

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

完全に武器化された CVE-2021-40444

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

背景

インターネット上にはすでに多くの PoC が出回っていますが、この脆弱性の完全な武器化に挑戦してみることにしました。というのも、私が見つけた既存の情報には共有する価値のある詳細が欠けており、また Microsoft はすでにこの脆弱性のパッチを公開しています。

これまでに、完全に動作するジェネレーターを作成するための貴重なリソースとして見つけたのは次のものです:

  • Ret2Pwn によるブログ
  • j00sean によるツイート

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

エクスプロイトチェーン

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

見落とされがちな要件

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

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

HTML ファイル

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

CAB ファイル

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

  • filename.inf は ../filename.inf にする
  • filename.inf は正確に <12-char>.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 で最初に公開され、このペーパーでさらに説明されています。

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

要約すると:

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

ツールが実装するエクスプロイト PoC

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

攻撃HTML テンプレートターゲット配信方法実行方法動作
攻撃のオリジナルバージョンcab-orig-*WORDDOCXCAB + DLLはい
j00sean の IE 限定攻撃cab-orig-j00sanIEHTMLCAB + DLLはい
DLL なしの私のバージョンcab-uri-*WORDDOCXCAB + JS/VBSいいえ1
Eduardo B. の「CABless」RAR 攻撃cabless-rar-*WORDRARWSFはい
改良版 j00sean 攻撃 + HTML スモークリングcabless-smuggling-*IEHTMLJS/VBSはい2

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

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

CAB ファイルパーサー

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

インストール

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

  • Virtualenv を使用する場合
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 を使用しない場合
git clone https://github.com/klezVirus/CVE-2021-40444
cd CVE-2021-40444
pip install -r requirements

使用方法

このジェネレーターの使い方は簡単です。さまざまなペイロードや Windows バージョンでテストされていますが、完璧というわけではありません。Windows のビルドによって動作が異なることがあります。共有できる詳細が増えたら、ここに投稿します。

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

例

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

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

  • CABless エクスプロイトを RAR で生成し、IE 経由でローカルテストする
python generator.py -u http://127.0.0.1 -P test\job-jscript.wsf --no-cab --host -t 
  • HTML スモークリングを使用した CABless エクスプロイト(IE 限定)を生成し、IE 経由でローカルテストする
python generator.py -u http://127.0.0.1 -P test\calc.js --no-cab --host -t 

クレジット

ツールをダウンロード