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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-20660 — CVE-2026-20660 用のスタンドアロン PoC エクスプロイト: Safari の gzip デコーダーにおけるパストラバーサル。サーバーが悪意のある gzip を配信し、脆弱な macOS 上で任意のファイルを書き込みます。 | Kitploit
ツール/GitHubGitHub/retx0/cve-2026-20660
ペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト
GitHubretx0/cve-2026-20660

CVE-2026-20660

CVE-2026-20660 用のスタンドアロン PoC エクスプロイト: Safari の gzip デコーダーにおけるパストラバーサル。サーバーが悪意のある gzip を配信し、脆弱な macOS 上で任意のファイルを書き込みます。

リポジトリを見る
225ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-20660 PoC バンドル

このフォルダには、以下に対するスタンドアロンの概念実証(PoC)がパッケージされています:

  • CVE-2026-20660
  • CFNetwork NSGZipDecoder の gzip FNAME を介したパストラバーサル
  • 自動開封が有効な脆弱な macOS Safari への影響

1. ディレクトリ構成

  • server.py: トラバーサル深度とターゲット名を設定可能なメイン PoC サーバー
  • server_overwrite.py: ../../pwn.sh を書き込む特化バリアント
  • README.md: 再現メモと操作ログ

2. 前提条件

  1. 対象は脆弱な macOS Safari(26.3 パッチラインより前)であること。
  2. Safari の設定が有効になっていること:
    • 環境設定 -> 一般 -> ダウンロード後に「安全なファイル」を開く
  3. 対象ブラウザからこのホストにアクセスできること。

3. 根本原因の概要

パッチの差分では、-[NSGZipDecoder filenameWithOriginalFilename:] の動作が変更されたことが示されています:

  • 旧動作: gzip の FNAME から得られる名前をそのまま返す。
  • 新動作: 返す前に lastPathComponent を適用する。

これにより、FNAME 内の ../ などのディレクトリコンポーネントや絶対パスがブロックされます。

4. Content-Disposition がベクターにならない理由

HTTP のファイル名がクリーンであっても、エクスプロイトは成功します。

  • HTTP Content-Disposition のファイル名: クリーン(例: report.gz)
  • gzip ヘッダーの FNAME: 悪意のある値(例: ../../proof.txt)

Safari 側のサニタイズ処理は主に HTTP レイヤーのファイル名に適用され、脆弱なフローで NSGZipDecoder が使用する埋め込み gzip FNAME には適用されません。

5. クイックスタート

リポジトリのルートから:

root@kitploit:~
python3 exploit/cve-2026-20660/server.py --port 8888 --depth 2

脆弱な Safari で開く:

root@kitploit:~
http://<server-ip>:8888/

Trigger depth=2 をクリックします。

6. 検証

トリガー後、対象マシンで書き込み結果を確認します:

root@kitploit:~
ls -la ~/cve-2026-20660-proof.txt
cat ~/cve-2026-20660-proof.txt

上書きバリアントの場合:

root@kitploit:~
python3 exploit/cve-2026-20660/server_overwrite.py --port 9999

次に、以下を開きます:

root@kitploit:~
http://<server-ip>:9999/

確認:

root@kitploit:~
ls -la ~/pwn.sh
cat ~/pwn.sh

7. パラメータの説明(server.py)

  • --bind, -b: バインドアドレス(デフォルト 0.0.0.0)
  • --port, -p: リッスンポート(デフォルト 8888)
  • --depth, -d: トラバーサル深度(../ の繰り返し回数、デフォルト 2)
  • --name, -n: ターゲット出力ファイル名

例:

root@kitploit:~
# write to ~/proof.txt when depth matches runtime directory nesting
python3 exploit/cve-2026-20660/server.py -p 8888 -d 2 -n proof.txt

# explicit absolute path test (if resolver permits)
python3 exploit/cve-2026-20660/server.py -p 8888
# then use: /download?depth=0&fname=/tmp/proof.txt

8. 確認された動作(現在のメモ)

  1. 解凍は ~/Downloads 配下の一時ディレクトリで行われる場合があるため、~/ に脱出するには深度が 2 以上必要になることがよくあります。
  2. 既存のターゲットファイルは上書きされない場合があります。ダウンロードスタックが競合を避けるために自動的にリネームすることがあります。
  3. 確認された実行では、スクリプトペイロードに実行ビットが付与される場合があります。ビルド/構成ごとに検証してください。

9. トラブルシューティング

  1. 書き込みが確認されない場合:
    • Safari の自動開封設定が有効になっていることを確認する。
    • 深度を上げて(2、3、4)再テストする。
  2. ファイルが Downloads に残る場合:
    • 現在の解凍ディレクトリのネストに対して深度が浅すぎる。
  3. 接続に失敗する場合:
    • ホストのファイアウォールと LAN 到達可能性を確認する。
  4. ターゲットパスが変更されない場合:
    • 既存のファイル名との競合により、出力がリネームされる可能性がある。

10. 安全性と適用範囲

認可されたテスト環境でのみ使用してください。

  • 明示的な許可なくシステムを対象にしないでください。
  • 再現性を確保するため、ペイロードは非破壊的にしてください。
  • 評価の証拠としてスクリーンショット/ログを保存してください。

11. 推奨される証拠収集

  1. Safari のバージョンと OS ビルドのスクリーンショット。
  2. PoC サーバーのコンソールログ(リクエスト + FNAME)。
  3. ファイルシステムの検証コマンドとその出力。
  4. ターゲットパスの前後でのディレクトリリスト。

12. 詳細な解説

より詳細な説明については、以下を参照してください:

  • https://ret0.dev/posts/cve-2026-20660/
ツールをダウンロード