mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
20 lines
1.6 KiB
Markdown
20 lines
1.6 KiB
Markdown
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
## CONNECT-Methode
|
|
|
|
In der Programmiersprache Go ist es eine gängige Praxis, beim Umgang mit HTTP-Anfragen, insbesondere unter Verwendung der `net/http`-Bibliothek, den Anfragepfad automatisch in ein standardisiertes Format zu konvertieren. Dieser Prozess umfasst:
|
|
|
|
- Pfade, die mit einem Schrägstrich (`/`) enden, wie `/flag/`, werden auf ihre nicht mit Schrägstrich endenden Gegenstücke umgeleitet, `/flag`.
|
|
- Pfade, die Verzeichnis-Traversierungssequenzen wie `/../flag` enthalten, werden vereinfacht und auf `/flag` umgeleitet.
|
|
- Pfade mit einem nachgestellten 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` den Prozess der Pfadnormalisierung nicht 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 potenziell eingeschränkte Bereiche erreichen.
|
|
|
|
Der folgende Befehl demonstriert, wie man dieses Verhalten ausnutzen kann:
|
|
```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](https://github.com/golang/go/blob/9bb97ea047890e900dae04202a231685492c4b18/src/net/http/server.go#L2354-L2364)
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|