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 9ea5c01d2..afa4fcd1a 100644
--- a/pentesting-web/parameter-pollution.md
+++ b/pentesting-web/parameter-pollution.md
@@ -1,17 +1,17 @@
-# Parameter Pollution
+# Parameter Pollution | JSON Injection
## Parameter Pollution
{% hint style="success" %}
-AWS Hacking öğrenin ve pratik yapın:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
-GCP Hacking öğrenin ve pratik yapın: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+AWS Hacking'i öğrenin ve pratik yapın:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP Hacking'i öğrenin ve pratik yapın: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricks'i Destekleyin
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
-* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter**'da **bizi takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Bize katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya **bizi** **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
@@ -35,7 +35,7 @@ Ek bir `from` parametresi ekleyerek:
* **Manipüle Edilmiş URL:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC`
-İşlem, `accountA` yerine yanlışlıkla `accountC`'ye tahsil edilebilir ve bu, HPP'nin işlemleri veya şifre sıfırlama, 2FA ayarları veya API anahtarı talepleri gibi diğer işlevleri manipüle etme potansiyelini göstermektedir.
+İşlem, `accountA` yerine yanlışlıkla `accountC`'ye tahsil edilebilir ve bu durum HPP'nin işlemleri veya şifre sıfırlama, 2FA ayarları veya API anahtarı talepleri gibi diğer işlevleri manipüle etme potansiyelini göstermektedir.
#### **Teknolojiye Özgü Parametre Ayrıştırma**
@@ -44,29 +44,29 @@ Ek bir `from` parametresi ekleyerek:
### PHP ve HPP İstismarı
-**OTP Manipülasyonu Durumu:**
+**OTP Manipülasyon Durumu:**
* **Bağlam:** Tek Seferlik Şifre (OTP) gerektiren bir giriş mekanizması istismar edildi.
* **Yöntem:** Burp Suite gibi araçlar kullanarak OTP talebini kesen saldırganlar, HTTP isteğindeki `email` parametresini çoğalttı.
* **Sonuç:** İlk e-posta için tasarlanan OTP, manipüle edilmiş istekte belirtilen ikinci e-posta adresine gönderildi. Bu hata, amaçlanan güvenlik önlemini aşarak yetkisiz erişime izin verdi.
-Bu senaryo, uygulamanın arka ucundaki kritik bir gözden geçirmeyi vurgular; ilk `email` parametresi OTP üretimi için işlenirken, teslimat için sonuncusu kullanılmıştır.
+Bu senaryo, OTP üretimi için ilk `email` parametresini işleyen ancak teslimat için sonuncusunu kullanan uygulamanın arka ucundaki kritik bir gözden geçirmeyi vurgulamaktadır.
-**API Anahtarı Manipülasyonu Durumu:**
+**API Anahtarı Manipülasyon Durumu:**
-* **Senaryo:** Bir uygulama, kullanıcıların profil ayarları sayfası aracılığıyla API anahtarlarını güncellemelerine izin verir.
-* **Saldırı Vektörü:** Bir saldırgan, POST isteğine ek bir `api_key` parametresi ekleyerek API anahtarı güncelleme işlevinin sonucunu manipüle edebileceğini keşfeder.
-* **Teknik:** Burp Suite gibi bir araç kullanarak, saldırgan bir geçerli ve bir kötü niyetli `api_key` parametresi içeren bir istek hazırlar. Sunucu, yalnızca sonuncusunu işleyerek, API anahtarını saldırganın sağladığı değere günceller.
+* **Senaryo:** Bir uygulama, kullanıcıların profil ayarları sayfası aracılığıyla API anahtarlarını güncellemelerine izin veriyor.
+* **Saldırı Vektörü:** Bir saldırgan, POST isteğine ek bir `api_key` parametresi ekleyerek API anahtarı güncelleme işlevinin sonucunu manipüle edebileceğini keşfetti.
+* **Teknik:** Burp Suite gibi bir araç kullanarak, saldırgan bir geçerli ve bir kötü niyetli olmak üzere iki `api_key` parametresi içeren bir istek oluşturur. Sunucu, yalnızca sonuncusunu işleyerek, API anahtarını saldırganın sağladığı değere günceller.
* **Sonuç:** Saldırgan, mağdurun API işlevselliği üzerinde kontrol kazanır ve muhtemelen özel verilere yetkisiz erişim veya değişiklik yapabilir.
-Bu örnek, özellikle API anahtarı yönetimi gibi kritik özelliklerde güvenli parametre işlemenin gerekliliğini daha da vurgular.
+Bu örnek, özellikle API anahtarı yönetimi gibi kritik özelliklerde güvenli parametre işlemenin gerekliliğini daha da vurgulamaktadır.
### Parametre Ayrıştırma: Flask vs. PHP
-Web teknolojilerinin yinelenen HTTP parametrelerini ele alma şekli, HPP saldırılarına karşı duyarlılıklarını etkiler:
+Web teknolojilerinin çoğaltılmış HTTP parametrelerini ele alma şekli, HPP saldırılarına karşı duyarlılıklarını etkiler:
-* **Flask:** Bir sorgu dizesinde `a=1&a=2` gibi karşılaştığı ilk parametre değerini benimser, ilk örneği sonraki yinelenenlerden öncelikli kılar.
-* **PHP (Apache HTTP Sunucusunda):** Aksine, son parametre değerini önceliklendirir ve verilen örnekte `a=2` seçilir. Bu davranış, saldırganın manipüle ettiği parametreyi orijinalin üzerinde tutarak HPP istismarlarını istemeden kolaylaştırabilir.
+* **Flask:** Bir sorgu dizesinde `a=1&a=2` gibi karşılaştığı ilk parametre değerini benimser, ilk örneği sonraki çoğaltmalara tercih eder.
+* **PHP (Apache HTTP Sunucusunda):** Aksine, son parametre değerini önceliklendirir ve verilen örnekte `a=2` seçilir. Bu davranış, saldırganın manipüle ettiği parametreyi orijinaline tercih ederek HPP istismarlarını istemeden kolaylaştırabilir.
## Teknolojiye Göre Parametre Kirliliği
@@ -77,7 +77,7 @@ Sonuçlar [https://medium.com/@0xAwali/http-parameter-pollution-in-2024-32ec1b81
1. Parametre adında %00'dan sonrasını yok sayın.
-2. name\[]'i dizi olarak ele alın.
+2. name\[]'yi dizi olarak ele alın.
3. \_GET GET Yöntemini ifade etmez.
4. Son parametreyi tercih edin.
@@ -94,66 +94,151 @@ Sonuçlar [https://medium.com/@0xAwali/http-parameter-pollution-in-2024-32ec1b81
1. POST RequestMapping == PostMapping & GET RequestMapping == GetMapping.
-2. POST RequestMapping & PostMapping name\[]'i tanır.
+2. POST RequestMapping & PostMapping name\[]'yi tanır.
3. name ve name\[] mevcutsa name'i tercih edin.
-4. Parametreleri birleştirin, örneğin first,last.
+4. Parametreleri birleştirir, örneğin first,last.
5. POST RequestMapping & PostMapping, Content-Type ile sorgu parametresini tanır.
### **NodeJS** 20.17.0 **VE** Express 4.21.0
-1. name\[]'i tanır.
+1. name\[]'yi tanır.
2. Parametreleri birleştirir, örneğin first,last.
### GO 1.22.7
-1. name\[]'i tanımaz.
+1. name\[] tanınmaz.
2. İlk parametreyi tercih edin.
### Python 3.12.6 VE Werkzeug 3.0.4 VE Flask 3.0.3
-1. name\[]'i tanımaz.
+1. name\[] tanınmaz.
2. İlk parametreyi tercih edin.
### Python 3.12.6 VE Django 4.2.15
-1. name\[]'i tanımaz.
+1. name\[] tanınmaz.
2. Son parametreyi tercih edin.
### Python 3.12.6 VE Tornado 6.4.1
-1. name\[]'i tanımaz.
+1. name\[] tanınmaz.
2. Son parametreyi tercih edin.
-## Referanslar
+## JSON Injection
+
+### Çoğaltılmış anahtarlar
+```ini
+obj = {"test": "user", "test": "admin"}
+```
+Ön uç, ilk oluşumu doğru kabul edebilirken, arka uç anahtarın ikinci oluşumunu kullanabilir.
+
+### Anahtar Çakışması: Karakter Kısaltma ve Yorumlar
+
+Belirli karakterler ön uç tarafından doğru bir şekilde yorumlanmayabilir, ancak arka uç bunları yorumlayacak ve bu anahtarları kullanacaktır; bu, **belirli kısıtlamaları aşmak** için faydalı olabilir:
+```json
+{"test": 1, "test\[raw \x0d byte]": 2}
+{"test": 1, "test\ud800": 2}
+{"test": 1, "test"": 2}
+{"test": 1, "te\st": 2}
+```
+Not edin ki bu durumlarda ön uç `test == 1` olduğunu düşünebilirken, arka uç `test == 2` olduğunu düşünebilir.
+
+Bu, aşağıdaki gibi değer kısıtlamalarını aşmak için de kullanılabilir:
+```json
+{"role": "administrator\[raw \x0d byte]"}
+{"role":"administrator\ud800"}
+{"role": "administrator""}
+{"role": "admini\strator"}
+```
+### **Yorum Kısaltmasını Kullanma**
+
+{% code overflow="wrap" %}
+```ini
+obj = {"description": "Duplicate with comments", "test": 2, "extra": /*, "test": 1, "extra2": */}
+```
+{% endcode %}
+
+Burada her bir ayrıştırıcıdan serileştiriciyi kullanarak ilgili çıktısını göreceğiz.
+
+Serileştirici 1 (örneğin, GoLang'ın GoJay kütüphanesi) şunları üretecektir:
+
+* `description = "Yorumlarla tekrar"`
+* `test = 2`
+* `extra = ""`
+
+Serileştirici 2 (örneğin, Java'nın JSON-iterator kütüphanesi) şunları üretecektir:
+
+* `description = "Yorumlarla tekrar"`
+* `extra = "/*"`
+* `extra2 = "*/"`
+* `test = 1`
+
+Alternatif olarak, yorumların basit kullanımı da etkili olabilir:
+```ini
+obj = {"description": "Comment support", "test": 1, "extra": "a"/*, "test": 2, "extra2": "b"*/}
+```
+Java’nın GSON kütüphanesi:
+```json
+{"description":"Comment support","test":1,"extra":"a"}
+```
+Ruby’nin simdjson kütüphanesi:
+```json
+{"description":"Comment support","test":2,"extra":"a","extra2":"b"}
+```
+### **Tutarsız Öncelik: Deserialization vs. Serialization**
+```ini
+obj = {"test": 1, "test": 2}
+
+obj["test"] // 1
+obj.toString() // {"test": 2}
+```
+### Float ve Tam Sayı
+
+Sayı
+```undefined
+999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
+```
+birden fazla temsile çözülebilir, bunlar arasında:
+```undefined
+999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
+9.999999999999999e95
+1E+96
+0
+9223372036854775807
+```
+Which might create inconsistences
+
+## References
* [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" %}
-AWS Hacking öğrenin ve pratik yapın:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
-GCP Hacking öğrenin ve pratik yapın: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+AWS Hacking'i öğrenin ve pratik yapın:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP Hacking'i öğrenin ve pratik yapın: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricks'i Destekleyin
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
-* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter**'da **bizi takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.