web-dev-qa-db-ja.com

Webサイトはブラウザーを介してLAN / Localhostのコンピューターにアクセスできますか?それらをブロックする方法は?

質問1:インターネットの閲覧中に、ローカルホストまたはLANでホストされているWebサイトまたはサービスにアクセスするコードをブラウザーから実行できますか?

質問2:また、イントラネットのWebサイト/サービスからのデータは、私のWebブラウザーを介してリモートサイトで実行されるコードを介してスクレイピング/ハッキング/盗難される可能性がありますか?

質問3:最近のWebブラウザーはこの種の攻撃からどのように保護しますか?

質問4:ローカルホストとイントラネットのアクセスをブラウザーから分離するにはどうすればよいですか?

6
nptxzs

ほとんどのブラウザは、WAN、LAN、ローカルホストを区別しません。これは、WANからのクロスサイトリクエストに対して、WAN上の異なるサイト間または同じ上の異なるサイト間と同じように、同じポリシーと制限を適用することを意味します。 LAN。

これは特に、[〜#〜] csrf [〜#〜]のようなクロスサイト攻撃が可能であり、そのような攻撃は長年-例をご覧ください 大規模攻撃により、ブラウザからルーターが乗っ取られます

また、[〜#〜] csrf [〜#〜]は不要なアクション(ルーターのDNS設定の変更など)のみを引き起こす可能性がありますが、他の攻撃の内部からデータを抽出するためのそれ自体:WebSocketでアクセスできる内部サイトがある場合、ブラウザをトランポリンとして使用することで、デフォルトで外部からもアクセスできます(Cross-Origin WebSocket)。内部サイトは、このアクセスを停止するためにリクエストのオリジンを明示的にチェックする必要があります(つまり、デフォルトでオープンで安全ではありません)。窃取を可能にする他の攻撃は、[〜#〜] xss [〜#〜]内部サイトに対する攻撃またはです。 DNS再バインド。また、内部サイトでクロスオリジンポリシー([〜#〜] cors [〜#〜])の安全でない設定を明示的に設定して、引き出しに使用できます。あまりにも。また、Flashを使用することにより、さらに多くのことが可能になる場合があります。

ほとんどのブラウザは内部サイトと外部サイトを区別しないため、このアクセスを防ぐことは困難です。これは、内部サイトが外部サイトと同じ保護を持っていることが期待されることを意味します。内部LANを外部の攻撃から保護するために使用される境界ファイアウォールでさえ、これらの攻撃はほとんどのファイアウォールからは見えない層で機能するため、通常、そのようなアクセスを防ぐことはできません。

このようなアクセスを制限する1つの方法は、複数のブラウザー(またはプロファイル)を使用することです。1つは内部サイト用で、もう1つは外部サイト用です。明示的なプロキシ経由でのみインターネットアクセスを許可することにより、アクセスを制限できます。1つのブラウザはすべてのサイトにプロキシが設定されているため、プロキシが内部サイトへのアクセスを許可しない場合にのみ、外部サイトにアクセスできます。他のブラウザにはプロキシが設定されていないため、内部サイトはできますが外部サイトはできません。この厳密な分離により、ブラウザーを介した外部と内部のクロスサイトアクセスが停止します。しかし、それはおそらくほとんどの環境でのユーザビリティに影響を与えます。

3
Steffen Ullrich

インターネットの閲覧中に、LocalhostまたはLANでホストされているWebサイトまたはサービスにアクセスするブラウザーを介して、Webサイトがコードを実行できますか?

他の回答には、DNSの再バインド、CSRFなどに関するいくつかの良い情報があります。しかし、ネットワークスキャンについて誰も言及しなかったことに驚いています。 JavaScriptを使用してローカルネットワーク全体をスキャンし、どのホストでどのポートが開いているかを判別できます。

これを行うWebサイトの例を次に示します。 http://www.andlabs.org/tools/jsrecon.html

ウェブサイトはあなたの許可や知識なしにこれを行うことができることに注意してください。

さらに、ローカルサービス(redis、memcached、elasticsearchなど)を実行している場合、次の投稿に示すように、ブラウザーから攻撃されることもよくあります。 https://bouk.co/blog/hacking -developers /

これらのサービスにデータを書き込むことはできますが、CORSはこれらのサービスからのデータの読み取りを阻止するため、DNS再バインド攻撃が発生するのはここです。

また、イントラネットのWebサイト/サービスからのデータは、私のWebブラウザーを介してリモートサイトで実行されるコードによってスクレイピング/ハッキング/盗難される可能性がありますか?

上記と同様に、これはターゲットWebサーバーによって設定されたCORSポリシーに依存します。これはDNS再バインドで回避できます。

最近のWebブラウザーはこの種の攻撃からどのように保護しますか?

あんまり;他の人が言ったように、ブラウザは実際にWAN= LANと区別しません。また、必ずしもこれを行うべきではありません。CORSは役立ちますが、DNS再バインドでバイパスできることを確認しました。

ブラウザからローカルホストとイントラネットへのアクセスを分離する方法は?

唯一の実際の解決策は、信頼できないJavaScriptをすべて無効にすることです。 NoScript拡張機能は主要なブラウザーで使用でき、かなり構成可能です。

PCをネットワークの残りの部分から分離しようとすることもでき、ブラウザがローカルサービスにアクセスできないようにする方法(iptablesを使用)があるかもしれません。しかし、これは退屈な作業になると思います。

2
multithr3at3d

はい、LANまたはlocalhostから実行されているサイトとサービスには、ブラウザーの悪意のある攻撃者を介して(場合によっては)アクセスできます。 cybernardによって言及されたブラウザのバグに加えて、これを可能にする他の(はるかに一般的な)攻撃があります。

悪意のあるjavascriptがブラウザーで実行されるため、ブラウザーが到達できるすべてのものを攻撃できることに注意してください。これには、ローカルホストやLANが含まれます。細工されたリクエストを拒否するかどうかは、アプリケーションによって異なります。

DNSリバインド攻撃

DNSリバインド攻撃 では、攻撃者は2つの異なるIPアドレスを参照するホスト名を使用します。まず、サーバーを参照し、そのサーバーからJavaScriptを含む悪意のあるページをロードします。 JavaScriptは待機してから、同じホスト名にanotherリクエストを送信しますが、その間、DNSサーバーはそのホスト名で使用されているIPアドレスをlocalhostまたはIPに変更しますあなたのLANで。 hostnamesameのままなので、悪意のあるjavascriptは問題なくアクセスできますローカルリソースであり、ローカルホストまたはLANからデータを読み取ることができます。

これは理論的な問題ではありません。TavisOrmandyがそのような Transmission BitTorrentクライアントの脆弱性 を見つけたところです。 デフォルト設定でルータを攻撃する に使用されています。

一部のDNSサーバー(一部のルーターに組み込まれているものを含む)は、インターネットからの応答で「ローカル」IP(RFC1918およびlocalhost)を受け入れないことにより、これに対する保護を提供しています。

クロスサイトリクエストフォージェリ

攻撃者がWebアプリケーションの状態を変更することのみを望んでおり、アプリケーションが Cross-Site Request Forgery (CSRF)に対して脆弱である場合、攻撃者はそのコンテンツを読み取ることさえできずにそのサイトに要求を行うことができます。ページ。 CSRFはOWASPトップ10に含まれているため、これが発生することはまれではありません。

CORS設定が正しくありません

[〜#〜] cors [〜#〜] を使用してクロスオリジンリクエストを許可するアプリケーションは、誤って設定され、ブラウザーで実行されている悪意のあるサイトからのクロスオリジンリクエストを許可する可能性があります。確かにLANやlocalhostに固有ではありませんが、影響を受ける可能性があります。

0
David