Was ist eine Web Parameter Tampering Attack?
Im Rahmen einer Web Parameter Tampering Attack versucht ein Angreifer, eine Webseite durch Manipulationen der URL zu verändern. Die Folge können Programmverhalten sein, die der Programmierer nicht zulassen wollte oder für die der Seitenbesucher keine ausreichenden Rechte hat. Die Angriffsmethode greift Schwachstellen in der Verarbeitung von vertrauensunwürdigen Daten an. Der Code muss die Daten auf Integrität, bösartigen Inhalt, SQL Injections, Cross-Site-Scripting und andere Risiken überprüfen. Bei einer Web Parameter Tampering Attack wird einfach der Wert einer GET- oder POST-Variablen in der URL verändert und ausgeführt. Die falschen Daten können auch vom Request-Header oder von Cookies kommen.
Wie wird ein Request Header verändert?
In Request-Headern gibt es einige Variablen, die sich zur Manipulation eignen. Das folgende Beispiel zeigt mögliche Angriffsorte:
GET https://beispiel.de/ HTTP/1.1Host: beispiel.deConnection: keep-aliveAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36Accept-Encoding: gzip, deflate, sdchAccept-Language: de-DE,de-DE;q=0.8,en;q=0.6
In der ersten Zeile steht der GET-Request, der eine Seite von einer bestimmten URL anfordert. Sollen Parameter an die Anwendung übergeben werden, sind diese in der URL enthalten. Die Verwendung einer https-Verbindung macht die Seite weder vertrauenswürdig, noch ist diese Seite dadurch vor bösartigen Anfragen geschützt. Zusätzlich ist die HTTP-Version zu sehen. Alle drei Dinge lassen sich verändern und wenn der Server ungültige Werte nicht korrekt verarbeitet, für einen Angriff nutzen. Ein weiteres geeignetes Angriffsziel ist der User-Agent. Über das Feld prüfen Webanwendungen welcher Browser im Einsatz ist und die Information wird teilweise in der Datenbank abgespeichert. Daher muss der Code prüfen, dass das Feld keine SQL Injection oder Cross-Site-Scripting-Attacke enthält. Gleiches gilt für das referrer-Feld. Dessen Inhalt speichern viele Anwendungen ab, um abzuspeichern, von welcher anderen Seite der Seitenbesucher gekommen ist.
GET- und POST-Parameter
Die GET-Parameter sind der Teil der URL mit einem Fragezeichen, zum Beispiel „?name=Peter“. Der Inhalt der Parameter lässt sich einfach über die Adresszeile ändern. Der POST-Parameter ist im Request-Body enthalten, meist handelt es sich um das Ergebnis einer Formularübertragung oder Ähnliches. POST-Parameter verändern Angreifer bevorzugt mit Werkzeugen wie POSTMan oder Fiddler. Die Möglichkeit von Web Parameter Tampering Attacken muss der Programmierer durch gründliches validieren aller weiterverarbeiteten Parameter verhindern.