mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-14 00:47:24 +00:00
Translated ['pentesting-web/parameter-pollution.md'] to de
This commit is contained in:
parent
94c83a5627
commit
7d42ef6ebf
2 changed files with 101 additions and 16 deletions
|
@ -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)
|
||||
|
|
|
@ -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"}
|
||||
```
|
||||
Ruby’s 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)**.**
|
||||
|
|
Loading…
Reference in a new issue