# サーバーサイドインクルージョン/エッジサイドインクルージョンインジェクション
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/hacktricks_live)を**フォロー**する。 - **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**あなたのハッキングトリックを共有**する。
## サーバーサイドインクルージョン基本情報 **(Apacheドキュメントから引用)** SSI(サーバーサイドインクルード)は、**HTMLページに配置され、サーバーで評価**されるディレクティブです。これにより、既存のHTMLページに**動的に生成されたコンテンツを追加**することができます。CGIプログラムや他の動的技術を介してページ全体を提供する必要はありません。\ たとえば、次のように既存のHTMLページにディレクティブを配置できます。 `` そして、ページが提供されると、このフラグメントが評価され、その値で置き換えられます。 `Tuesday, 15-Jan-2013 19:28:54 EST` SSIを使用するタイミングと、ページ全体をプログラムによって生成するタイミングは、通常、ページのどれだけが静的であり、ページが提供されるたびに再計算する必要があるかにかかっています。SSIは、上記のように現在の時刻などの小さな情報を追加する素晴らしい方法です。ただし、ページの大部分が提供される際に生成される場合は、他の解決策を探す必要があります。 Webアプリケーションが拡張子`.shtml`、`.shtm`、または`.stm`を持つファイルを使用している場合、SSIの存在を推測できますが、これに限られません。 典型的なSSI式の形式は次のとおりです。 ``` ``` ### チェック ```javascript // Document name // Date // File inclusion // Including files (same directory) // CGI Program results // Including virtual files (same directory) // Modification date of a file // Command exec // Command exec // Reverse shell // Print all variables // Setting variables ``` ## エッジサイドインクルージョン コンテンツの一部が次回コンテンツが取得される際に異なる可能性があるため、情報や動的アプリケーションをキャッシュする際に問題が発生します。これがESIが使用される理由で、ESIタグを使用してキャッシュバージョンを送信する前に生成する必要がある動的コンテンツを示します。\ 攻撃者がキャッシュコンテンツ内にESIタグを挿入できる場合、ユーザーに送信される前にドキュメントに任意のコンテンツを挿入できる可能性があります。 ### ESIの検出 サーバーからの応答に含まれる次のヘッダーは、サーバーがESIを使用していることを意味します: ``` Surrogate-Control: content="ESI/1.0" ``` もしこのヘッダーが見つからない場合、サーバーは**とにかくESIを使用している可能性があります**。\ **ブラインドエクスプロイテーションアプローチも使用できます**。攻撃者のサーバーにリクエストが到着するはずです: ```javascript // Basic detection hello // If previous is reflected as "hello", it's vulnerable // Blind detection // XSS Exploitation Example // Cookie Stealer (bypass httpOnly flag) // Introduce private local files (Not LFI per se) // Valid for Akamai, sends debug information in the response ``` ### ESIの悪用 [GoSecureが作成した](https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/) テーブルを使用して、異なるESI対応ソフトウェアに対して試す可能な攻撃を理解することができます。それは、サポートされている機能に応じて次のようになります: * **Includes**: ``ディレクティブをサポート * **Vars**: ``ディレクティブをサポート。XSSフィルターをバイパスするのに便利 * **Cookie**: ドキュメントクッキーがESIエンジンからアクセス可能 * **Upstream Headers Required**: 上流アプリケーションがヘッダーを提供しない限り、サロゲートアプリケーションはESIステートメントを処理しない * **Host Allowlist**: この場合、ESIインクルードは許可されたサーバーホストからのみ可能であり、例えば、SSRFはこれらのホストに対してのみ可能 | **ソフトウェア** | **Includes** | **Vars** | **Cookies** | **Upstream Headers Required** | **Host Whitelist** | | :--------------------------: | :----------: | :------: | :---------: | :---------------------------: | :----------------: | | Squid3 | はい | はい | はい | はい | いいえ | | Varnish Cache | はい | いいえ | いいえ | はい | はい | | Fastly | はい | いいえ | いいえ | いいえ | はい | | Akamai ESI Test Server (ETS) | はい | はい | はい | いいえ | いいえ | | NodeJS esi | はい | はい | はい | いいえ | いいえ | | NodeJS nodesi | はい | いいえ | いいえ | いいえ | オプション | #### XSS 次のESIディレクティブは、サーバーのレスポンス内で任意のファイルを読み込みます。 ```xml ``` #### クライアントのXSS保護をバイパス ```xml x=>alert(/Chrome%20XSS%20filter%20bypass/);> Use to bypass WAFs: ipt>alert(1)ript> error=alert(1)> ``` #### Cookieの盗み取り * リモートでCookieを盗む ```xml ``` * XSSを使用してHTTP\_ONLYクッキーを盗む:レスポンスに反映させる ```bash # This will reflect the cookies in the response # Reflect XSS (you can put '">' URL encoded and the URL encode eveyrhitng to send it in the HTTP request) # It's possible to put more complex JS code to steal cookies or perform actions ``` #### プライベートローカルファイル これを「ローカルファイルインクルージョン」と混同しないでください: ```markup ``` #### CRLF CRLF(Carriage Return Line Feed) ```markup ``` #### オープンリダイレクト 以下は、レスポンスに `Location` ヘッダーを追加します。 ```bash ``` #### ヘッダーの追加 * 強制リクエストにヘッダーを追加 ```xml ``` * レスポンスにヘッダーを追加します(XSSを含むレスポンスでの "Content-Type: text/json" のバイパスに役立ちます) ```bash # Check the number of url_decode to know how many times you can URL encode the value ``` #### ヘッダーにCRLFを追加する(**CVE-2019-2438)** ```xml ``` #### Akamai デバッグ これにより、レスポンスに含まれるデバッグ情報が送信されます。 ```xml ``` ### ESI + XSLT = XXE _dca_ パラメーターの `xslt` 値を指定することで、**`eXtensible Stylesheet Language Transformations (XSLT)`** ベースの ESI を含めることが可能です。このインクルージョンにより、HTTP サロゲートは XML ファイルと XSLT ファイルを取得し、後者が前者をフィルタリングします。このような XML ファイルは _XML External Entity (XXE)_ 攻撃に対して脆弱であり、攻撃者が SSRF 攻撃を実行できるようにします。ただし、このアプローチの有用性は限られています。ESI は既に SSRF ベクトルとして機能しているためです。基礎となる Xalan ライブラリでのサポートがないため、外部 DTD は処理されず、ローカルファイルの抽出が阻止されます。 ```xml ``` XSLTファイル: ```xml ]> &xxe; ``` ### XSLTページをチェックしてください: {% content-ref url="xslt-server-side-injection-extensible-stylesheet-language-transformations.md" %} [xslt-server-side-injection-extensible-stylesheet-language-transformations.md](xslt-server-side-injection-extensible-stylesheet-language-transformations.md) {% endcontent-ref %} ### 参考文献 * [https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/](https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/) * [https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/](https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/) * [https://academy.hackthebox.com/module/145/section/1304](https://academy.hackthebox.com/module/145/section/1304) * [https://infosecwriteups.com/exploring-the-world-of-esi-injection-b86234e66f91](https://infosecwriteups.com/exploring-the-world-of-esi-injection-b86234e66f91) ## ブルートフォース検出リスト {% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssi_esi.txt" %}
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/hacktricks_live)をフォローしてください * **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください