yaklang/param-pollution-http
Pollution de paramètres HTTP (HPP) : des clés de requête/corps en double analysées différemment par les serveurs, proxys, WAF et frameworks applicatifs. À utiliser lorsque les filtres et les couches applicatives ne s'accordent pas sur la valeur gagnante, permettant les contournements, les secondes URL SSRF, les abus de logique ou les confusions de jeton CSRF.
Description
La pollution de paramètres HTTP (HPP) est une vulnérabilité qui survient lorsqu'une application traite plusieurs paramètres HTTP portant le même nom. Différents composants de la pile de traitement (serveurs web, proxys, WAF, frameworks) peuvent assigner des priorités différentes à ces paramètres. Par exemple, un proxy peut conserver la première occurrence, tandis que l'application lit la dernière.
Utilisation
- Contournement de WAF : Un WAF peut inspecter uniquement le premier paramètre, tandis que l'application utilise le dernier, permettant de faire passer une charge malveillante.
- SSRF via seconde URL : Injecter une deuxième URL dans un paramètre peut forcer le serveur à effectuer une requête non prévue.
- Abus de logique : Certaines applications utilisent des paramètres dupliqués pour prendre des décisions incohérentes.
- Confusion de jeton CSRF : En dupliquant un paramètre de jeton, on peut annuler sa protection.
Exemple
GET /transfer?dest=user1&dest=evil.com HTTP/1.1
Host: example.com
Si le WAF lit dest=user1 (sûr) mais l'application lit dest=evil.com, l'attaque réussit.