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

3.3 KiB
Raw Blame History

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS Red Team Expert

支持HackTricks的其他方式

CONNECT方法

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

  • 以斜杠(/)结尾的路径,如/flag/,会被重定向到它们的非斜杠对应路径,即/flag
  • 包含目录遍历序列的路径,如/../flag,会被简化并重定向到/flag
  • 以句点结尾的路径,如/flag/.,也会被重定向到干净的路径/flag

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

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

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

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS Red Team Expert

支持HackTricks的其他方式