mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
20 lines
1.4 KiB
Markdown
20 lines
1.4 KiB
Markdown
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
## CONNECT metoda
|
|
|
|
U programskom jeziku Go, uobičajena praksa prilikom obrade HTTP zahteva, posebno korišćenjem `net/http` biblioteke, je automatska konverzija putanje zahteva u standardizovani format. Ovaj proces uključuje:
|
|
|
|
- Putanje koje se završavaju sa kosom crtom (`/`) kao što je `/flag/` preusmeravaju se na svoju verziju bez kose crte, `/flag`.
|
|
- Putanje koje sadrže sekvence prolaska kroz direktorijume kao što je `/../flag` se pojednostavljuju i preusmeravaju na `/flag`.
|
|
- Putanje sa završnom tačkom kao u `/flag/.` se takođe preusmeravaju na čistu putanju `/flag`.
|
|
|
|
Međutim, izuzetak se primećuje prilikom korišćenja `CONNECT` metode. Za razliku od drugih HTTP metoda, `CONNECT` ne pokreće proces normalizacije putanje. Ovo ponašanje otvara potencijalnu mogućnost za pristup zaštićenim resursima. Korišćenjem `CONNECT` metode zajedno sa `--path-as-is` opcijom u `curl`, može se zaobići standardna normalizacija putanje i potencijalno doći do ograničenih oblasti.
|
|
|
|
Sledeća komanda prikazuje kako iskoristiti ovo ponašanje:
|
|
```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}}
|