Golang

Support HackTricks

Метод 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

Підтримайте HackTricks

Last updated