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

3.7 KiB

Aprende hacking en AWS desde cero hasta convertirte en un experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a 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 a un formato estandarizado. Este proceso implica:

  • Las rutas que terminan con una barra inclinada (/) como /flag/ son redirigidas a su contraparte sin barra, /flag.
  • Las rutas que contienen secuencias de travesía de directorios como /../flag son simplificadas y redirigidas a /flag.
  • Las rutas con un punto al 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 evitar la normalización estándar de la ruta y potencialmente llegar a áreas restringidas.

El siguiente comando muestra 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

Aprende hacking en AWS desde cero hasta convertirte en un héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks: