From 0998ac695969c6c48ef21f38ff689b65cc9954d0 Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 12 Nov 2024 12:24:24 +0000 Subject: [PATCH] Translated ['pentesting-web/parameter-pollution.md'] to fr --- SUMMARY.md | 2 +- pentesting-web/parameter-pollution.md | 127 +++++++++++++++++++++----- 2 files changed, 107 insertions(+), 22 deletions(-) diff --git a/SUMMARY.md b/SUMMARY.md index 60279767a..0103b2fa9 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -604,7 +604,7 @@ * [OAuth to Account takeover](pentesting-web/oauth-to-account-takeover.md) * [Open Redirect](pentesting-web/open-redirect.md) * [ORM Injection](pentesting-web/orm-injection.md) -* [Parameter Pollution](pentesting-web/parameter-pollution.md) +* [Parameter Pollution | JSON Injection](pentesting-web/parameter-pollution.md) * [Phone Number Injections](pentesting-web/phone-number-injections.md) * [PostMessage Vulnerabilities](pentesting-web/postmessage-vulnerabilities/README.md) * [Blocking main page to steal postmessage](pentesting-web/postmessage-vulnerabilities/blocking-main-page-to-steal-postmessage.md) diff --git a/pentesting-web/parameter-pollution.md b/pentesting-web/parameter-pollution.md index a54a5138a..bf497d54f 100644 --- a/pentesting-web/parameter-pollution.md +++ b/pentesting-web/parameter-pollution.md @@ -1,18 +1,18 @@ -# Pollution de Paramètre +# Pollution de Paramètre | Injection JSON ## Pollution de Paramètre {% hint style="success" %} -Apprenez et pratiquez le Hacking AWS :[**Formation HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Apprenez et pratiquez le Hacking GCP : [**Formation HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Apprenez et pratiquez le Hacking AWS :[**HackTricks Formation AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Apprenez et pratiquez le Hacking GCP : [**HackTricks Formation GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Supportez HackTricks +Soutenir HackTricks * 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 PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github. +* **Partagez des astuces de hacking en soumettant des PR au** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos GitHub.
{% endhint %} @@ -23,7 +23,7 @@ Apprenez et pratiquez le Hacking GCP :

https://miro.medium.com/v2/resize:fit:1100/format:webp/1*kKxtZ8qEmgTIMS81py5hhg.jpeg

1. Utilise les délimiteurs & et ; pour séparer les paramètres. -2. Ne reconnaît pas name\[]. +2. Nom\[] non reconnu. 3. Préférer le premier paramètre. ### Spring MVC 6.0.23 ET Apache Tomcat 10.1.30 @@ -94,8 +94,8 @@ Les résultats ont été tirés de [https://medium.com/@0xAwali/http-parameter-p

https://miro.medium.com/v2/resize:fit:1100/format:webp/1*llG22MF1gPTYZYFVCmCiVw.jpeg

