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

3.6 KiB

{% hint style="success" %} Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Método CONNECT

Na linguagem de programação Go, uma prática comum ao lidar com requisições HTTP, especificamente usando a biblioteca net/http, é a conversão automática do caminho da requisição em um formato padronizado. Este processo envolve:

  • Caminhos que terminam com uma barra (/) como /flag/ são redirecionados para seu equivalente sem barra, /flag.
  • Caminhos contendo sequências de travessia de diretório, como /../flag, são simplificados e redirecionados para /flag.
  • Caminhos com um ponto final, como em /flag/., também são redirecionados para o caminho limpo /flag.

No entanto, uma exceção é observada com o uso do método CONNECT. Ao contrário de outros métodos HTTP, CONNECT não aciona o processo de normalização de caminho. Esse comportamento abre uma potencial avenida para acessar recursos protegidos. Ao empregar o método CONNECT juntamente com a opção --path-as-is no curl, pode-se contornar a normalização padrão de caminho e potencialmente alcançar áreas restritas.

O seguinte comando demonstra como explorar esse comportamento:

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" %} Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}