hacktricks/pentesting-web/abusing-hop-by-hop-headers.md
2023-07-07 23:42:27 +00:00

85 lines
10 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ホップバイホップヘッダー
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
</details>
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。この大会は、技術的な知識を促進することを目的としており、あらゆる分野の技術とサイバーセキュリティの専門家にとっての活発な交流の場です。
{% embed url="https://www.rootedcon.com/" %}
## ホップバイホップヘッダーとは何ですか?
ホップバイホップヘッダーは、リクエストを処理しているプロキシによって処理され、消費されるヘッダーであり、エンドツーエンドのヘッダーとは異なります。
[HTTP/1.1仕様](https://tools.ietf.org/html/rfc2616#section-13.5.1)によると、以下のヘッダーはデフォルトでホップバイホップとして扱われます:`Keep-Alive`、`Transfer-Encoding`、`TE`、`Connection`、`Trailer`、`Upgrade`、`Proxy-Authorization`、`Proxy-Authenticate`。これらのヘッダーがリクエストで見つかった場合、準拠したプロキシはこれらのヘッダーが示す処理またはアクションを実行し、次のホップに転送しません。
これらのデフォルトに加えて、リクエストは[ホップバイホップとして扱われるカスタムなヘッダーのセットを定義することもできます](https://tools.ietf.org/html/rfc2616#section-14.10)。これは、これらのヘッダーを`Connection`ヘッダーに追加することで行います:
```
Connection: close, X-Foo, X-Bar
```
## hop-by-hopヘッダーの乱用に関する理論
理論上、プロキシは次のアドレスに送信する前に受信したhop-by-hopヘッダーを削除するはずです。しかし、実際には、一部のプロキシはこれを行い、他のプロキシは自身の`Connection`ヘッダーを追加してすべてのヘッダーを送信します。
![](<../.gitbook/assets/image (138).png>)
## hop-by-hop削除のテスト
もし、ヘッダーが設定されている場合と設定されていない場合でサーバーの応答が大きく異なる場合、hop-by-hop削除を探すことができます。例えば、Cookieヘッダーは、有効な内容で設定されている場合と設定されていない場合でサーバーの応答が大きく異なります。
したがって、有効なヘッダーと次のようなConnectionヘッダーの値`Connection: close, Cookie`を持つリクエストを送信し、クッキーが送信されていない場合と同じ応答が得られるかどうかを確認します。もし同じ応答が得られる場合、ヘッダーを削除するプロキシが存在します。
[このスクリプト](https://gist.github.com/ndavison/298d11b3a77b97c908d63a345d3c624d)を使用して、ヘッダーが削除された場合にサーバーの応答がどのように異なるかを確認することができます。また、[このリスト](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/BurpSuite-ParamMiner/lowercase-headers)のような既知のヘッダーのリストを渡すことで、元のリクエストに含まれていないにもかかわらず効果を引き起こしているヘッダーを観察することができます。
```
for HEADER in $(cat headers.txt); do python poison-test.py -u "https://target" -x "$HEADER"; sleep 1; done
```
## X-Forwarded-For の悪用
一般的に、プロキシはクライアントのIPを `X-Forwarded-For` ヘッダに追加します。次のホップはリクエストの送信元を知るためです。しかし、攻撃者が `Connection: close, X-Forwarded-For` のような Connection 値を送信し、最初のプロキシがホップごとのヘッダを値とともに送信する場合(特別な Connection 値を送信する場合、2番目の値は X-Forward-For ヘッダを削除する可能性があります。最終的なアプリケーションはリクエストを送信したのが最後のプロキシであると思い込み、IPホワイトリストによって保護されたリソースにアクセスできるようになる可能性がありますたとえば、`/admin` など)。
対象となるシステムによっては、`Forwarded`、`X-Real-IP`、および他の一部のヘッダが存在する場合もあります。
## プロキシの検出とサービスのフィンガープリント
この技術は、クッキーの技術を使用してプロキシを検出するのに役立つ場合があります。また、サービスを検出するためにも使用できます。たとえば、この技術を使用して `X-BLUECOAT-VIA` ヘッダを削除し、エラーが発生した場合、Bluecoat が使用されていることがわかります。
## その他の攻撃
* この技術を悪用した DoS キャッシュポイズニングについては、元のリンクを参照してください。
* これは新しいヘッダを挿入する可能性のある攻撃に役立つ場合があります(確率は低いです)。
* また、これは防御機能をバイパスするのに役立つ場合があります。たとえば、ヘッダの欠如がリクエストを WAF で処理しないことを意味する場合、この技術を使用して WAF をバイパスできます。
## 参考文献
{% embed url="https://nathandavison.com/blog/abusing-http-hop-by-hop-request-headers" %}
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) は **スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。技術的な知識を促進することを使命としており、この会議はあらゆる分野の技術とサイバーセキュリティの専門家の活発な交流の場です。
{% embed url="https://www.rootedcon.com/" %}
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* **サイバーセキュリティ企業で働いていますか? HackTricks で会社を宣伝したいですか?または、最新バージョンの PEASS を入手したり、HackTricks を PDF でダウンロードしたりしたいですか?** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) という独占的な [**NFT**](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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローしてください。**
* **ハッキングのトリックを共有するには、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)に PR を提出してください。**
</details>