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 1bbb296c7..a7143a439 100644 --- a/pentesting-web/parameter-pollution.md +++ b/pentesting-web/parameter-pollution.md @@ -1,4 +1,4 @@ -# Parameter Pollution +# Parameter Pollution | JSON Injection ## Parameter Pollution @@ -23,7 +23,7 @@ Learn & practice GCP Hacking: @@ -134,27 +134,112 @@ There results were taken from [https://medium.com/@0xAwali/http-parameter-pollut 1. name\[] को मान्यता नहीं दी गई। 2. अंतिम पैरामीटर को प्राथमिकता दें। -## References +## JSON Injection + +### Duplicate keys +```ini +obj = {"test": "user", "test": "admin"} +``` +The front-end might believe the first ocurrence while the backend uses the second ocurrence of the key. + +### Key Collision: Character Truncation and Comments + +कुछ वर्ण सही ढंग से फ्रंटेंड द्वारा व्याख्यायित नहीं किए जाएंगे लेकिन बैकएंड उन्हें व्याख्यायित करेगा और उन कुंजियों का उपयोग करेगा, यह **कुछ प्रतिबंधों को बायपास करने** के लिए उपयोगी हो सकता है: +```json +{"test": 1, "test\[raw \x0d byte]": 2} +{"test": 1, "test\ud800": 2} +{"test": 1, "test"": 2} +{"test": 1, "te\st": 2} +``` +ध्यान दें कि इन मामलों में फ्रंट एंड यह सोच सकता है कि `test == 1` है और बैकएंड यह सोच सकता है कि `test == 2` है। + +इसका उपयोग मूल्य प्रतिबंधों को बायपास करने के लिए भी किया जा सकता है जैसे: +```json +{"role": "administrator\[raw \x0d byte]"} +{"role":"administrator\ud800"} +{"role": "administrator""} +{"role": "admini\strator"} +``` +### **टिप्पणी संक्षेपण का उपयोग करना** + +{% code overflow="wrap" %} +```ini +obj = {"description": "Duplicate with comments", "test": 2, "extra": /*, "test": 1, "extra2": */} +``` +{% endcode %} + +यहाँ हम प्रत्येक पार्सर से सीरियलाइज़र का उपयोग करेंगे ताकि इसके संबंधित आउटपुट को देख सकें। + +सीरियलाइज़र 1 (जैसे, GoLang का GoJay पुस्तकालय) निम्नलिखित उत्पन्न करेगा: + +* `description = "Duplicate with comments"` +* `test = 2` +* `extra = ""` + +सीरियलाइज़र 2 (जैसे, Java का JSON-iterator पुस्तकालय) निम्नलिखित उत्पन्न करेगा: + +* `description = "Duplicate with comments"` +* `extra = "/*"` +* `extra2 = "*/"` +* `test = 1` + +वैकल्पिक रूप से, टिप्पणियों का सीधा उपयोग भी प्रभावी हो सकता है: +```ini +obj = {"description": "Comment support", "test": 1, "extra": "a"/*, "test": 2, "extra2": "b"*/} +``` +Java का GSON पुस्तकालय: +```json +{"description":"Comment support","test":1,"extra":"a"} +``` +Ruby का simdjson पुस्तकालय: +```json +{"description":"Comment support","test":2,"extra":"a","extra2":"b"} +``` +### **असंगत प्राथमिकता: डीसिरियलाइजेशन बनाम सीरियलाइजेशन** +```ini +obj = {"test": 1, "test": 2} + +obj["test"] // 1 +obj.toString() // {"test": 2} +``` +### Float और Integer + +संख्या +```undefined +999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 +``` +कई प्रतिनिधित्वों में डिकोड किया जा सकता है, जिसमें शामिल हैं: +```undefined +999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 +9.999999999999999e95 +1E+96 +0 +9223372036854775807 +``` +जो असंगतियाँ उत्पन्न कर सकता है + +## संदर्भ * [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" %} -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) +AWS Hacking सीखें और अभ्यास करें:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCP Hacking सीखें और अभ्यास करें: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Support HackTricks +HackTricks का समर्थन करें -* 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. +* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें! +* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो करें** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
{% endhint %}