O'Reilly logo

PHP-Sicherheit: PHP/MySQL-Webanwendungen sicher programmieren by Stefan Esser, Christopher Kunz

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

3 Parametermanipulation48
diert werden und vor oder nach der SSL-verschlüsselten Strecke mani-
puliert werden können.
Um Schäden durch Manipulation von Parametern zu vermeiden,
sollten Sie gerade diese Angriffsmöglichkeiten in Planung und Ent-
wicklung berücksichtigen und entsprechende Prüfroutinen in Ihrer
Applikation implementieren.
3.2 Werkzeuge zur Parametermanipulation
Um zu erkennen, wie Sie Ihre Anwendungen vor Angriffen durch Para-
metermanipulation schützen können, möchten wir Ihnen zunächst die
Möglichkeit geben, in die Rolle des Angreifers zu schlüpfen und Ihnen
einige typische Vorgehensweisen vorstellen.
Um Parameter, die an eine Applikation übergeben werden, zu
beeinflussen, kann ein Browser oder ein Proxy verwendet werden. Die-
ser Proxy wird zwischen Applikation und Webserver geschaltet und
empfängt alle Anfragen und Antworten, die zwischen Client und Ser-
ver ausgetauscht werden. Er kann angewiesen werden, bei allen oder
bei bestimmten Anfragen und Antworten den Programmfluss zu unter-
brechen. An dieser Stelle können nun Parameter verändert werden, die
per GET, POST oder als Cookie an den Server bzw. zurück an den
Client geschickt werden. Wird der Browser verwendet, können die
GET-Parameter einfach abgeändert werden, bei POST-Daten wird das
Formular auf der Festplatte gespeichert und das
action-Attribut des
Form-Tags auf eine absolute URL angepasst.
Veränderung von GET-,
POST- und Cookie-Daten
Dann können alle Form-Tags, nicht nur in Bezug auf den Inhalt,
geändert werden, auch maximale Längen oder Select- und Combo-
Boxen können manipuliert werden. Für die Cookie-Werte gibt es z.B.
für den Mozilla-Browser entsprechende Plugins, die es erlauben, diese
Werte zu beeinflussen. Es können aber auch entsprechende PHP-
Skripte entwickelt werden, die Anfragen an den Server schicken. Mit
diesen ist es ebenso möglich, einfache Änderungen des HTTP-Requests
durchzuführen.
In den folgenden Abschnitten erklären wir, welche Werkzeuge
Ihnen zur Parametermanipulation zur Verfügung stehen, wie Sie diese
installieren können und wie Sie damit Parameter manipulieren.
3.2.1 Parametermanipulation mit dem Browser
Parameter, die per URL oder Formular übertragen werden, können mit
einem Standardbrowser ohne zusätzliche Hilfsmittel manipuliert wer-
den.
493.2 Werkzeuge zur Parametermanipulation
http://www.php-sicherheit.de/index.php?mode=show&id=1
Die beiden GET-Parameter mode und id können durch eine Änderung in
der Adressleiste Ihres Browsers geändert werden und so verfälscht an
den Server geschickt werden. Beginnen Sie hier mit einer Änderung der
id in einen anderen Wert, z.B. 100. Ist diese Aktion von Erfolg gekrönt,
kann es möglich sein, dass Sie Datensätze auslesen können, die eigent-
lich nicht für Ihre Augen bestimmt sind. Fügt man nun Sonderzeichen
wie
'"/%00 in die Variable id ein, kann es möglich sein, dass Fehlermel-
dungen im Browser zu sehen sind. Das deutet auf eine ungenügende
Validierung des Parameters hin. Diese Fehlermeldung kann uns Auf-
schluss über die verwendete Speichermöglichkeit für die Daten geben,
z.B. ob eine Datenbank verwendet oder die Daten im Dateisystem
abgelegt werden.
Ist in einer Webseite ein Formular vorhanden, können diese
Sonderzeichen auch in die Eingabefelder eingegeben werden. Die
Reaktion des Servers wird dann ähnlich sein. Sind allerdings Formu-
larelemente vorhanden, die vom HTML-Entwickler vorbelegt wurden
(Radiobuttons, Auswahlboxen usw.), ist eine Änderung nicht mehr
einfach über den Browser möglich. Hierzu muss das Formular auf der
lokalen Festplatte gespeichert werden. Ändern Sie nun die URL im
Attribut
action des Form-Tags auf eine absolute URL.
Die Angabe
<form action="index.php" method="POST">
wird so zu
<form action="http://www.php-sicherheit.de/index.php"
method="POST">
Nun können die Inhalte der Formularelemente geändert werden, und
scheinbar »fest vorgegebene« Inhalte werden variabel.
<form action="http://www.php-sicherheit.de/index.php"
method="POST">
<input type="radiobutton" name="auswahl" value="'%00" />
<select name="auswahl2">
<option value="'%00">Auswahl 1</option>
<option value="2">Auswahl 2</option>
</select>
</form>
Die bereits erwähnten Effekte auf dem Server sollten auch hier nach
dem Abschicken des Formulars auftreten.
Plugins für den
Mozilla-Browser
Für den beliebten Browser Firefox gibt es mehrere Plugins, die für
unsere Zwecke dienlich sein können. Diese Plugins sind meist platt-
formübergreifend erhältlich.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required