tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

CONNECTメソッド

Goプログラミング言語では、特にnet/httpライブラリを使用してHTTPリクエストを処理する際に、リクエストパスを標準化された形式に自動的に変換することが一般的な慣行です。このプロセスには以下が含まれます:

  • スラッシュ(/)で終わるパス(例:/flag/)は、スラッシュのない対応するパス/flagにリダイレクトされます。
  • /../flagのようなディレクトリトラバーサルシーケンスを含むパスは簡略化され、/flagにリダイレクトされます。
  • /flag/.のように末尾にピリオドがあるパスも、クリーンなパス/flagにリダイレクトされます。

しかし、CONNECTメソッドの使用に関しては例外が見られます。他のHTTPメソッドとは異なり、CONNECTはパスの正規化プロセスをトリガーしません。この動作は、保護されたリソースにアクセスするための潜在的な手段を開きます。curlCONNECTメソッドを--path-as-isオプションと共に使用することで、標準のパス正規化をバイパスし、制限された領域に到達する可能性があります。

以下のコマンドは、この動作を悪用する方法を示しています:

bash
curl --path-as-is -X CONNECT http://gofs.web.jctf.pro/../flag

https://github.com/golang/go/blob/9bb97ea047890e900dae04202a231685492c4b18/src/net/http/server.go#L2354-L2364

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする