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

3.6 KiB

{% 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 %}

Método CONNECT

En el lenguaje de programación Go, una práctica común al manejar solicitudes HTTP, específicamente utilizando la biblioteca net/http, es la conversión automática de la ruta de la solicitud en un formato estandarizado. Este proceso implica:

  • Las rutas que terminan con una barra (/) como /flag/ son redirigidas a su contraparte sin barra, /flag.
  • Las rutas que contienen secuencias de recorrido de directorios como /../flag son simplificadas y redirigidas a /flag.
  • Las rutas con un punto final como en /flag/. también son redirigidas a la ruta limpia /flag.

Sin embargo, se observa una excepción con el uso del método CONNECT. A diferencia de otros métodos HTTP, CONNECT no activa el proceso de normalización de la ruta. Este comportamiento abre una posible vía para acceder a recursos protegidos. Al emplear el método CONNECT junto con la opción --path-as-is en curl, se puede eludir la normalización estándar de la ruta y potencialmente alcanzar áreas restringidas.

El siguiente comando demuestra cómo explotar este comportamiento:

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" %} Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)

Apoya a HackTricks
{% endhint %}