mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
20 lines
2.0 KiB
Markdown
20 lines
2.0 KiB
Markdown
{{#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}}
|