最近、我々は次のような記事を書いた。 XSS脆弱性に関するWebアプリケーションのセキュリティ.今回は、もうひとつの危険について注意を喚起したい。
本稿で取り上げる脆弱性は、長い間私たちの身近に存在してきたものだが、その単純さゆえに、過小評価されたり、知られていないことさえある。 ウェブアプリケーション開発者.
ほとんどすべてのウェブアプリケーションは、クリックすると新しいタブで開き、元のページのあるタブを閉じないようにするリンクを含んでいます。このような動作が好まれるのは、制作者がユーザーにアプリケーション内でできるだけ多くの時間を過ごしてもらいたいからです。
この脆弱性を悪用した攻撃に、いわゆる "逆タブナビ "がある。これは、ターゲット・ページからリンクされたページが、そのページを例えばフィッシング・サイトに置き換えてしまう攻撃である。
攻撃シナリオ
- ターゲット="_blank "経由でリンクを開くことで知られるフェイスブックを被害者が使っているとする、
- 偽のバイラルページを作る、
- フェイスブックのサインインページのようなフィッシングサイトを作る、
- 以下のように コード 例えば、発見されたXSS脆弱性を介して、ウイルスページ上で
window.opener.location = 'https://phishing-website/facebook.com';
- 被害者はフェイスブック上のリンクをクリックし、バイラルページにアクセスする、
- このバイラル・ページは、フェイスブックのタブをフィッシング・ウェブサイトにリダイレクトし、ユーザーに再度サインインするよう求める。
そのため、Web APIからウィンドウ・オブジェクトを使って、感染したターゲット・ページから親タブを変更することができる。通常、攻撃は発見された複数の脆弱性とフィッシング詐欺を並行して使用する。
問題点
を持つリンクを使ってブラウザで新しいタブを開くと、新しいタブが表示される。 target="_blank"
属性があれば、新しいタブから「リファラー」にアクセスできる。具体的には オープナー
プロパティの 窓
オブジェクトへの参照を返す。
これは ウィンドウを開く
関数にアクセスできる。この属性にアクセスすれば、親ページを簡単に置き換えることができます。最近のブラウザでは ウィンドウオープナー
関数を ヌル
この動作を防ぐために
コード例
<code> <a href="https://github.com" target="_blank">GitHubへ - 感染リンク</a>
コンスト if (link) link[0].onclick = () => { とする。 if (window) window.opener.location = 'https://stackoverflow.com' }
上記の感染したリンクを見ると、本来はGitHubのページが新しいタブで開きますが、その間に「親」ページがStackoverflowサイトに変更されます。
実例
1.HTMLリンク
追加 rel="noopener noreferrer"
に対する <a>
タグを付けている。
について リレー
属性は、リンクされたリソースと現在の文書との関係を定義します。
ヌープナー
は、そのターゲットを開いた親へのアクセスを許可せずに、そのターゲットに移動するようにブラウザに指示します。ターゲットタブ ウィンドウオープナー
は ヌル
.
ノルウェー人
ブラウザがターゲットにナビゲートする際に、アドレスやその他の値をリファラーとして リファラ
HTTPヘッダー。このHTTPヘッダー名は、意図的に "referrer "とスペルミスされていることに注意。
2. JavaScript リンク
JavaScript用 ウィンドウを開く
関数に値を追加することができる。 ヌープナー
そして ノルウェー人
での ウィンドウの特徴
パラメーターの ウィンドウを開く
関数を使用することをお勧めしますが、ブラウザによって反応が異なる場合があります。 ウィンドウオープナー
として ヌル
使用後 ウィンドウを開く
関数である。
もっと読む:
この記事に興味を持たれた方は、Githubでルカシュをフォローしてください: https://github.com/twistezo