
このリポジトリは cve-2021-29447 と、自動的に悪用するための小さなスクリプトについて説明しています。
このリポジトリは、WordPressのメディアライブラリを通じて認証済みXML外部実体(XXE)攻撃を可能にした深刻なセキュリティ上の欠陥であるCVE-2021-29447の詳細を提供します。また、概念実証(PoC)を示す自動スクリプトも提供します。
この脆弱性は、アップロードされたオーディオファイル内のメタデータを処理する際のWordPressの実装に存在しました。具体的には:
根本原因: WordPressはgetID3ライブラリを使用して、WAVファイルなどのメディアファイルからメタデータを解析します。WAVファイルにはiXMLと呼ばれるXMLデータのチャンクを含めることができます。攻撃者はXMLコンテンツを含む悪意のあるWAVファイルを細工し、脆弱なライブラリがそれを解析するとXXE攻撃が引き起こされる可能性があります。
影響を受けるバージョン: WordPress 5.6から5.7。
主要な要件: WordPressのインストール環境がPHP 8で動作している必要があります。PHP 8でのLibxml2のデフォルト設定の変更がこのエクスプロイトの中心だったためです。
影響: 悪用に成功すると、任意のファイル開示(例: データベース認証情報を得るためのwp-config.phpの読み取り)やServer-Side Request Forgery(SSRF)につながる可能性があります。
以下は、iXMLサブチャンク内のXMLデータを解析しようとするコードスニペットです:
プロセス全体を自動化: 悪意のあるWAVファイルとDTDを作成し、対象のWordPressサイトへのファイルアップロードを処理し、外部へ持ち出されたデータを受信するリスナーをセットアップします。
設定可能: 外部持ち出しの対象ファイルパスを指定できます。
./payload.sh でスクリプトを実行します。