Golang

Support HackTricks

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

Apoya a HackTricks

Last updated