問題タブ [ssrf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - URL が公開されているかどうかを確認する方法 (アンチ SSRF)?
ユーザーが URL を入力できるようにするフォームがサイトにあり、node.js アプリはrequest
モジュールを使用してその URL を取得し、応答を分析し、データをユーザーに出力します。
不正なユーザーが 127.0.0.1、localhost、192.168.0.1 などのイントラネット アドレスを入力できないようにしたいと考えています。これは潜在的なセキュリティ リスクと思われるためです。dns.lookup
ホストの IP を 2 回 (最初に で、次に で)クエリせずに行うことはできrequest module
ますか?
python - ユーザーからの URL を使用したサーバー側の urllib2.urlopen に関するセキュリティ上の考慮事項
ユーザーが URL を指定して Web から画像をアップロードできるようにしたいと考えています。CORSの問題とホットリンク防止の可能性があるため、クライアントに画像を取得してアップロードさせることができないと思うので、サーバーにそれを行わせています。
最大の懸念は、ユーザーが単に入力することfile:///home/user/secret_image.jpg
です。この URL はサーバーに送信され、django はそれをローカル サーバー側のファイルとして喜んでフェッチし、世界が参照できるようにホストします。外部リソースへのリクエストを制限する方法はありますか? このアプローチを安全にするにはどうすればよいですか (少なくとも -ish)?
その他の懸念としては、ユーザーがローカル アドレスに解決されるホスト名を提供したり、ローカル アドレスへのパブリック URL リダイレクトを提供したりすることがあります。通常はアクセスできない LAN 上の他のデバイスにもアクセスできます。
URL テキストのフィルタリングはオプションではありません。おそらく、urllib の続行を許可する前に、IP がゲートウェイにルーティングされ、宛先がサブネットの外部にあることを確認できます。リダイレクトをブロックすることもできますが、これは場合によっては便利な機能になる可能性があるため、IP を再チェックするリダイレクト ハンドラを作成することもできます。現在、これはパッチ作業のように感じられ始めており、すべてのケースに対応する優れた堅牢なソリューションではありません。
また、ファイルが巨大な場合のような基本的なことも行ってread(max_size)
おり、python-magic を使用して MIME タイプをチェックし、拡張子を選択しdjango-ratelimit
、urlopen()
.
編集:関連する回答
php - PHPでURLを渡すパス情報を介してSSRFを防ぐにはどうすればよいですか?
脆弱性について Acunetix を使用してコードをスキャンした後、次のスクリプトに問題がありました。
「ドメイン hit0yPI7kOCzl.bxss.me に対して HTTP 要求が開始されました。これは、このスクリプトが SSRF (サーバー サイド リクエスト フォージェリ) に対して脆弱であることを示しています。」
どうすればこれを防ぐことができますか?
shell - SSRF を使用してシェルを取得しますか?
私は侵入テストを学んでおり、SSRF を使用してサーバー上でシェルを取得することは可能であると言っている人に出くわしましたが、これがどのように行われるかはどこにもわかりません。あなたたちが私を助けてくれることを望んでいました。乾杯
asp.net - ASP.NET で VeraCode CWE ID 918 - (SSRF) を修正できない
簡単に言えば、私が何を試しても、VeraCode はコードの 8 行に CWE 918 の欠陥としてフラグを立て続けます。これは古いコードなので、なぜ突然フラグが立てられるのかわかりません。
これは、フラグが立てられた行が太字になっている[問題のある]メソッドの例です
これは、拡張メソッドを使用して URL を検証する、私が提案した修正です。
VeraCode 属性を持つ拡張メソッドは次のとおりです。
属性に基づいて VeraCode に自動的に軽減させることはできますが、クライアントは独自のスキャンを実行するため、その設定は有効になりません。
これを解決する方法についてのアイデアをいただければ幸いです。