Translated ['src/pentesting-web/clickjacking.md'] to ja

This commit is contained in:
Translator 2025-01-06 10:28:42 +00:00
parent 560689614b
commit d0a013027c

View File

@ -4,18 +4,18 @@
## What is Clickjacking
クリックジャッキング攻撃では、**ユーザー**が**見えない**か、別の要素に偽装された**要素**をウェブページ上で**クリック**するように**騙され**ます。この操作は、ユーザーにとって意図しない結果を引き起こす可能性があり、マルウェアのダウンロード、悪意のあるウェブページへのリダイレクト、資格情報や機密情報の提供、金銭の移動、または商品のオンライン購入などが含まれます。
クリックジャッキング攻撃では、**ユーザー**が**見えない**か、別の要素に偽装された**要素**をウェブページ上で**クリック**するように**騙されます**。この操作は、ユーザーにとって意図しない結果を引き起こす可能性があり、マルウェアのダウンロード、悪意のあるウェブページへのリダイレクト、資格情報や機密情報の提供、金銭の移動、または商品のオンライン購入などが含まれます。
### Prepopulate forms trick
時には、**ページを読み込む際にGETパラメータを使用してフォームのフィールドの値を埋める**ことが可能です。攻撃者はこの動作を悪用して、任意のデータでフォームを埋め、ユーザーがSubmitボタンを押すようにクリックジャッキングペイロードを送信することができます。
時には、**ページを読み込む際にGETパラメータを使用してフォームのフィールドの値を埋める**ことが可能です。攻撃者はこの動作を悪用して、任意のデータでフォームを埋め、ユーザーがSubmitボタンを押すようにクリックジャッキングペイロードを送信することがあります。
### Populate form with Drag\&Drop
ユーザーに**フォームを埋めてもらいたい**が、特定の情報(知っているメールアドレスや特定のパスワードなど)を直接書くように頼みたくない場合、**Drag\&Drop**してもらうように頼むだけで、あなたの制御されたデータを書き込むことができます。これは[**この例**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/)のように行えます。
ユーザーに**フォームを埋めてもらいたい**が、特定の情報(知っているメールアドレスや特定のパスワードなど)を直接書くように頼みたくない場合、**Drag\&Drop**してもらうように頼むだけで、あなたの制御たデータを書き込むことができます。これは[**この例**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/)のように行えます。
### Basic Payload
```markup
```css
<style>
iframe {
position:relative;
@ -35,7 +35,7 @@ z-index: 1;
<iframe src="https://vulnerable.com/email?email=asd@asd.asd"></iframe>
```
### マルチステップペイロード
```markup
```css
<style>
iframe {
position:relative;
@ -59,7 +59,7 @@ left:210px;
<iframe src="https://vulnerable.net/account"></iframe>
```
### ドラッグ&ドロップ + クリックペイロード
```markup
```css
<html>
<head>
<style>
@ -89,12 +89,21 @@ background: #F00;
```
### XSS + Clickjacking
もしあなたが**ユーザーがクリックする必要があるXSS攻撃**を特定し、そのページが**クリックジャッキングに脆弱**であれば、ユーザーをボタン/リンクをクリックさせるためにそれを悪用することができます。\
もしあなたが**ユーザーがクリックする必要があるXSS攻撃**を特定し、ページが**クリックジャッキングに脆弱**であれば、ユーザーを騙してボタン/リンクをクリックさせるためにそれを悪用することができます。\
例:\
あなたはアカウントのいくつかのプライベートな詳細に**自己XSS**を見つけました(**あなたのみが設定および読み取ることができる**詳細)。これらの詳細を設定するための**フォーム**が**クリックジャッキングに脆弱**であり、GETパラメータで**フォーム**を**事前入力**することができます。\
攻撃者は、そのページに対して**クリックジャッキング**攻撃を準備し、**XSSペイロード**で**フォーム**を**事前入力**し、**ユーザー**を**フォームを送信**させるように**騙す**ことができます。したがって、**フォームが送信されると**、値が変更され、**ユーザーはXSSを実行することになります**。
攻撃者は、そのページに対して**XSSペイロード**で**フォーム**を**事前入力**し、**ユーザー**を**フォームを送信**させるように**騙す**ための**クリックジャッキング**攻撃を準備することができます。したがって、**フォームが送信され**、値が変更されると、**ユーザーはXSSを実行します**。
## Clickjackingを軽減するための戦略
### ダブルクリックジャッキング
最初に[この投稿で説明された](https://securityaffairs.com/172572/hacking/doubleclickjacking-clickjacking-on-major-websites.html)この技術は、犠牲者に特定の場所に配置されたカスタムページのボタンをダブルクリックさせ、ダウンイベントとクリックイベントの間のタイミングの違いを利用して、ダブルクリック中に犠牲者のページを読み込むことで、**犠牲者が実際に犠牲者のページの正当なボタンをクリックする**ことを可能にします。
例はこのビデオで見ることができます:[https://www.youtube.com/watch?v=4rGvRRMrD18](https://www.youtube.com/watch?v=4rGvRRMrD18)
> [!WARNING]
> この技術は、クリックジャッキングに対するすべての保護を回避して、犠牲者のページの1つの場所をクリックさせることを可能にします。したがって、攻撃者は**OAuthの権限を受け入れるプロンプトのように、1回のクリックで実行できる敏感なアクションを見つける必要があります**。
## クリックジャッキングを軽減するための戦略
### クライアントサイドの防御
@ -102,13 +111,13 @@ background: #F00;
- アプリケーションウィンドウがメインまたはトップウィンドウであることを確認する。
- すべてのフレームを表示可能にする。
- 見えないフレームのクリックを防ぐ。
- 見えないフレームのクリックを防ぐ。
- 潜在的なクリックジャッキングの試みを検出し、ユーザーに警告する。
しかし、これらのフレームバスティングスクリプトは回避される可能性があります:
ただし、これらのフレームバスターのスクリプトは回避される可能性があります:
- **ブラウザのセキュリティ設定:** 一部のブラウザは、セキュリティ設定やJavaScriptサポートの欠如に基づいてこれらのスクリプトをブロックする場合があります。
- **HTML5 iframe `sandbox`属性:** 攻撃者は、`allow-top-navigation`なしで`allow-forms`または`allow-scripts`の値を持つ`sandbox`属性を設定することでフレームバスタースクリプトを無効化できます。これにより、iframeは自分がトップウィンドウであるかどうかを確認できなくなります。
- **HTML5 iframe `sandbox`属性:** 攻撃者は、`allow-top-navigation`なしで`allow-forms`または`allow-scripts`の値を持つ`sandbox`属性を設定することでフレームバスタースクリプトを無効化できます。これにより、iframeは自分がトップウィンドウであるかどうかを確認できなくなります。
```html
<iframe
id="victim_website"
@ -128,7 +137,7 @@ sandbox="allow-forms allow-scripts"></iframe>
- `X-Frame-Options: allow-from https://trusted.com` - 指定された 'uri' のみがページをフレーム化できます。
- 制限に注意してくださいブラウザがこのディレクティブをサポートしていない場合、機能しない可能性があります。一部のブラウザはCSPのframe-ancestorsディレクティブを優先します。
#### コンテンツセキュリティポリシー (CSP) frame-ancestorsディレクティブ
#### Content Security Policy (CSP) frame-ancestorsディレクティブ
**CSPの `frame-ancestors` ディレクティブ**は、Clickjacking保護のための推奨方法です
@ -142,9 +151,9 @@ sandbox="allow-forms allow-scripts"></iframe>
さらなる詳細や複雑な例については、[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)を参照してください。
### `child-src``frame-src` を使用したコンテンツセキュリティポリシー (CSP)
### `child-src``frame-src` を使用したContent Security Policy (CSP)
**コンテンツセキュリティポリシー (CSP)**は、ブラウザがコンテンツを読み込むことを許可すべきソースを指定することによって、Clickjackingやその他のコードインジェクション攻撃を防ぐためのセキュリティ対策です。
**Content Security Policy (CSP)**は、ブラウザがコンテンツを読み込むことを許可すべきソースを指定することによって、Clickjackingやその他のコードインジェクション攻撃を防ぐためのセキュリティ対策です。
#### `frame-src` ディレクティブ
@ -168,11 +177,11 @@ Content-Security-Policy: child-src 'self' https://trusted-website.com;
- 非推奨: child-src は frame-src と worker-src に置き換えられつつあります。
- フォールバック動作: frame-src が存在しない場合、child-src がフレームのフォールバックとして使用されます。両方が存在しない場合は、default-src が使用されます。
- 厳格なソース定義: 悪用を防ぐために、指令には信頼できるソースのみを含めてください。
- 厳格なソース定義: 悪用を防ぐために、指示に信頼できるソースのみを含めてください。
#### JavaScript フレームバスティングスクリプト
#### JavaScript フレームブレイキングスクリプト
完全に確実ではありませんが、JavaScript ベースのフレームバスティングスクリプトを使用して、ウェブページがフレームにされるのを防ぐことができます。例:
完全に確実ではありませんが、JavaScript ベースのフレームバスティングスクリプトを使用して、ウェブページがフレーム表示されるのを防ぐことができます。例:
```javascript
if (top !== self) {
top.location = self.location