diff --git a/src/pentesting-web/domain-subdomain-takeover.md b/src/pentesting-web/domain-subdomain-takeover.md index a93cfc226..3e8bb1070 100644 --- a/src/pentesting-web/domain-subdomain-takeover.md +++ b/src/pentesting-web/domain-subdomain-takeover.md @@ -2,16 +2,15 @@ {{#include ../banners/hacktricks-training.md}} - ## ドメインテイクオーバー -もし、**スコープ内のサービスによって使用されている**ドメイン(domain.tld)を発見し、**会社**がその**所有権**を**失っている**場合、あなたはそれを**登録**し(十分に安価であれば)、会社に知らせることができます。このドメインが**GET**パラメータや**Referer**ヘッダーを介してセッションクッキーのような**機密情報**を受信している場合、これは確実に**脆弱性**です。 +もし、**スコープ内のサービスによって使用されている**ドメイン(domain.tld)を発見し、**会社**がその**所有権**を**失っている**場合、**登録**を試みることができます(十分に安価であれば)そして会社に知らせることができます。このドメインが**GET**パラメータや**Referer**ヘッダーを介してセッションクッキーのような**機密情報**を受信している場合、これは確実に**脆弱性**です。 ### サブドメインテイクオーバー 会社のサブドメインが**登録されていない名前の第三者サービス**を指している場合、あなたがこの**第三者サービス**で**アカウント**を**作成**し、使用中の**名前**を**登録**できれば、サブドメインテイクオーバーを実行できます。 -可能なテイクオーバーをチェックするための辞書を持ついくつかのツールがあります: +可能なテイクオーバーを確認するための辞書を持つツールがいくつかあります: - [https://github.com/EdOverflow/can-i-take-over-xyz](https://github.com/EdOverflow/can-i-take-over-xyz) - [https://github.com/blacklanternsecurity/bbot](https://github.com/blacklanternsecurity/bbot) @@ -29,27 +28,43 @@ ### DNSワイルドカードによるサブドメインテイクオーバー生成 -ドメインでDNSワイルドカードが使用されている場合、そのドメインの異なるアドレスが明示的に指定されていない任意の要求されたサブドメインは、**同じ情報に解決されます**。これはA IPアドレスやCNAMEなどです。 +ドメインでDNSワイルドカードが使用されている場合、そのドメインの異なるアドレスが明示的に指定されていないすべての要求されたサブドメインは**同じ情報に解決されます**。これはA IPアドレスやCNAMEなどです。 例えば、`*.testing.com`が`1.1.1.1`にワイルドカードされている場合、`not-existent.testing.com`は`1.1.1.1`を指します。 -しかし、IPアドレスを指すのではなく、システム管理者が**CNAMEを介して第三者サービス**に指す場合、例えばG**ithubのサブドメイン**(`sohomdatta1.github.io`)のように、攻撃者は**自分自身の第三者ページ**(この場合はGihub上)を**作成**し、`something.testing.com`がそこを指していると言うことができます。なぜなら、**CNAMEワイルドカード**により、攻撃者は**被害者のドメインに対して任意のサブドメインを生成し、自分のページに指すことができる**からです。 +しかし、IPアドレスを指す代わりに、システム管理者が**CNAMEを介して第三者サービス**に指す場合、例えばG**ithubのサブドメイン**(`sohomdatta1.github.io`)のように、攻撃者は**自分自身の第三者ページ**(この場合はGihub)を作成し、`something.testing.com`がそこを指していると言うことができます。なぜなら、**CNAMEワイルドカード**が攻撃者に**被害者のドメインに対して任意のサブドメインを生成することを許可するからです**。 -この脆弱性の例は、CTFのレポートで見つけることができます:[https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api) +この脆弱性の例はCTFのレポートで見つけることができます:[https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api) ## サブドメインテイクオーバーの悪用 -サブドメインテイクオーバーは、インターネット上の特定のドメインに対するDNSスプーフィングであり、攻撃者がドメインのAレコードを設定し、ブラウザが攻撃者のサーバーからのコンテンツを表示することを可能にします。この**透明性**は、ブラウザがフィッシングに対してドメインを脆弱にします。攻撃者はこの目的のために[_typosquatting_](https://en.wikipedia.org/wiki/Typosquatting)や[_Doppelganger domains_](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger)を使用することがあります。特に脆弱なのは、フィッシングメールのURLが正当であるように見えるドメインであり、ドメインの固有の信頼性により、ユーザーを欺き、スパムフィルターを回避します。 +サブドメインテイクオーバーは、特定のドメインに対するDNSスプーフィングであり、攻撃者がドメインのAレコードを設定できるようにし、ブラウザが攻撃者のサーバーからのコンテンツを表示することを可能にします。この**透明性**はブラウザにおいてドメインをフィッシングに対して脆弱にします。攻撃者はこの目的のために[_typosquatting_](https://en.wikipedia.org/wiki/Typosquatting)や[_Doppelganger domains_](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger)を使用することがあります。特に脆弱なのは、フィッシングメールのURLが正当であるように見えるドメインであり、ドメインの固有の信頼性によりユーザーを欺き、スパムフィルターを回避します。 詳細についてはこの[投稿を確認してください](https://0xpatrik.com/subdomain-takeover/) ### **SSL証明書** -SSL証明書は、攻撃者が[_Let's Encrypt_](https://letsencrypt.org/)のようなサービスを介して生成した場合、これらの偽のドメインの正当性を高め、フィッシング攻撃をより説得力のあるものにします。 +SSL証明書は、[_Let's Encrypt_](https://letsencrypt.org/)のようなサービスを介して攻撃者によって生成される場合、これらの偽のドメインの正当性を高め、フィッシング攻撃をより説得力のあるものにします。 ### **クッキーセキュリティとブラウザの透明性** -ブラウザの透明性は、[同一生成元ポリシー](https://en.wikipedia.org/wiki/Same-origin_policy)のようなポリシーによって管理されるクッキーセキュリティにも及びます。クッキーは、セッションを管理し、ログイントークンを保存するために使用されることが多く、サブドメインテイクオーバーを通じて悪用される可能性があります。攻撃者は、ユーザーを侵害されたサブドメインに誘導することで**セッションクッキーを収集**し、ユーザーデータとプライバシーを危険にさらすことができます。 +ブラウザの透明性は、[同一生成元ポリシー](https://en.wikipedia.org/wiki/Same-origin_policy)のようなポリシーによって管理されるクッキーセキュリティにも及びます。クッキーは、セッションを管理し、ログイントークンを保存するために使用されることが多く、サブドメインテイクオーバーを通じて悪用される可能性があります。攻撃者は**侵害されたサブドメインにユーザーを誘導することによってセッションクッキーを収集**し、ユーザーデータとプライバシーを危険にさらすことができます。 + +### CORSバイパス + +すべてのサブドメインがメインドメインまたは他のサブドメインからCORSリソースにアクセスできる可能性があります。これを攻撃者が悪用して**機密情報にアクセス**することができます。 + +### CSRF - Same-Siteクッキーのバイパス + +サブドメインが、クッキーの`Same-Site`属性によって防止されていたドメインまたは他のサブドメインにクッキーを送信することが許可されている可能性があります。ただし、適切に実装されている場合、anti-CSRFトークンはこの攻撃を防ぐことができます。 + +### OAuthトークンのリダイレクト + +侵害されたサブドメインがOAuthフローの`redirect_uri` URLで使用されることが許可されている可能性があります。これを攻撃者が悪用して**OAuthトークンを盗む**ことができます。 + +### CSPバイパス + +侵害されたサブドメイン(またはすべてのサブドメイン)が、例えばCSPの`script-src`で使用されることが許可されている可能性があります。これを攻撃者が悪用して**悪意のあるスクリプトを注入**し、潜在的なXSS脆弱性を悪用することができます。 ### **メールとサブドメインテイクオーバー** @@ -57,11 +72,11 @@ SSL証明書は、攻撃者が[_Let's Encrypt_](https://letsencrypt.org/)のよ ### **高次のリスク** -さらなるリスクには**NSレコードのテイクオーバー**が含まれます。攻撃者がドメインの1つのNSレコードを制御すると、彼らはトラフィックの一部を自分の制御下にあるサーバーに向けることができます。このリスクは、攻撃者がDNSレコードのTTL(生存時間)を高く設定する場合に増幅され、攻撃の持続時間を延ばします。 +さらなるリスクには**NSレコードのテイクオーバー**が含まれます。攻撃者がドメインの1つのNSレコードを制御すると、彼らはトラフィックの一部を自分の制御下にあるサーバーに向けることができます。このリスクは、攻撃者がDNSレコードのTTL(Time to Live)を高く設定することで増幅され、攻撃の持続時間が延長されます。 ### CNAMEレコードの脆弱性 -攻撃者は、もはや使用されていないか、廃止された外部サービスを指す未請求のCNAMEレコードを悪用する可能性があります。これにより、信頼されたドメインの下にページを作成し、フィッシングやマルウェアの配布をさらに促進することができます。 +攻撃者は、もはや使用されていないか、廃止された外部サービスを指す未請求のCNAMEレコードを悪用する可能性があります。これにより、彼らは信頼されたドメインの下にページを作成し、フィッシングやマルウェアの配布をさらに促進することができます。 ### **緩和戦略** @@ -69,13 +84,14 @@ SSL証明書は、攻撃者が[_Let's Encrypt_](https://letsencrypt.org/)のよ 1. **脆弱なDNSレコードの削除** - サブドメインがもはや必要ない場合に効果的です。 2. **ドメイン名の請求** - 関連するクラウドプロバイダーでリソースを登録するか、期限切れのドメインを再購入します。 -3. **脆弱性の定期的な監視** - [aquatone](https://github.com/michenriksen/aquatone)のようなツールは、脆弱なドメインを特定するのに役立ちます。組織はまた、DNSレコードの作成がリソースの作成の最終ステップであり、リソースの破棄の最初のステップであることを確認するために、インフラ管理プロセスを見直すべきです。 +3. **脆弱性の定期的な監視** - [aquatone](https://github.com/michenriksen/aquatone)のようなツールは、脆弱なドメインを特定するのに役立ちます。組織はまた、インフラ管理プロセスを見直し、DNSレコードの作成がリソース作成の最終ステップであり、リソース破棄の最初のステップであることを確認する必要があります。 -クラウドプロバイダーにとって、ドメイン所有権の確認はサブドメインテイクオーバーを防ぐために重要です。例えば、[GitLab](https://about.gitlab.com/2018/02/05/gitlab-pages-custom-domain-validation/)のように、この問題を認識し、ドメイン検証メカニズムを実装しているプロバイダーもあります。 +クラウドプロバイダーにとって、ドメイン所有権の確認はサブドメインテイクオーバーを防ぐために重要です。例えば、[GitLab](https://about.gitlab.com/2018/02/05/gitlab-pages-custom-domain-validation/)のように、この問題を認識し、ドメイン確認メカニズムを実装しているプロバイダーもあります。 ## 参考文献 - [https://0xpatrik.com/subdomain-takeover/](https://0xpatrik.com/subdomain-takeover/) - [https://www.stratussecurity.com/post/subdomain-takeover-guide](https://www.stratussecurity.com/post/subdomain-takeover-guide) +- [https://www.hackerone.com/blog/guide-subdomain-takeovers-20](https://www.hackerone.com/blog/guide-subdomain-takeovers-20) {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/hacking-with-cookies/README.md b/src/pentesting-web/hacking-with-cookies/README.md index 4f9bf1427..a06430a22 100644 --- a/src/pentesting-web/hacking-with-cookies/README.md +++ b/src/pentesting-web/hacking-with-cookies/README.md @@ -1,147 +1,147 @@ -# クッキーのハッキング +# Cookies Hacking {{#include ../../banners/hacktricks-training.md}} -## クッキー属性 +## Cookie Attributes -クッキーには、ユーザーのブラウザでの動作を制御するいくつかの属性があります。これらの属性について、より受動的な声で説明します。 +Cookiesには、ユーザーのブラウザでの動作を制御するいくつかの属性があります。これらの属性について、より受動的な声で説明します。 -### Expires と Max-Age +### Expires and Max-Age -クッキーの有効期限は `Expires` 属性によって決まります。対照的に、`Max-age` 属性はクッキーが削除されるまでの時間(秒単位)を定義します。**より現代的な慣行を反映するために `Max-age` を選択してください。** +Cookieの有効期限は`Expires`属性によって決まります。対照的に、`Max-age`属性はCookieが削除されるまでの時間(秒単位)を定義します。**`Max-age`を選択することをお勧めします。これはより現代的な慣行を反映しています。** ### Domain -クッキーを受け取るホストは `Domain` 属性によって指定されます。デフォルトでは、これはクッキーを発行したホストに設定され、サブドメインは含まれません。しかし、`Domain` 属性が明示的に設定されると、サブドメインも含まれます。これにより、サブドメイン間でのクッキー共有が必要なシナリオで、`Domain` 属性の指定が制限の少ないオプションとなります。たとえば、`Domain=mozilla.org` を設定すると、`developer.mozilla.org` のようなサブドメインでクッキーにアクセスできます。 +Cookieを受け取るホストは`Domain`属性によって指定されます。デフォルトでは、これはCookieを発行したホストに設定され、サブドメインは含まれません。しかし、`Domain`属性が明示的に設定されると、サブドメインも含まれます。これにより、サブドメイン間でのCookie共有が必要なシナリオで、`Domain`属性の指定が制限の少ないオプションとなります。たとえば、`Domain=mozilla.org`を設定すると、`developer.mozilla.org`のようなサブドメインでもCookieにアクセスできます。 ### Path -`Cookie` ヘッダーが送信されるために要求された URL に存在しなければならない特定の URL パスは、`Path` 属性によって示されます。この属性は `/` 文字をディレクトリ区切りとして考慮し、サブディレクトリ内での一致も可能にします。 +`Cookie`ヘッダーが送信されるために要求されたURLに存在しなければならない特定のURLパスは、`Path`属性によって示されます。この属性は`/`文字をディレクトリセパレーターとして考慮し、サブディレクトリ内での一致も可能にします。 ### Ordering Rules -同じ名前のクッキーが2つある場合、送信されるクッキーは以下に基づいて選択されます: +同じ名前のCookieが2つある場合、送信されるCookieは以下に基づいて選択されます: -- 要求された URL で最も長いパスに一致するクッキー。 -- パスが同じ場合は、最も最近設定されたクッキー。 +- 要求されたURL内で最も長いパスに一致するCookie。 +- パスが同じ場合は、最も最近設定されたCookie。 ### SameSite -- `SameSite` 属性は、クッキーがサードパーティのドメインからのリクエストで送信されるかどうかを決定します。3つの設定があります: -- **Strict**: サードパーティのリクエストでクッキーが送信されるのを制限します。 -- **Lax**: サードパーティのウェブサイトによって開始された GET リクエストでクッキーが送信されることを許可します。 -- **None**: どのサードパーティのドメインからでもクッキーが送信されることを許可します。 +- `SameSite`属性は、Cookieがサードパーティのドメインからのリクエストで送信されるかどうかを決定します。3つの設定があります: +- **Strict**: サードパーティのリクエストでCookieが送信されるのを制限します。 +- **Lax**: サードパーティのウェブサイトによって開始されたGETリクエストでCookieが送信されることを許可します。 +- **None**: どのサードパーティのドメインからでもCookieが送信されることを許可します。 -クッキーを設定する際には、これらの属性を理解することで、さまざまなシナリオで期待通りに動作することを確保できます。 +Cookieを設定する際には、これらの属性を理解することで、さまざまなシナリオで期待通りに動作することを確保できます。 -| **リクエストタイプ** | **例コード** | **クッキーが送信されるとき** | +| **Request Type** | **Example Code** | **Cookies Sent When** | | ---------------- | ---------------------------------- | --------------------- | -| リンク | \\ | NotSet\*, Lax, None | -| プリレンダリング | \ | NotSet\*, Lax, None | -| フォーム GET | \