hacktricks/pentesting-web/parameter-pollution.md

87 lines
6.9 KiB
Markdown

# Pollution de Paramètres
<details>
<summary><strong>Apprenez le hacking AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Autres moyens de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Partagez vos astuces de hacking en soumettant des PRs aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
**Copié depuis** [**https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654**](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654)
**Résumé :**
La Pollution de Paramètres HTTP (HPP) consiste à polluer les paramètres HTTP d'une application web pour réaliser une tâche malveillante spécifique. Cela se réfère à la manipulation de la manière dont un site web traite les paramètres qu'il reçoit pendant les requêtes HTTP. Cela change le comportement d'un site web de celui qui était prévu. La pollution de paramètres HTTP est une attaque simple mais efficace.
Lorsque vous polluez un paramètre, le code s'exécute uniquement côté serveur, ce qui est invisible pour nous, mais nous pouvons voir les résultats sur notre écran. Le processus intermédiaire est une boîte noire.
Par exemple, il y a une URL https://www.anybank.com/send qui a trois paramètres :
1. from :
2. to :
3. amount :
**URL : https://www.anybank.com/send/?from=accountA\&to=accountB\&amount=10000**
Maintenant, c'est une URL normale qui procédera à une transaction de 10000 de accountA à accountB, mais que se passe-t-il si nous ajoutons un autre paramètre identique **“from :”**
Donc l'URL sera comme **https://www.anybank.com/send/?from=accountA\&to=accountB\&amount=10000\&from=accountC**
Lorsque cette URL procédera à une transaction de 10000, elle sera déduite de accountC plutôt que de accountA. C'est ainsi que vous manipulez les paramètres dans une attaque de **Pollution de Paramètres HTTP**. Bien que la portée de cette vulnérabilité ne soit pas limitée uniquement aux requêtes **GET**, vous pouvez également réaliser cette attaque sur une requête basée sur **POST**. Vous pouvez essayer cette vulnérabilité dans de nombreux endroits comme le changement de mot de passe, la 2FA, les commentaires, le téléchargement de photo de profil, sur un paramètre où la clé API est passée, l'OTP, etc.
Lorsque vous manipulez un paramètre, sa manipulation dépend de la manière dont chaque technologie web analyse ses paramètres. Vous pouvez identifier les technologies web en utilisant “[Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/)”. Ci-dessous la capture d'écran de certaines technologies et de leur analyse de paramètres.Technologies et leur analyse de paramètres
![Image for post](https://miro.medium.com/max/1760/1\*POs4sP0fQVlPvTH9vw1U-A.jpeg)
Je voudrais partager une de mes découvertes de HPP où j'ai pu prendre le contrôle d'un compte en utilisant cette vulnérabilité.
**Comment ai-je trouvé cette vulnérabilité ?**
1. Je suis allé sur une page de connexion de ce programme, il a demandé un OTP pour se connecter
Envoyer OTP
![Image for post](https://miro.medium.com/max/600/1\*s-M09yWBylPVEhA6\_e0nSw.jpeg)
2\. J'ai tapé un email et cliqué sur "Envoyer un mot de passe à usage unique"
3\. J'ai intercepté la requête en utilisant burp suite et ajouté un autre email en utilisant le même paramètre (j'ai créé deux emails à des fins de test)Requête Burp
![Image for post](https://miro.medium.com/max/1737/1\*z\_RpnZyKHLn6B4Lz4ONT3Q.png)
4\. J'ai reçu un OTP de shrey……@gmail.com sur mon autre compte radhika…..@gmail.com OTP
![Image for post](https://miro.medium.com/max/784/1\*a671GrRtiMYfLUL7nURD8Q.png)
5\. J'ai copié l'OTP et suis allé sur shrey….@gmail.com sur l'écran de connexion de ce programme, j'ai entré cet OTP et j'étais dans le compte.Prise de Contrôle du Compte
![Image for post](https://miro.medium.com/max/1698/1\*Ux-ILfCr\_Mk\_xmzzsXwNnA.jpeg)
Alors ce qui s'est passé ici, c'est que l'application back-end a pris la valeur du premier paramètre "**email**" pour générer un OTP et a utilisé la valeur du second paramètre "**email**" pour fournir la valeur, ce qui signifie qu'un OTP de shrey….@gmail.com a été envoyé à radhika….@gmail.com.
**NOTE :** Ici, dans une image à la 4ème étape où j'ai reçu un OTP à radhika….@gmail.com, j'étais confus parce que le message disait Bonjour Radhika, donc je pensais que le paramètre n'était pas pollué et que l'OTP était pour radhika….@gmail.com mais quand j'ai essayé l'OTP sur shrey….@gmail.com, cela a fonctionné.
## Flask & PHP
Dans [**ce compte-rendu**](https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution), vous pouvez voir comment une requête HTTP comme `a=1&a=2` sera interprétée différemment par Flask et PHP fonctionnant sur un serveur HTTP Apache. Dans Flask, le paramètre sera `1` (première occurrence) tandis que dans PHP, il sera `2` (dernière occurrence).
<details>
<summary><strong>Apprenez le hacking AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Autres moyens de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Partagez vos astuces de hacking en soumettant des PRs aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>