
オープンリダイレクトの脆弱性を検出する概念実証ツールで、細工したペイロードをターゲットに送信し、301/302レスポンスとLocationヘッダーを検査します。
小さな概念実証ツール — 対象に特定のペイロードを送信し、301/302リダイレクト応答をチェックして、Location ヘッダーを報告します。
このリポジトリは教育・研究目的のみを意図しています。責任ある開示ポリシーに従ってください。以下に使用方法とビルド手順を示します。
このツールは、以下のペイロードを付加したリクエストをドメインに送信し、サーバーが301(恒久的に移動)または302(一時的に移動)で応答した場合、Location ヘッダーをチェックして潜在的な脆弱性を検出します。
ペイロード: /public/..%2F%5cgoogle.com%2F%3f%2F..%2F..
このプログラムは、CheckRedirect 関数を使用してGoの自動リダイレクト追従を無効にし、最初の応答を検査できるようにします。
以下のコマンドで実行可能ファイル(Windows .exe)をビルドできます:
# Linux/macOS
go build -o cve-2025-4123 main.go
# Windows (PowerShell or CMD)
go build -o CVE-2025-4123.exe main.go
Usage: CVE-2025-4123.exe [https://example.com]
例:
./CVE-2025-4123.exe https://target.example.com
このプログラムは以下のことを行います:
os.Args[1])にペイロードを付加したGETリクエストを送信します。Location ヘッダーを出力します: VULN FOUND: <location>CVE-2025-4123 Not Found を出力します。CheckRedirect コールバックを介して出力されます: Redirected to <URL>。検出成功(例):
VULN FOUND: https://google.com/
CheckRedirect コールバックによるリダイレクト追跡は次のように出力される可能性があります:
Redirected to https://google.com/
http.Get は301/302リダイレクトを自動的に追従します。このPoCでは、CheckRedirect を使用して自動追従を無効にし、Location ヘッダーに直接アクセスできるようにしています。Location ヘッダーは常に絶対URLであるとは限らず、相対パスや別の形式の場合があります。そのような場合は、url.Parse と resp.Request.URL.ResolveReference を使用して完全なURLを構築してください。--timeout などのフラグを追加する。-o/--output を追加する。Location ヘッダーを堅牢な解析・正規化で処理する。このPoCが実際の脆弱性を検出した場合は、対象組織のセキュリティチームに連絡し、責任を持って報告してください。公開開示を行う前に、組織と調整してください。