
セキュリティスキャナー(現在はAI 🤖 搭載)で、Webアプリケーション内の潜在的なServer Side Request Forgery(SSRF)パラメータを検出します。See-SURFは、潜在的なSSRFパラメータの検出を支援するだけでなく、その検証も行い、システムとユーザーデータの漏洩からアプリケーションを保護します。

本ソフトウェアを研究論文や記事などで使用する場合は、引用してください。
@software{Agrawal_See-SURF_Detect_SSRF_2019,
author = {Agrawal, Vaibhav},
month = jul,
title = {{See-SURF: Detect SSRF security vulnerability}},
url = {https://github.com/In3tinct/See-SURF},
version = {2.0.0},
year = {2019}
}
自動偵察: マルチスレッドクローラーがデータを収集・解析し、強力な正規表現マッチング(例:url、website、IPアドレスなどのキーワードにマッチ)を使用して潜在的なSSRFパラメータを特定します。ログインページの背後にあるエンドポイントをスキャンするためのCookieベースの認証をサポートします。
Burp Suite統合: Burp Suiteのサイトマップ(.xml)をシームレスに解析し、クロール前にさらに広範囲のパラメータを発見します。
検証と悪用: 新しいAI統合機能では、Google GeminiやOpenAIなどのプロバイダーによるAI搭載検出を実現し、応答ヘッダーを分析してカスタムペイロードを生成します。また、AWSメタデータなどの内部サービスを標的とするスマートなピボットメカニズムと、機密データの漏洩を確認するための自動脆弱性検証(Reflected/Non-blind SSRF向け)を備えています。
ブラインドSSRF検出: Webhook.site(デフォルト)またはユーザー提供のドメインを使用したOut-of-Band(OOB)検出を統合し、サーバーが直接応答を返さない脆弱性を特定します。

git clone https://github.com/In3tinct/See-SURF.git
cd See-SURF/
pip3 install -r requirements.txt
python3 see-surf.py -H https://www.target.com
# Google Geminiを使用
python3 see-surf.py -H http://vulnerable-site.com -p google -m gemini-1.5-flash --api-key YOUR_KEY
# OpenAI GPT-4を使用
python3 see-surf.py -H http://vulnerable-site.com -p openai -m gpt-4 -a YOUR_KEY
# ローカルのOllamaを使用
python3 see-surf.py -H http://vulnerable-site.com -p ollama -m llama3
python3 see-surf.py -H https://www.target.com -c "cookie_name1=value1 cookie_name2=value2"
python3 see-surf.py -H https://www.google.com -c cookie_name1=value1 cookie_name2=value2 -b burp_file.xml
-H スキャンするホスト名/IPアドレス
-c 認証スキャン用のCookie(スペース区切り。一部のWebサイトではセッション追跡に複数のCookieを使用します)
-p AIプロバイダー:ollama(ローカル推論用)、gemini、OpenAI chatgpt、Anthropic claude
-m 具体的なモデル名(例:gemini-1.5-flash、gpt-4o、llama3)
-a 選択したプロバイダーのAPIキー(API_KEY環境変数としても設定可能)
-e ブラインドSSRFのOOBEテスト用に、http://google.com 形式のカスタム外部ドメインを指定。指定しない場合、デフォルトでwebhook.siteが使用されます。
-b (オプションですが推奨)Burp Suiteのサイトマップを使用してリクエストをスパイダーします。サイトマップファイルをエクスポートし、それをsee-surfに入力として与えます(詳細な機能は下記参照)。
-v (オプション)デフォルトでは通常モードがオンです。冗長スイッチを使用すると、異なるエンドポイントで同じ脆弱なパラメータを表示します。同じパラメータがすべての場所でサニタイズされているとは限りません。ただし、冗長モードは多くのノイズを生成します。
[-] -b スイッチ Burpのサイトマップには、ターゲットアプリケーションを探索する際にBurpが収集する情報(URLなど)が表示されます。Burpのサイトマップファイルを指定すると、潜在的なSSRFパラメータをより良く発見できます。スクリプトは最初にBurpファイルを解析して潜在的なパラメータを特定し、次に内蔵クローラーを実行します。
Burp Suiteをバックグラウンドで実行しながらターゲットをブラウズし、いくつかのGET/POSTリクエストを行ってください(多ければ多いほど良いです)。次に、ターゲットタブで右クリック→「選択したアイテムを保存」を選択して保存します。それを以下のようにスクリプトに渡します。

発見: スクリプトはターゲットをクロールして <a> リンクや <form> 入力を探すか、Burpサイトマップファイルを解析します。
パラメータマッチング: パラメータ名(例:url、redirect、dest)または値のURLパターンに含まれるキーワードを探します。
カナリアプロービング(非ブラインド): 最初に http://example.com へのフェッチを試みます。応答に「Example Domain」のシグネチャが見つかった場合、潜在的なReflected/Non-blind SSRFとして報告します。
AI指紋採取と悪用(非ブラインド): AIが有効な場合、サーバーヘッダーとテクノロジースタックを分析し、AWSなどの内部サービス向けの特定のペイロードを生成します。
検証(非ブラインド): AIが攻撃応答の結果をレビューし、返されたデータが実際に機密情報または内部情報であるかどうかを確認し、誤検知を減らします。
OOBEプロービング(ブラインド): 潜在的なパラメータごとに一意のWebhook.siteペイロードを生成します。その後、Webhook APIをポーリングして、ターゲットサーバーが外部リクエストを行ったかどうかを確認します。
See-SURFは、事前の相互同意を得たターゲットのスキャンに使用してください。エンドユーザーが責任を負うものであり、開発者は一切の責任を負わず、本プログラムの誤用や損害についても責任を負いません。このツールは教育目的、または明示的な許可を得たドメインに対してのみ使用してください。自己責任で使用してください。
GNU V3 © [In3tinct]