hacktricks/pentesting-web/parameter-pollution.md

81 lines
6.7 KiB
Markdown
Raw Normal View History

# Parameter Pollution
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 15:36:32 +00:00
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 15:36:32 +00:00
Andere Möglichkeiten, HackTricks zu unterstützen:
2023-12-31 02:25:17 +01:00
2024-02-10 15:36:32 +00:00
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
2022-04-28 16:01:33 +00:00
</details>
2024-02-10 15:36:32 +00:00
# Übersicht über HTTP-Parameterverunreinigung (HPP)
2020-07-30 08:34:18 +00:00
2024-02-10 15:36:32 +00:00
HTTP-Parameterverunreinigung (HPP) ist eine Technik, bei der Angreifer HTTP-Parameter manipulieren, um das Verhalten einer Webanwendung auf ungewollte 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 und sich auf der Clientseite bemerkbar machen.
2020-07-30 08:34:18 +00:00
2024-02-10 15:36:32 +00:00
## Beispiel für HTTP-Parameterverunreinigung (HPP)
2020-07-30 08:34:18 +00:00
2024-02-10 15:36:32 +00:00
Eine URL für eine Bankanwendungstransaktion:
2020-07-30 08:34:18 +00:00
2024-02-10 15:36:32 +00:00
- **Ursprüngliche URL:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000`
2020-07-30 08:34:18 +00:00
2024-02-10 15:36:32 +00:00
Durch Hinzufügen eines zusätzlichen `from`-Parameters:
2020-07-30 08:34:18 +00:00
2024-02-10 15:36:32 +00:00
- **Manipulierte URL:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC`
2020-07-30 08:34:18 +00:00
2024-02-10 15:36:32 +00:00
Die Transaktion kann fälschlicherweise auf `accountC` anstelle von `accountA` belastet werden, was das Potenzial von HPP zur Manipulation von Transaktionen oder anderen Funktionen wie Passwortrücksetzungen, 2FA-Einstellungen oder API-Schlüsselanforderungen zeigt.
2020-07-30 08:34:18 +00:00
2024-02-10 15:36:32 +00:00
### Technologiespezifische Parameteranalyse
2020-07-30 08:34:18 +00:00
2024-02-10 15:36:32 +00:00
- Die Art und Weise, wie Parameter analysiert und priorisiert werden, hängt von der zugrunde liegenden Webtechnologie ab und beeinflusst, wie HPP ausgenutzt werden kann.
- Tools wie [Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/) helfen dabei, diese Technologien und ihr Analyseverhalten zu identifizieren.
2020-07-30 08:34:18 +00:00
2024-02-10 15:36:32 +00:00
## PHP und HPP-Ausnutzung
2020-07-30 08:34:18 +00:00
2024-02-10 15:36:32 +00:00
**Fall von OTP-Manipulation:**
2020-07-30 08:34:18 +00:00
2024-02-10 15:36:32 +00:00
- **Kontext:** Ein Anmeldeverfahren, das eine Einmalpasswort (OTP) erfordert, wurde ausgenutzt.
- **Methode:** Indem sie den OTP-Anforderung mit Tools wie Burp Suite abfangen, haben Angreifer den `email`-Parameter in der HTTP-Anforderung dupliziert.
- **Ergebnis:** Das für die ursprüngliche E-Mail vorgesehene OTP wurde stattdessen an die zweite angegebene E-Mail-Adresse in der manipulierten Anforderung gesendet. Diese Schwachstelle ermöglichte einen unbefugten Zugriff, indem die beabsichtigte Sicherheitsmaßnahme umgangen wurde.
2020-07-30 08:34:18 +00:00
2024-02-10 15:36:32 +00:00
Dieses Szenario verdeutlicht ein schwerwiegendes Versäumnis in der Backend-Anwendung, das den ersten `email`-Parameter für die OTP-Generierung verarbeitet, aber den letzten für die Zustellung verwendet hat.
2020-07-30 08:34:18 +00:00
2024-02-10 15:36:32 +00:00
**Fall von API-Schlüssel-Manipulation:**
2020-07-30 08:34:18 +00:00
2024-02-10 15:36:32 +00:00
- **Szenario:** Eine Anwendung ermöglicht Benutzern die Aktualisierung ihres API-Schlüssels über eine Profil-Einstellungsseite.
- **Angriffsvektor:** Ein Angreifer entdeckt, dass er durch Anhängen eines zusätzlichen `api_key`-Parameters an die POST-Anforderung das Ergebnis der API-Schlüssel-Aktualisierungsfunktion manipulieren kann.
- **Technik:** Unter Verwendung eines Tools wie Burp Suite erstellt der Angreifer eine Anforderung, die zwei `api_key`-Parameter enthält: einen legitimen und einen bösartigen. Der Server aktualisiert nur das letzte Auftreten und verwendet den vom Angreifer angegebenen Wert für den API-Schlüssel.
- **Ergebnis:** Der Angreifer erhält die Kontrolle über die API-Funktionalität des Opfers und kann potenziell unbefugt auf private Daten zugreifen oder diese ändern.
2020-07-30 08:34:18 +00:00
2024-02-10 15:36:32 +00:00
Dieses Beispiel unterstreicht die Notwendigkeit einer sicheren Parameterverarbeitung, insbesondere bei Funktionen von so großer Bedeutung wie der Verwaltung von API-Schlüsseln.
2024-02-06 04:10:38 +01:00
2024-02-10 15:36:32 +00:00
## Parameteranalyse: Flask vs. PHP
2024-02-06 04:10:38 +01:00
2024-02-10 15:36:32 +00:00
Die Art und Weise, wie Webtechnologien doppelte HTTP-Parameter behandeln, variiert und beeinflusst ihre Anfälligkeit für HPP-Angriffe:
2024-02-06 04:10:38 +01:00
2024-02-10 15:36:32 +00:00
- **Flask:** Nimmt den Wert des ersten Parameters an, den es findet, z.B. `a=1` in einer Abfragezeichenfolge `a=1&a=2`, wobei die erste Instanz Vorrang vor den nachfolgenden Duplikaten hat.
- **PHP (auf Apache HTTP Server):** Priorisiert hingegen den letzten Parameterwert und wählt in diesem Beispiel `a=2`. Dieses Verhalten kann unbeabsichtigt HPP-Angriffe erleichtern, indem der manipulierte Parameter des Angreifers über den ursprünglichen Parameter gestellt wird.
2020-07-30 08:34:18 +00:00
2024-02-10 15:36:32 +00:00
## Referenzen
2024-02-04 17:10:29 +01:00
* [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)
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 15:36:32 +00:00
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 15:36:32 +00:00
Andere Möglichkeiten, HackTricks zu unterstützen:
2023-12-31 02:25:17 +01:00
2024-02-10 15:36:32 +00:00
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
2022-04-28 16:01:33 +00:00
</details>