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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2021-40444 — CVE-2021-40444 - 完全武器化された Microsoft Office Word RCE エクスプロイト | Kitploit
ツール/GitHubGitHub/klezvirus/cve-2021-40444
ペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用マルウェア分析コマンド&コントロール学習と教育
GitHubklezvirus/cve-2021-40444

CVE-2021-40444

CVE-2021-40444 - 完全武器化された Microsoft Office Word RCE エクスプロイト

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

人気

すべて見る →

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

すべてのツールを探索

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

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

完全武装化されたCVE-2021-40444

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

2022年5月31日更新 - CVE-2022-30190 - Follina

現在、このジェネレーターは「Follina」攻撃(ms-msdtを活用)を悪用するために必要な文書も生成できます。

背景

多くのPoCがすでにインターネットに出回っていますが、私はこの脆弱性の武器化に挑戦しようと思いました。なぜなら、私が見つけたものは共有する価値のある情報が不足していたからです。また、Microsoftはすでにこの脆弱性のパッチをリリースしていることも考慮しました。

これまでに、完全に動作するジェネレーターを作成するための貴重なリソースは次のとおりです。

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

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

エクスプロイトチェーン

  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. 次に、".cpl:" ディレクティブでINFファイルが開かれ、rundll32を介したINFファイルのサイドローディングが発生する(これがDLLの場合)

見落とされがちな要件

このエクスプロイトを動作させるためには、かなり見落とされがちな要件があり、lockedbyteによる優れた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で最初に公開され、この論文でさらに詳しく説明されています。

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

要約すると:

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

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

このジェネレーターユーティリティは現在、以下の攻撃を再現できます。

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

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

3すべてのWindows/MS Wordバージョンで実際に動作するわけではない

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によって選択され、エクスプロイトはペイロードファイルの拡張子に基づいて生成されます

  • RARを使用したCABレスエクスプロイトを生成し、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 
  • MS-MSDT(Follina攻撃)を活用したCABレスエクスプロイトを、DOCXとRTFの両方の文書で生成する
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\calc.ps1 --no-cab --host --convert

クレジット

  • 素晴らしいブログを書いたRET2_pwn
  • 良いヒントをくれたj00sean
  • 最初のまともなPoCを提供したlockedbyte
  • 代替URIスキームのヒントをくれたMax_Mal
  • HTMLファイルサイズ制限のヒントをくれたwdormann
  • クールなCABレスバージョンのエクスプロイトを提供したEdu_Braun_0day
  • CVE-2022-30190(Follina)の研究をしたKevin Beaumont
ツールをダウンロード
攻撃HTMLテンプレートターゲット配信方法実行方法動作
攻撃のオリジナルバージョンcab-orig-*WORDDOCXCAB + DLLはい
j00seanのIE専用攻撃cab-orig-j00sanIEHTMLCAB + DLLはい
DLLなしの私のバージョンcab-uri-*WORDDOCXCAB + JS/VBSいいえ1
Eduardo B.のRARを使用した「CABレス」攻撃cabless-rar-*WORDRARWSFはい
修正版j00sean攻撃 + HTMLスムグリングcabless-smuggling-*IEHTMLJS/VBSはい2
Follina攻撃cabless-msdt-*WORDDOCX/RTFMSDT + PSはい3