Translated ['pentesting-web/parameter-pollution.md'] to de

This commit is contained in:
Translator 2024-11-12 12:25:51 +00:00
parent 94c83a5627
commit 7d42ef6ebf
2 changed files with 101 additions and 16 deletions

View file

@ -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)

View file

@ -1,18 +1,18 @@
# Parameter Pollution
# Parameter Pollution | JSON Injection
## Parameter Pollution
{% hint style="success" %}
Lerne & übe AWS Hacking:<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">\
Lerne & übe GCP Hacking: <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)
Lernen & üben Sie AWS Hacking:<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">\
Lernen & üben Sie GCP Hacking: <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>Support HackTricks</summary>
<summary>Unterstützen Sie HackTricks</summary>
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Hacking-Tricks, indem Sie PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichen.
</details>
{% endhint %}
@ -23,7 +23,7 @@ Lerne & übe GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-siz
## HTTP Parameter Pollution (HPP) Übersicht
HTTP Parameter Pollution (HPP) ist eine Technik, bei der Angreifer HTTP-Parameter manipulieren, um das Verhalten einer Webanwendung auf unbeabsichtigte Weise zu ändern. Diese Manipulation erfolgt durch das Hinzufügen, Ändern oder Duplizieren von HTTP-Parametern. Die Auswirkungen dieser Manipulationen sind für den Benutzer nicht direkt sichtbar, können jedoch die Funktionalität der Anwendung auf der Serverseite erheblich verändern, mit beobachtbaren Auswirkungen auf der Clientseite.
HTTP Parameter Pollution (HPP) ist eine Technik, bei der Angreifer HTTP-Parameter manipulieren, um das Verhalten einer Webanwendung auf unbeabsichtigte Weise zu ändern. Diese Manipulation erfolgt durch Hinzufügen, Ändern oder Duplizieren von HTTP-Parametern. Die Auswirkungen dieser Manipulationen sind für den Benutzer nicht direkt sichtbar, können jedoch die Funktionalität der Anwendung auf der Serverseite erheblich verändern, mit beobachtbaren Auswirkungen auf der Clientseite.
### Beispiel für HTTP Parameter Pollution (HPP)
@ -47,7 +47,7 @@ Die Transaktion könnte fälschlicherweise `accountC` anstelle von `accountA` be
**OTP-Manipulationsfall:**
* **Kontext:** Ein Anmeldeverfahren, das ein Einmalpasswort (OTP) erfordert, wurde ausgenutzt.
* **Methode:** Durch das Abfangen der OTP-Anfrage mit Tools wie Burp Suite duplizierten Angreifer den `email`-Parameter in der HTTP-Anfrage.
* **Methode:** Durch das Abfangen der OTP-Anforderung mit Tools wie Burp Suite duplizierten Angreifer den `email`-Parameter in der HTTP-Anforderung.
* **Ergebnis:** Das OTP, das für die ursprüngliche E-Mail bestimmt war, wurde stattdessen an die zweite in der manipulierten Anfrage angegebene E-Mail-Adresse gesendet. Dieser Fehler ermöglichte unbefugten Zugriff, indem die beabsichtigte Sicherheitsmaßnahme umgangen wurde.
Dieses Szenario hebt einen kritischen Fehler im Backend der Anwendung hervor, das den ersten `email`-Parameter zur OTP-Generierung verarbeitete, aber den letzten für die Zustellung verwendete.
@ -55,9 +55,9 @@ Dieses Szenario hebt einen kritischen Fehler im Backend der Anwendung hervor, da
**API-Schlüssel-Manipulationsfall:**
* **Szenario:** Eine Anwendung ermöglicht es Benutzern, ihren API-Schlüssel über eine Profilseite zu aktualisieren.
* **Angriffsvektor:** Ein Angreifer entdeckt, dass er durch das Anhängen eines zusätzlichen `api_key`-Parameters an die POST-Anfrage das Ergebnis der API-Schlüsselaktualisierungsfunktion manipulieren kann.
* **Technik:** Mit einem Tool wie Burp Suite erstellt der Angreifer eine Anfrage, die zwei `api_key`-Parameter enthält: einen legitimen und einen böswilligen. Der Server, der nur das letzte Vorkommen verarbeitet, aktualisiert den API-Schlüssel auf den vom Angreifer bereitgestellten Wert.
* **Ergebnis:** Der Angreifer erhält die Kontrolle über die API-Funktionalität des Opfers und kann möglicherweise private Daten unbefugt abrufen oder ändern.
* **Angriffsvektor:** Ein Angreifer entdeckt, dass er durch das Anhängen eines zusätzlichen `api_key`-Parameters an die POST-Anforderung das Ergebnis der API-Schlüsselaktualisierungsfunktion manipulieren kann.
* **Technik:** Mit einem Tool wie Burp Suite erstellt der Angreifer eine Anfrage, die zwei `api_key`-Parameter enthält: einen legitimen und einen bösartigen. Der Server, der nur das letzte Vorkommen verarbeitet, aktualisiert den API-Schlüssel auf den vom Angreifer bereitgestellten Wert.
* **Ergebnis:** Der Angreifer erhält die Kontrolle über die API-Funktionalität des Opfers und kann möglicherweise unbefugt auf private Daten zugreifen oder diese ändern.
Dieses Beispiel unterstreicht weiter die Notwendigkeit einer sicheren Parameterverarbeitung, insbesondere bei so kritischen Funktionen wie der Verwaltung von API-Schlüsseln.
@ -96,7 +96,7 @@ Die Ergebnisse stammen von [https://medium.com/@0xAwali/http-parameter-pollution
1. POST RequestMapping == PostMapping & GET RequestMapping == GetMapping.
2. POST RequestMapping & PostMapping erkennen name\[].
3. Bevorzuge name, wenn name UND name\[] vorhanden sind.
4. Verknüpfe Parameter, z.B. first,last.
4. Verkette Parameter z.B. first,last.
5. POST RequestMapping & PostMapping erkennen Abfrageparameter mit Content-Type.
### **NodeJS** 20.17.0 **UND** Express 4.21.0 <a href="#id-6d72" id="id-6d72"></a>
@ -104,7 +104,7 @@ Die Ergebnisse stammen von [https://medium.com/@0xAwali/http-parameter-pollution
<figure><img src="../.gitbook/assets/image (1259).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:1100/format:webp/1*JzNkLOSW7orcHXswtMHGMA.jpeg">https://miro.medium.com/v2/resize:fit:1100/format:webp/1*JzNkLOSW7orcHXswtMHGMA.jpeg</a></p></figcaption></figure>
1. Erkennt name\[].
2. Verknüpfe Parameter, z.B. first,last.
2. Verkette Parameter z.B. first,last.
### GO 1.22.7 <a href="#id-63dc" id="id-63dc"></a>
@ -134,11 +134,96 @@ Die Ergebnisse stammen von [https://medium.com/@0xAwali/http-parameter-pollution
1. name\[] wird NICHT erkannt.
2. Bevorzuge den letzten Parameter.
## JSON Injection
### Doppelte Schlüssel
```ini
obj = {"test": "user", "test": "admin"}
```
Der Frontend könnte die erste Vorkommen glauben, während das Backend die zweite Vorkommen des Schlüssels verwendet.
### Schlüssel-Kollision: Zeichenkürzung und Kommentare
Bestimmte Zeichen werden vom Frontend möglicherweise nicht korrekt interpretiert, aber das Backend wird sie interpretieren und diese Schlüssel verwenden. Dies könnte nützlich sein, um **bestimmte Einschränkungen zu umgehen**:
```json
{"test": 1, "test\[raw \x0d byte]": 2}
{"test": 1, "test\ud800": 2}
{"test": 1, "test"": 2}
{"test": 1, "te\st": 2}
```
Beachten Sie, wie in diesen Fällen das Frontend denken könnte, dass `test == 1` und das Backend denken könnte, dass `test == 2`.
Dies kann auch verwendet werden, um Wertbeschränkungen zu umgehen wie:
```json
{"role": "administrator\[raw \x0d byte]"}
{"role":"administrator\ud800"}
{"role": "administrator""}
{"role": "admini\strator"}
```
### **Verwendung von Kommentar-Trunkierung**
{% code overflow="wrap" %}
```ini
obj = {"description": "Duplicate with comments", "test": 2, "extra": /*, "test": 1, "extra2": */}
```
{% endcode %}
Hier verwenden wir den Serializer von jedem Parser, um dessen jeweilige Ausgabe zu sehen.
Serializer 1 (z. B. GoLangs GoJay-Bibliothek) produziert:
* `description = "Duplicate with comments"`
* `test = 2`
* `extra = ""`
Serializer 2 (z. B. Javas JSON-iterator-Bibliothek) produziert:
* `description = "Duplicate with comments"`
* `extra = "/*"`
* `extra2 = "*/"`
* `test = 1`
Alternativ kann die einfache Verwendung von Kommentaren ebenfalls effektiv sein:
```ini
obj = {"description": "Comment support", "test": 1, "extra": "a"/*, "test": 2, "extra2": "b"*/}
```
Die GSON-Bibliothek von Java:
```json
{"description":"Comment support","test":1,"extra":"a"}
```
Rubys simdjson-Bibliothek:
```json
{"description":"Comment support","test":2,"extra":"a","extra2":"b"}
```
### **Inkonsistente Priorität: Deserialisierung vs. Serialisierung**
```ini
obj = {"test": 1, "test": 2}
obj["test"] // 1
obj.toString() // {"test": 2}
```
### Float und Integer
Die Zahl
```undefined
999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
```
kann in mehrere Darstellungen decodiert werden, einschließlich:
```undefined
999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
9.999999999999999e95
1E+96
0
9223372036854775807
```
Welche Inkonsistenzen erzeugen könnte
## Referenzen
* [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)
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
@ -150,7 +235,7 @@ Lerne & übe GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-siz
<details>
<summary>Support HackTricks</summary>
<summary>Unterstütze HackTricks</summary>
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**