1. POST RequestMapping == PostMapping & GET RequestMapping == GetMapping. -2. POST RequestMapping & PostMapping reconnaissent name[]. -3. Préférer name si name ET name[] existent. +2. POST RequestMapping & PostMapping reconnaissent name\[]. +3. Préférer name si name ET name\[] existent. 4. Concaténer les paramètres par exemple, first,last. 5. POST RequestMapping & PostMapping reconnaissent le paramètre de requête avec Content-Type. @@ -103,58 +103,143 @@ Les résultats ont été tirés de [https://medium.com/@0xAwali/http-parameter-p

https://miro.medium.com/v2/resize:fit:1100/format:webp/1*JzNkLOSW7orcHXswtMHGMA.jpeg

-1. Reconnaît name[]. +1. Reconnaît name\[]. 2. Concaténer les paramètres par exemple, first,last. ### GO 1.22.7

https://miro.medium.com/v2/resize:fit:1100/format:webp/1*NVvN1N8sL4g_Gi796FzlZA.jpeg

-1. NE reconnaît PAS name[]. +1. NOM pas reconnu name\[]. 2. Préférer le premier paramètre. ### Python 3.12.6 ET Werkzeug 3.0.4 ET Flask 3.0.3

https://miro.medium.com/v2/resize:fit:1100/format:webp/1*Se5467PFFjIlmT3O7KNlWQ.jpeg

-1. NE reconnaît PAS name[]. +1. NOM pas reconnu name\[]. 2. Préférer le premier paramètre. ### Python 3.12.6 ET Django 4.2.15

https://miro.medium.com/v2/resize:fit:1100/format:webp/1*rf38VXut5YhAx0ZhUzgT8Q.jpeg

-1. NE reconnaît PAS name[]. +1. NOM pas reconnu name\[]. 2. Préférer le dernier paramètre. ### Python 3.12.6 ET Tornado 6.4.1

https://miro.medium.com/v2/resize:fit:1100/format:webp/1*obCn7xahDc296JZccXM2qQ.jpeg

-1. NE reconnaît PAS name[]. +1. NOM pas reconnu name\[]. 2. Préférer le dernier paramètre. +## Injection JSON + +### Clés dupliquées +```ini +obj = {"test": "user", "test": "admin"} +``` +L'interface utilisateur pourrait croire la première occurrence tandis que le backend utilise la deuxième occurrence de la clé. + +### Collision de Clé : Troncature de Caractères et Commentaires + +Certains caractères ne seront pas correctement interprétés par l'interface utilisateur, mais le backend les interprétera et utilisera ces clés, cela pourrait être utile pour **contourner certaines restrictions** : +```json +{"test": 1, "test\[raw \x0d byte]": 2} +{"test": 1, "test\ud800": 2} +{"test": 1, "test"": 2} +{"test": 1, "te\st": 2} +``` +Notez comment dans ces cas, le front-end pourrait penser que `test == 1` et le back-end pensera que `test == 2`. + +Cela peut également être utilisé pour contourner les restrictions de valeur telles que : +```json +{"role": "administrator\[raw \x0d byte]"} +{"role":"administrator\ud800"} +{"role": "administrator""} +{"role": "admini\strator"} +``` +### **Utilisation de la Troncature de Commentaire** + +{% code overflow="wrap" %} +```ini +obj = {"description": "Duplicate with comments", "test": 2, "extra": /*, "test": 1, "extra2": */} +``` +{% endcode %} + +Ici, nous utiliserons le sérialiseur de chaque analyseur pour voir sa sortie respective. + +Sérialiseur 1 (par exemple, la bibliothèque GoJay de GoLang) produira : + +* `description = "Duplicate with comments"` +* `test = 2` +* `extra = ""` + +Sérialiseur 2 (par exemple, la bibliothèque JSON-iterator de Java) produira : + +* `description = "Duplicate with comments"` +* `extra = "/*"` +* `extra2 = "*/"` +* `test = 1` + +Alternativement, l'utilisation directe de commentaires peut également être efficace : +```ini +obj = {"description": "Comment support", "test": 1, "extra": "a"/*, "test": 2, "extra2": "b"*/} +``` +La bibliothèque GSON de Java : +```json +{"description":"Comment support","test":1,"extra":"a"} +``` +La bibliothèque simdjson de Ruby : +```json +{"description":"Comment support","test":2,"extra":"a","extra2":"b"} +``` +### **Précédence Incohérente : Désérialisation vs. Sérialisation** +```ini +obj = {"test": 1, "test": 2} + +obj["test"] // 1 +obj.toString() // {"test": 2} +``` +### Float et Entier + +Le nombre +```undefined +999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 +``` +peut être décodé en plusieurs représentations, y compris : +```undefined +999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 +9.999999999999999e95 +1E+96 +0 +9223372036854775807 +``` +Which might create inconsistences + ## 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) * [https://medium.com/@0xAwali/http-parameter-pollution-in-2024-32ec1b810f89](https://medium.com/@0xAwali/http-parameter-pollution-in-2024-32ec1b810f89) +* [https://bishopfox.com/blog/json-interoperability-vulnerabilities](https://bishopfox.com/blog/json-interoperability-vulnerabilities)
{% embed url="https://websec.nl/" %} {% hint style="success" %} -Apprenez et pratiquez le Hacking AWS :[**Formation HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Apprenez et pratiquez le Hacking GCP : [**Formation HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Supportez HackTricks +Support HackTricks -* 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 PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}