20 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{{#include ../../banners/hacktricks-training.md}}
## Метод CONNECT
У мові програмування Go поширеною практикою при обробці HTTP-запитів, зокрема за допомогою бібліотеки `net/http`, є автоматичне перетворення шляху запиту в стандартизований формат. Цей процес включає:
- Шляхи, що закінчуються на слеш (`/`), такі як `/flag/`, перенаправляються на їхній варіант без слеша, `/flag`.
- Шляхи, що містять послідовності переходу по каталогах, такі як `/../flag`, спрощуються і перенаправляються на `/flag`.
- Шляхи з крапкою в кінці, як у `/flag/.`, також перенаправляються на чистий шлях `/flag`.
Однак спостерігається виняток при використанні методу `CONNECT`. На відміну від інших HTTP-методів, `CONNECT` не викликає процес нормалізації шляху. Ця поведінка відкриває потенційний шлях для доступу до захищених ресурсів. Використовуючи метод `CONNECT` разом з опцією `--path-as-is` у `curl`, можна обійти стандартну нормалізацію шляху і потенційно досягти обмежених зон.
Наступна команда демонструє, як експлуатувати цю поведінку:
```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}}