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

33 lines
3 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Travaillez-vous dans une entreprise de cybersécurité? Voulez-vous voir votre entreprise annoncée dans HackTricks? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>
2023-06-03 13:10:46 +00:00
## Méthode CONNECT
2021-02-01 09:01:16 +00:00
2023-06-03 13:10:46 +00:00
En golang, la bibliothèque net/http transforme généralement le chemin en un chemin canonique avant d'y accéder :
2021-02-01 09:01:16 +00:00
2023-06-03 13:10:46 +00:00
* /flag/ -- Est répondu avec une redirection vers /flag
* /../flag --- Est répondu avec une redirection vers /flag
* /flag/. -- Est répondu avec une redirection vers /flag
2021-02-01 09:01:16 +00:00
2023-06-03 13:10:46 +00:00
Cependant, lorsque la méthode CONNECT est utilisée, cela ne se produit pas. Ainsi, si vous devez accéder à une ressource protégée, vous pouvez exploiter cette astuce :
2021-02-01 09:01:16 +00:00
```text
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](https://github.com/golang/go/blob/9bb97ea047890e900dae04202a231685492c4b18/src/net/http/server.go#L2354-L2364)
2023-06-03 13:10:46 +00:00
La fonction `readRequest` est utilisée pour lire une requête HTTP à partir d'une connexion. Cette fonction est appelée par la fonction `readRequestHeader` qui lit la première ligne de la requête HTTP et la stocke dans la variable `req.Method`, `req.URL`, `req.Proto` et `req.ProtoMajor`. Ensuite, la fonction `readRequest` est appelée pour lire le corps de la requête HTTP et le stocker dans la variable `req.Body`. Si la requête HTTP contient un corps, la fonction `readRequest` utilise la fonction `io.LimitReader` pour limiter la taille du corps de la requête à la valeur spécifiée dans la variable `maxBytesReader`.