hacktricks/network-services-pentesting/pentesting-web/golang.md
2024-02-11 01:46:25 +00:00

3.7 KiB

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Metoda CONNECT

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

  • Ścieżki kończące się ukośnikiem (/) jak /flag/ są przekierowywane na swoje odpowiedniki bez ukośnika, /flag.
  • Ścieżki zawierające sekwencje nawigacji po katalogach, takie jak /../flag, są uproszczone i przekierowywane na /flag.
  • Ścieżki z kropką na końcu, jak /flag/., również są przekierowywane na czystą ścieżkę /flag.

Jednakże, obserwuje się wyjątek w przypadku użycia metody CONNECT. W przeciwieństwie do innych metod HTTP, CONNECT nie wywołuje procesu normalizacji ścieżki. To zachowanie otwiera potencjalną drogę do dostępu do chronionych zasobów. Poprzez użycie metody CONNECT wraz z opcją --path-as-is w curl, można ominąć standardową normalizację ścieżki i potencjalnie dotrzeć do ograniczonych obszarów.

Poniższa komenda 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

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: