6.8 KiB
Parameter Pollution
{% hint style="success" %}
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Überprüfe die Abonnementpläne!
- Tritt der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folge uns auf Twitter 🐦 @hacktricks_live.
- Teile Hacking-Tricks, indem du PRs zu den HackTricks und HackTricks Cloud GitHub-Repos einreichst.
{% embed url="https://websec.nl/" %}
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.
Beispiel für HTTP Parameter Pollution (HPP)
Eine Transaktions-URL einer Banking-Anwendung:
- Ursprüngliche URL:
https://www.victim.com/send/?from=accountA&to=accountB&amount=10000
Durch das Einfügen eines zusätzlichen from
-Parameters:
- Manipulierte URL:
https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC
Die Transaktion könnte fälschlicherweise accountC
anstelle von accountA
belastet werden, was das Potenzial von HPP zur Manipulation von Transaktionen oder anderen Funktionen wie Passwortzurücksetzungen, 2FA-Einstellungen oder API-Schlüsselanforderungen zeigt.
Technologiespezifische Parameterverarbeitung
- Die Art und Weise, wie Parameter verarbeitet und priorisiert werden, hängt von der zugrunde liegenden Webtechnologie ab, was die Ausnutzbarkeit von HPP beeinflusst.
- Tools wie Wappalyzer helfen dabei, diese Technologien und deren Verhaltensweisen bei der Verarbeitung zu identifizieren.
PHP und HPP-Ausnutzung
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 die Angreifer den
email
-Parameter in der HTTP-Anfrage. - Ergebnis: Das OTP, das für die ursprüngliche E-Mail gedacht 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.
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ö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 private Daten unbefugt abrufen oder ändern.
Dieses Beispiel unterstreicht weiter die Notwendigkeit einer sicheren Parameterverarbeitung, insbesondere bei so kritischen Funktionen wie der Verwaltung von API-Schlüsseln.
Parameterverarbeitung: Flask vs. PHP
Die Art und Weise, wie Webtechnologien doppelte HTTP-Parameter behandeln, variiert und beeinflusst ihre Anfälligkeit für HPP-Angriffe:
- Flask: Nimmt den ersten gefundenen Parameterwert an, wie
a=1
in einer Abfragezeichenfolgea=1&a=2
, und priorisiert die erste Instanz gegenüber nachfolgenden Duplikaten. - PHP (auf Apache HTTP Server): Priorisiert hingegen den letzten Parameterwert und wählt
a=2
im gegebenen Beispiel. Dieses Verhalten kann unbeabsichtigt HPP-Angriffe erleichtern, indem es den manipulierten Parameter des Angreifers über den ursprünglichen stellt.
Referenzen
- https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654
- https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Überprüfe die Abonnementpläne!
- Tritt der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folge uns auf Twitter 🐦 @hacktricks_live.
- Teile Hacking-Tricks, indem du PRs zu den HackTricks und HackTricks Cloud GitHub-Repos einreichst.