ドメインexample.comを持っています
URLを入力すると https://api.example.com 、Chromeがページをロードし、さらに https:// myapp。 example.com/favicon.ico 、そしてそのリクエストは** http://**main.example.comへの301リダイレクトを受け取り、そのHTMLコンテンツを受け取ります。
私はそれを修正する方法を知っていますが、何が起こるか興味があります。main.example.comがhttps上にないため、誰もが攻撃(DNSの置き換え)し、悪意のあるコンテンツで301リダイレクトに応答する可能性があります。
ファビコンリダイレクトだったので、Chromeは少なくともコードを実行するようには見えませんでした。
応答するようにmain.example.comを変更しました
<script type="text/javascript">alert("hola") </script>
しかし、アラートは実行されませんでした。
これはセキュリティ上の欠陥ですか?
あなたの質問によるとChromeはブラウザの警告なしでHTTPSページにプレーンなHTTPファビコンをロードしていました。興味深い。
プレーンHTTP Webサイトにリダイレクトすること自体は脆弱性ではありません。ただし、リダイレクトが誤って行われ、ユーザーがサイトへの安全で信頼できるチャネルにとどまるようにしたい場合は、セキュリティ上の欠陥です。
スクリプトのコンテンツはファビコンでは実行されませんが、Cookieドメインが正しく設定されておらず、 secure flag が設定されていない場合、リクエストがCookieをリークする可能性があります。攻撃者は、ユーザーがanyにアクセスした場合、yourサイトでもこれを行う可能性がありますプレーンHTTPのサイト。
ファビコンからトリガーされる可能性のあるブラウザーのエクスプロイト がある場合、ここではユーザーを危険にさらしている可能性がありますが、最初のリダイレクトとブラウザーのエクスプロイトは、サイトではなくブラウザーの欠陥です。
あなたが観察したように、攻撃者が保護されていない回線上のトラフィックを傍受して変更する可能性があるため、確かに脆弱性があります。
スクリプトが実行されなかった理由は、これがファビコンに入っていて、Chrome(どうやら)はファビコンでスクリプトを実行しない)ためです。
これを悪用するには、Chromeを取得して、ファビシオンでコードを実行する必要があります。
これを行う1つの方法は、ファビコンをレンダリングするコードでバッファオーバーフローを使用して、Chromeファビコンでペイロードを実行することです。
これを行う別の方法は、Chromeを取得してSVGファイルをファビコンとして受け入れ、スクリプトをSVG内のforeignObject
タグ内に配置することです。 (免責事項:私はこれを試していません)。
JavaScriptまたはMETAタグを使用したリダイレクト
... JavaScriptまたはMETAタグを介して301ステータスコードを送信することはできません。ページのHTTPステータスコードは200 OKのままなので...
...もう1つの欠点は、ブラウザによってはJavaScriptまたはMETAの更新が無効になることです。したがって、ページの本文に宛先ページへのリンクを含める必要があります...
... HTTPヘッダーまたは更新メタタグは、セキュリティ上の理由と、JavaScriptが一部のブラウザーと多くのWebクローラーによって実行されないため、優先される場合があります。
これらのリンクは、多くのブラウザがリダイレクトでMETAタグのJavaScriptを実行しないことを示しています(301)