Parameter Pollution

Parameter Pollution

Support HackTricks

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 Abfragezeichenfolge a=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

Support HackTricks

Last updated