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

3.7 KiB

{% hint style="success" %} Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks
{% endhint %}

CONNECT-Methode

In der Programmiersprache Go ist es eine gängige Praxis beim Umgang mit HTTP-Anfragen, insbesondere unter Verwendung der net/http-Bibliothek, die automatische Umwandlung des Anfragepfads in ein standardisiertes Format. Dieser Prozess umfasst:

  • Pfade, die mit einem Schrägstrich (/) enden, wie /flag/, werden auf ihre nicht-schließende Entsprechung, /flag, umgeleitet.
  • Pfade, die Verzeichnis-Traversierungssequenzen wie /../flag enthalten, werden vereinfacht und auf /flag umgeleitet.
  • Pfade mit einem abschließenden Punkt wie in /flag/. werden ebenfalls auf den sauberen Pfad /flag umgeleitet.

Eine Ausnahme wird jedoch bei der Verwendung der CONNECT-Methode beobachtet. Im Gegensatz zu anderen HTTP-Methoden löst CONNECT nicht den Pfadnormalisierungsprozess aus. Dieses Verhalten eröffnet eine potenzielle Möglichkeit, auf geschützte Ressourcen zuzugreifen. Durch die Verwendung der CONNECT-Methode zusammen mit der Option --path-as-is in curl kann man die standardmäßige Pfadnormalisierung umgehen und möglicherweise eingeschränkte Bereiche erreichen.

Der folgende Befehl demonstriert, wie man dieses Verhalten ausnutzen kann:

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" %} Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks
{% endhint %}