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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2023-43804 — CVE-2023-43804 urllib3のクロスオリジンリダイレクトによるCookie漏洩を再現するコンテナ化された3層ラボ。エクスプロイトスクリプトとパッチ検証付き。 | Kitploit
ツール/GitHubGitHub/deepanshu-khurana/cve-2023-43804
防御ツールコンテナセキュリティ脆弱性分析エクスプロイトウェブセキュリティペネトレーションテスト学習と教育ラボと実践
GitHubdeepanshu-khurana/cve-2023-43804

CVE-2023-43804

CVE-2023-43804 urllib3のクロスオリジンリダイレクトによるCookie漏洩を再現するコンテナ化された3層ラボ。エクスプロイトスクリプトとパッチ検証付き。

リポジトリを見る
4時間34分前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2023-43804: urllib3 Cookie漏洩の再現と修復ラボ

このリポジトリには、完全にコンテナ化された3層のラボ環境が含まれており、CVE-2023-43804(クロスオリジンリダイレクト時に発生するurllib3のCookie漏洩)の実証、悪用、および修正の検証を目的としています。


1. ラボ環境とアーキテクチャ

このラボはDocker Composeを使用してオーケストレーションされ、内部ブリッジネットワークを介して通信する3つの分離されたサービスで構成されています:

  • victim_client: 再現およびエクスプロイトスクリプト(exploit.py)を実行するPythonベースのコンテナ。
  • target_app: 外部オリジンへのHTTP 302クロスオリジンリダイレクトをトリガーする、脆弱なターゲットサーバーをシミュレートするFlaskウェブアプリケーション。
  • attacker_app: 受信したHTTPリクエストをキャプチャし、漏洩したヘッダーを抽出するために設計されたFlaskログサーバー。

2. 前提条件とシステム要件

  • Docker Desktopがインストールされ、実行中であること。
  • Docker Compose(v2以降)。
  • PowerShellまたは任意の標準コマンドラインシェル。

3. インストールとセットアップ手順

  1. リポジトリをクローンし、プロジェクトディレクトリに移動します:
    root@kitploit:~
    git clone [https://github.com/deepanshu-khurana/cve-2023-43804-lab.git](https://github.com/deepanshu-khurana/cve-2023-43804-lab.git)
    cd cve-2023-43804-lab
    
    
    
    
  2. コンテナ化されたラボインフラストラクチャをビルドして起動します:
root@kitploit:~
docker compose up -d --build


4. ラボの起動と停止方法

  • ラボコンテナの起動:
root@kitploit:~
docker compose up -d

  • ラボの停止とリソースのクリーンアップ:
root@kitploit:~
docker compose down --volumes


5. 脆弱性の概要(CVE-2023-43804)

  • 脆弱なコンポーネント: urllib3
  • 脆弱なバージョン: < 1.26.17 または < 2.0.5
  • 脆弱性の説明: urllib3は、異なるオリジン間でHTTP 302リダイレクトを追跡する際に、機密性の高い認証ヘッダー(Cookieなど)を削除できませんでした。これにより、信頼できないリダイレクトエンドポイントが機密性の高いセッショントークンを傍受できる可能性がありました。

6. 脆弱性の悪用方法(フェーズ1)

  1. クライアントコンテナ内に脆弱なバージョンのurllib3がインストールされていることを確認します:
root@kitploit:~
docker exec -it victim_client pip install urllib3==1.26.16

  1. エクスプロイトスクリプトを実行します:
root@kitploit:~
docker exec -it victim_client python3 -u /lab/exploit.py

  1. 予想される脆弱な結果:
  • クライアントの出力に、漏洩したセッショントークンとともに"status": "EXFILTRATED"が表示されます。
  • docker logs attacker_appに、キャプチャされた機密性の高いCookieヘッダーが表示されます。

7. 検出および検証メカニズムの実行方法(フェーズ2)

エクスプロイトを確認した後、パッチを検証するには:

  1. クライアントコンテナ内のurllib3をパッチ適用済みバージョンにアップグレードします:
root@kitploit:~
docker exec -it victim_client pip install urllib3==1.26.17

  1. エクスプロイトスクリプトを再実行します:
root@kitploit:~
docker exec -it victim_client python3 -u /lab/exploit.py

  1. 予想されるパッチ適用済みの結果:
  • クライアントの出力に"status": "SECURE", "stolen_cookie": "None / Stripped"が表示されます。
  • attacker_appのログで、受信リクエストにLeaked Cookie Header: Noneが含まれていることが確認されます。

8. 修復

  • ライブラリのアップグレード: requirements.txt内の依存関係を更新して、安全なバージョンを強制します:
root@kitploit:~
urllib3>=1.26.17

  • 多層防御: レガシーランタイムを維持する場合は、カスタムのRetry設定でremove_headers_on_redirectを介してヘッダー管理ポリシーを明示的に構成します。

9. トラブルシューティングの注意事項

  • コンテナの命名: Docker Composeによって割り当てられたコンテナ名(victim_client、target_app、attacker_app)を正確に指定していることを確認してください。docker psを使用して、アクティブなコンテナ名を確認してください。
  • ポートの可用性: Dockerスタックを起動する前に、ポート5000および5001が他のローカルサービスによって占有されていないことを確認してください。

10. ラボのデモンストレーションと結果

フェーズ1:脆弱な状態(Cookie漏洩)

脆弱なurllib3==1.26.16でラボを実行すると、機密性の高い認証Cookieがクロスオリジンリダイレクトを介して傍受され、攻撃者サーバーによって正常にログに記録されます。

  • クライアント出力とサーバーログのキャプチャ: Vulnerable Execution and Log Capture
    • 図1.1: exploit.pyが漏洩したセッショントークンとともに"status": "EXFILTRATED"を表示し、attacker_appのログ出力によって検証されています。

フェーズ2:パッチ検証(安全な状態)

urllib3をパッチ適用済みバージョン(1.26.17)にアップグレードした後、ライブラリはクロスオリジンリダイレクト時に機密性の高いCookieヘッダーを自動的に削除します。

  • パッチ適用済みバージョンへのパッケージアップグレード: Urllib3 Upgrade

    • 図2.1: pip install urllib3==1.26.17を介してvictim_client内のurllib3をアップグレードしています。
  • 安全なクライアント出力と削除されたログ: Secure Execution and Log Capture

    • 図2.2: exploit.pyが"status": "SECURE"と"stolen_cookie": "None / Stripped"を返し、サーバーログがLeaked Cookie Header: Noneを示すことで確認されています。
ツールをダウンロード