hacktricks/pentesting-web/parameter-pollution.md

92 lines
6.9 KiB
Markdown

# Pollution de Paramètres
{% hint style="success" %}
Apprenez et pratiquez le Hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le Hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Supportez HackTricks</summary>
* Consultez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop) !
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez-nous sur** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Partagez des astuces de hacking en soumettant des PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
# Vue d'ensemble de la Pollution de Paramètres HTTP (HPP)
La Pollution de Paramètres HTTP (HPP) est une technique où les attaquants manipulent les paramètres HTTP pour changer le comportement d'une application web de manière inattendue. Cette manipulation se fait en ajoutant, modifiant ou dupliquant des paramètres HTTP. L'effet de ces manipulations n'est pas directement visible pour l'utilisateur mais peut altérer de manière significative la fonctionnalité de l'application côté serveur, avec des impacts observables côté client.
## Exemple de Pollution de Paramètres HTTP (HPP)
Une URL de transaction d'application bancaire :
- **URL d'origine :** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000`
En insérant un paramètre `from` supplémentaire :
- **URL manipulée :** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC`
La transaction peut être incorrectement facturée à `accountC` au lieu de `accountA`, montrant le potentiel de la HPP pour manipuler des transactions ou d'autres fonctionnalités telles que les réinitialisations de mot de passe, les paramètres 2FA ou les demandes de clé API.
### **Analyse des Paramètres Spécifique à la Technologie**
- La manière dont les paramètres sont analysés et priorisés dépend de la technologie web sous-jacente, affectant la façon dont la HPP peut être exploitée.
- Des outils comme [Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/) aident à identifier ces technologies et leurs comportements d'analyse.
## Exploitation de PHP et HPP
**Cas de Manipulation d'OTP :**
- **Contexte :** Un mécanisme de connexion nécessitant un Mot de Passe à Usage Unique (OTP) a été exploité.
- **Méthode :** En interceptant la demande d'OTP à l'aide d'outils comme Burp Suite, les attaquants ont dupliqué le paramètre `email` dans la requête HTTP.
- **Résultat :** L'OTP, destiné à l'email initial, a été envoyé à la deuxième adresse email spécifiée dans la requête manipulée. Ce défaut a permis un accès non autorisé en contournant la mesure de sécurité prévue.
Ce scénario met en évidence une négligence critique dans le backend de l'application, qui a traité le premier paramètre `email` pour la génération d'OTP mais a utilisé le dernier pour la livraison.
**Cas de Manipulation de Clé API :**
- **Scénario :** Une application permet aux utilisateurs de mettre à jour leur clé API via une page de paramètres de profil.
- **Vecteur d'attaque :** Un attaquant découvre qu'en ajoutant un paramètre `api_key` supplémentaire à la requête POST, il peut manipuler le résultat de la fonction de mise à jour de la clé API.
- **Technique :** En utilisant un outil comme Burp Suite, l'attaquant crée une requête qui inclut deux paramètres `api_key` : un légitime et un malveillant. Le serveur, ne traitant que la dernière occurrence, met à jour la clé API avec la valeur fournie par l'attaquant.
- **Résultat :** L'attaquant prend le contrôle de la fonctionnalité API de la victime, accédant ou modifiant potentiellement des données privées sans autorisation.
Cet exemple souligne encore la nécessité d'une gestion sécurisée des paramètres, en particulier dans des fonctionnalités aussi critiques que la gestion des clés API.
## Analyse des Paramètres : Flask vs. PHP
La manière dont les technologies web gèrent les paramètres HTTP dupliqués varie, affectant leur susceptibilité aux attaques HPP :
- **Flask :** Adopte la première valeur de paramètre rencontrée, comme `a=1` dans une chaîne de requête `a=1&a=2`, priorisant l'instance initiale sur les duplicatas suivants.
- **PHP (sur Apache HTTP Server) :** Au contraire, priorise la dernière valeur de paramètre, optant pour `a=2` dans l'exemple donné. Ce comportement peut involontairement faciliter les exploits HPP en honorant le paramètre manipulé par l'attaquant plutôt que l'original.
## Références
* [https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654)
* [https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution](https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution)
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Apprenez et pratiquez le Hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le Hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Supportez HackTricks</summary>
* Consultez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop) !
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez-nous sur** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Partagez des astuces de hacking en soumettant des PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>
{% endhint %}