ツール概要
- 世界初の単一ファイルでCVE-2023-4357 Chrome XXE脆弱性を利用するEXP。訪問者のローカルファイルを窃取可能。
- 世界初の単一ファイルでCVE-2023-4357 Chrome XXE脆弱性を利用するEXP。攻撃者が訪問者のローカルファイルを取得可能。
| ファイル名 | 説明 | 利用シナリオ | なぜ単一ファイル/単一ペイロードで脆弱性を利用できるのか? |
|---|
| d.svg | 単一ファイル利用、他のファイルに依存しない | 1. XSSが可能な場合、iframe内にsvgリンクをネスト。 2. ボタンをクリックすると、svg画像の新しいウィンドウがポップアップ。 | 自己完結型。最初のエンティティ宣言で外部エンティティを参照するとブロックされる。そこで、自身を外部XML文書として自己包含し、その後再度エンティティ宣言で外部エンティティを参照する。その際、2回の参照の形式が互いに互換性がありエラーにならないようにすることで、ブロックを回避しローカルファイルを読み取る。 |
| xss.html | 単一ペイロード利用、他のファイルに依存しない | XSSが可能で、どのサイトにもsvgファイルをアップロードしたくない場合、xss.htmlの内容をペイロードとしてコピー。 | object要素、data:image/svg+xml;base64、data:text/xsl;base64 |
興味深い共有
- この単一ファイルEXPは、
TPCTF 2023 情報セキュリティコンテストの出題アイデアのソースとして使用されました(コンテストはTP-Link、清華大学、北京大学の共同開催)。
- 問題:
Xssbot および Xssbot but not Internet
- 賢い参加者は私が注釈した
//You can send p.innerHTML by POST.に気づきました:cn-sec、xmcve、jbnrz
- 情報セキュリティの初心者に面白い学習リソースを提供できることが、このオープンソースプロジェクトの存在意義の一つです
脆弱性概要
| 情報 | 内容 |
|---|
| 脆弱性名 | Chromium XXE |
| 脆弱性番号 | CVE-2023-4357 |
| リスクレベル | 高 |
| 脆弱性タイプ | XXE |
| 利用難易度 | 低 |
脆弱性の説明
- 脆弱性の根本はlibxsltにあります。デフォルトでは、ChromiumはXML文書のエンティティ宣言で参照される外部エンティティURLがクロスドメインかどうかを厳密に検証します。しかし、Chromiumが最初にXSLスタイルシートとして解析し、次にdocument()を呼び出して外部XML文書を含める場合、Chromiumはこの外部XML文書URLのクロスドメイン検証を行わず、訪問者のローカルファイルが漏洩します。
影響を受けるバージョン
再現スクリーンショット
| 訪問者環境 | スクリーンショット |
|---|
| Linux + Chromium |  |
| Windows + Chromium |  |
| MacOS + 微信Mac版 |
再現1
- 訪問者環境:
- Chromeをダウンロードして実行
wget https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/114.0.5735.90/linux64/chrome-linux64.zip
unzip chrome-linux64.zip
./chrome-linux64/chrome --no-sandbox
- Webサーバーを起動
wget https://codeload.github.com/xcanwin/CVE-2023-4357-Chrome-XXE/zip/refs/heads/main -O CVE-2023-4357-Chrome-XXE.zip
unzip CVE-2023-4357-Chrome-XXE.zip
python3 -m http.server 8888 -d CVE-2023-4357-Chrome-XXE-main
- ブラウザでアクセス
http://127.0.0.1:8888/d.svg
再現2
- 訪問者環境:
- Chromeをダウンロードして実行
https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/114.0.5735.90/win64/chrome-win64.zip
./chrome-win64/chrome --no-sandbox
- Webサーバーを起動
https://codeload.github.com/xcanwin/CVE-2023-4357-Chrome-XXE/zip/refs/heads/main
python3 -m http.server 8888 -d CVE-2023-4357-Chrome-XXE-main
- ブラウザでアクセス
http://127.0.0.1:8888/d.svg
再現3
- 訪問者環境:
-
微信Mac版をダウンロードして実行
-
Webサーバーを起動
wget https://codeload.github.com/xcanwin/CVE-2023-4357-Chrome-XXE/zip/refs/heads/main -O CVE-2023-4357-Chrome-XXE.zip
unzip CVE-2023-4357-Chrome-XXE.zip
python3 -m http.server 8888 -d CVE-2023-4357-Chrome-XXE-main
- ファイル転送アシスタントに送信してアクセス
http://127.0.0.1:8888/d.svg