Golang

支持 HackTricks

CONNECT 方法

在 Go 编程语言中,处理 HTTP 请求时,特别是使用 net/http 库时,一个常见的做法是将请求路径自动转换为标准格式。这个过程包括:

  • 以斜杠 (/) 结尾的路径,如 /flag/ 被重定向到其无斜杠的对应路径 /flag

  • 包含目录遍历序列的路径,如 /../flag 被简化并重定向到 /flag

  • 以句点结尾的路径,如 /flag/. 也被重定向到干净的路径 /flag

然而,使用 CONNECT 方法时观察到一个例外。与其他 HTTP 方法不同,CONNECT 不会触发路径规范化过程。这种行为为访问受保护资源打开了潜在的途径。通过在 curl 中使用 CONNECT 方法和 --path-as-is 选项,可以绕过标准路径规范化,可能到达受限区域。

以下命令演示了如何利用这种行为:

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