このリポジトリには、Seleniumライブラリを使用してSwagger UIのクロスサイトスクリプティング(XSS)脆弱性の概念実証(POC)を示すPythonスクリプトが含まれています。このPOCの目的は、悪意のあるペイロードを使用してSwagger UIを悪用することで、この脆弱性の影響を受けるサイトを特定することです。
Swagger UIは、ユーザーフレンドリーなインターフェースを介してAPIを表示し操作するために広く使用されているツールです。しかし、バージョン2.9.2では、攻撃者が読み込まれたSwagger UIページに悪意のあるJavaScriptコードを注入できる可能性があるクロスサイトスクリプティング(XSS)脆弱性が確認されました。
XSSは、アプリケーションがユーザー入力データをページに表示する前に適切に検証しない場合に発生します。この場合、攻撃者はSwagger UIの入力フィールドに悪意のあるJavaScriptコードを挿入することで脆弱性を悪用でき、そのコードは同じ侵害されたページにアクセスする他のユーザーのブラウザコンテキストで実行されます。

注: 上記の画像は、攻撃者が影響を受けるバージョンのセキュリティ上の欠陥を利用して、Swagger UIにXSSペイロードを挿入する方法の例を示しています。
この脆弱性を緩和する最も効果的な方法は、Swagger UIを影響を受けないバージョンに更新することです。最新のSwagger UIバージョンを確認し、常に最新の状態に保ってください。
Swagger UIを使用またはカスタマイズしたい開発者は、ユーザー入力をインターフェースに表示する前に適切に検証することが不可欠です。ユーザーが挿入したHTMLやJavaScriptを直接レンダリングしないことは、XSS脆弱性を回避するための推奨プラクティスです。
以下は、Swagger UIを使用して脆弱性を悪用する方法の簡略化された例です。
このセクションは教育および情報提供のみを目的としています。悪意のある違法行為を奨励したり関与したりしないでください。脆弱性を報告する際は、常に責任ある開示の慣行に従ってください。
スクリプトを実行する前に、以下の前提条件がインストールされていることを確認してください。
pip install selenium
このリポジトリをマシンにクローンまたはダウンロードします。
sites_para_testar.txtファイルを編集し、テストしたいサイトのURLを1行に1つずつ入力します。
リポジトリフォルダでターミナルを開き、次のコマンドでスクリプトを実行します。
python main.py
スクリプトはsites_para_testar.txtファイルにリストされたサイトを巡回し、そのSwagger UIのURLにアクセスしてXSSアラートが検出されるかどうかを確認します。結果は3つのファイルに記録されます:valido.txt(潜在的に脆弱なURL)、talvezvalido.txt(脆弱である可能性のあるURL)、naovalido.txt(脆弱でないURL)。
このスクリプトはSeleniumライブラリを使用してChromeブラウザとの操作を自動化します。sites_para_testar.txtファイルに設定されたSwagger UIのURLを読み込み、configUrlパラメータに悪意のあるペイロードを追加し、XSSアラートがトリガーされるかどうかを確認します。
スクリプトは以下の手順で動作します。
sites_para_testar.txtファイルからテストするサイトを読み込み、それらを反復処理します。valido.txt、talvezvalido.txt、またはnaovalido.txtファイルに記録します。このスクリプトは教育およびサイバーセキュリティ意識向上の目的でのみ提供されています。悪意のある目的や違法な目的で使用すべきではありません。作者は、本スクリプトの誤用または使用に起因するいかなる損害についても責任を負いません。
このスクリプトを改善する方法や提案がある場合は、プルリクエストを作成してください。
このプロジェクトはMITライセンスの下でライセンスされています。