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

4.3 KiB
Raw Blame History

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Метод CONNECT

У мові програмування Go поширеною практикою при обробці HTTP запитів, зокрема за допомогою бібліотеки net/http, є автоматичне перетворення шляху запиту в стандартизований формат. Цей процес включає:

  • Шляхи, що закінчуються слешем (/), такі як /flag/, перенаправляються на їх відповідник без слеша, /flag.
  • Шляхи, що містять послідовності обходу директорій, такі як /../flag, спрощуються і перенаправляються на /flag.
  • Шляхи з крапкою в кінці, як у /flag/., також перенаправляються на чистий шлях /flag.

Однак, спостерігається виняток при використанні методу CONNECT. На відміну від інших HTTP методів, CONNECT не викликає процес нормалізації шляху. Ця поведінка відкриває потенційний шлях для доступу до захищених ресурсів. Використовуючи метод CONNECT разом з опцією --path-as-is у curl, можна обійти стандартну нормалізацію шляху і потенційно досягти обмежених зон.

Наступна команда демонструє, як експлуатувати цю поведінку:

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" %} Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks
{% endhint %}