hacktricks/network-services-pentesting/pentesting-web/golang.md

3.6 KiB

{% hint style="success" %} Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks
{% endhint %}

Metoda CONNECT

W języku programowania Go powszechną praktyką przy obsłudze żądań HTTP, szczególnie przy użyciu biblioteki net/http, jest automatyczna konwersja ścieżki żądania do ustandaryzowanego formatu. Proces ten obejmuje:

  • Ścieżki kończące się ukośnikiem (/), takie jak /flag/, są przekierowywane do ich odpowiedników bez ukośnika, /flag.
  • Ścieżki zawierające sekwencje przechodzenia przez katalogi, takie jak /../flag, są upraszczane i przekierowywane do /flag.
  • Ścieżki z końcową kropką, jak w /flag/., są również przekierowywane do czystej ścieżki /flag.

Jednakże, wyjątek jest obserwowany przy użyciu metody CONNECT. W przeciwieństwie do innych metod HTTP, CONNECT nie uruchamia procesu normalizacji ścieżki. To zachowanie otwiera potencjalną drogę do uzyskania dostępu do chronionych zasobów. Używając metody CONNECT wraz z opcją --path-as-is w curl, można obejść standardową normalizację ścieżki i potencjalnie dotrzeć do zastrzeżonych obszarów.

Poniższe polecenie demonstruje, jak wykorzystać to zachowanie:

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

{% hint style="success" %} Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie dla HackTricks
{% endhint %}