Freitag, 21. November 2008

News

präsentiert von: entwickler.com
Donnerstag, 6. Oktober 2005

About Security #26: Gefahren für Webanwendungen

In dieser Folge von About Security lernen Sie einige weitere Schwachstellen in Webanwendungen kennen. Wie bei den bisher vorgestellten Schwachstellen geht die Gefahr auch dabei von gar nicht oder nicht ausreichend geprüften Benutzereingaben aus.

Formulare zum Senden einer E-Mail

N E U ! Security aktuell
Täglich aktuelle Security-Infos!

Werden Benutzereingaben Bestandteil von E-Mail-Headern, z.B. From: oder To:, können darüber weitere Empfänger eingeschleust werden: beim To:-Header durch einfaches Anfügen, beim From:-Header durch Einschleusen einer To:-, Cc:- oder Bcc:-Zeile. Wie beim Protokoll HTTP wird auch in E-Mails das Ende einer Header-Zeile mit CRLF gekennzeichnet (RFC 822). Daher darf CRLF nicht Bestandteil eines Header-Werts sein. Es gibt jedoch eine Ausnahme: Um lange Zeilen umbrechen zu können, wird CRLF, gefolgt von einem Leerzeichen oder einem Tabulator, wie das Leerzeichen beziehungsweise der Tabulator behandelt. Da in den meisten Formularen für E-Mail-Adressen nur eine Zeile vorgesehen ist, kann dieser Spezialfall normalerweise unberücksichtigt bleiben und alles ab einem CRLF aus der Eingabe gelöscht werden. Falls der Standard exakt eingehalten werden soll, können die Eingaben entsprechend den Vorgaben in RFC822 ausgewertet werden, sodass nur zulässige Header-Zeilen akzeptiert werden.

Aufruf von Shell-Befehlen

Benutzereingaben, die direkt als Parameter für Shell-Befehle verwendet werden, können zur Ausführung weiterer Befehle ausgenutzt werden. Daher ist es keine gute Idee, Befehle wie z.B. ping oder traceroute über eine Weboberfläche zugänglich zu machen und die Parameter direkt zu übergeben. Ein Angreifer kann beispielsweise unter Unix-artigen Betriebssystemen beliebige weitere Befehle hinter einem ";" anfügen. Entweder müssen alle gefährlichen Zeichen aus der Eingabe ausgefiltert werden oder es dürfen nur zulässige Zeichen akzeptiert werden. Wie schon bei der Verhinderung von Cross-Site Scripting und SQL Injection ist es meist einfacher und sicherer, mit einer Positivliste zu arbeiten.

Wechsel des aktuellen Benutzers
About Security: Die komplette Serie

Wird der aktuelle Benutzer ausschließlich anhand einer Benutzerkennung in dem URL erkannt, kann ein Benutzer durch Manipulation des Parameters die Identität eines anderen Benutzers annehmen. Ebenso verhält es sich bei einer Übertragung als Cookie oder POST-Parameter, es ist lediglich etwas mehr Aufwand nötig. Ein weiterer Nachteil dieser Methoden: Ein einfaches erneutes Laden der entsprechenden Seite reicht in der Regel aus, um den Status des jeweiligen Benutzers zu erlangen. Daher sollte die Identifikation der Benutzer immer auf mehreren Faktoren aufbauen. Nur weil ein Benutzer sich ordnungsgemäß angemeldet hat, bedeutet das nicht, dass die nächste Anfrage vom selben Webbrowser auch vom selben Benutzer stammt. Ein typisches Szenario ist ein Webbrowser in einem Internet-Cafe: Ein Benutzer kann die History-Funktion des Browsers benutzen, um vom vorherigen Benutzer besuchte Seiten anzusteuern. Werden dabei auch Authentifizierungsdaten übertragen, ist der neue Benutzer danach auf dem Webserver als der vorherige Benutzer angemeldet.

Manipulation von Onlinebestellungen

Werden in einem Webshop Benutzereingaben ohne weitere Prüfung zur Erstellung von Rechnungen verwendet, kann durch die Manipulation von zum Beispiel Preisen, Rabatten oder Versandkosten der Rechnungsbetrag gesenkt werden. Verläuft die gesamte Rechnungsstellung automatisiert, fällt eine derartige Manipulation unter Umständen überhaupt nicht auf. Entsprechende Daten dürfen daher nie aus den Benutzereingaben übernommen werden, sondern müssen auf dem Server der Datenbank entnommen und/oder dort berechnet werden.

Gefährliche Weiterleitungen

Skripte, die je nach übergebenem Parameter zu anderen lokalen Adressen weiterleiten, können beispielsweise für Phishing-Angriffe ausgenutzt werden. Das Verfahren wird oft verwendet, um nach der erfolgreichen Anmeldung auf einer Login-Seite direkt zu einer anderen lokalen Seite zu springen. Dabei ist das Ziel Bestandteil des URL, zum Beispiel:

https://login.sichere-seite.example/Pfad/login.cgi?Ziel=
http%3a%2f%2fwww%2esichere-seite%2eexample%2fziel.html

Nach der erfolgreichen Anmeldung wird der Benutzer auf die Seite

http://www.sichere-seite.example/ziel.html

weitergeleitet. Wird der Parameter für das Ziel nicht ausreichend geprüft, kann eine Seite auf dem Webserver des Angreifers als Ziel angegeben und der Benutzer getäuscht werden. Dabei werden beim Aufruf der eingeschleusten Seite auch alle Parameter, die vom Skript login.cgi weitergegeben werden, an den Server des Angreifers übermittelt. Die einfachste Methode zur Verhinderung derartiger Angriffe besteht darin, wirklich nur zu lokalen Seiten weiterzuleiten. Die Angabe von Protokoll und Server ist dann überflüssig, da sich das Protokoll aus dem Kontext ergibt und als Server sowieso nur der lokale zulässig ist.

Mit dieser bei weitem nicht vollständigen Aufzählung möglicher Schwachstellen wird der Themenkomplex "Sichere Webanwendungen" vorerst abgeschlossen. Ab About Security #127 geht es erneut um die Sicherheit von Webanwendungen. In der nächsten Folge lernen Sie einige Gefahren für Webserver kennen.

Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!

Carsten Eilers

About Security – Übersicht zum aktuellen Thema "Sichere Webanwendungen"

Kommentare

Ihre Meinung ist uns wichtig!
Mobile Computing Heute & Morgen!
Nehmen Sie an unserer Umfrage zum Thema Mobile Computing in Deutschland teil und nutzen Sie die Chance eine Casio Exilim EX-Z1050-Digitalkamera zu gewinnen!

Konferenzen

JAX Asia 2008

JAX Asia 2008

25.-28. November 2008
Singapore, Kuala Lumpur, Jakarta

BASTA! Spring 2009

BASTA! Spring 2009

23.-27. Februar 2009
Maritim Rhein-Main Hotel Wissenschaftsstadt Darmstadt

BASTA! Italia 2009

BASTA! Italia 2009

16.-18. März 2009
Holiday Inn EUR Parco dei Medici, Roma

PHPCon Italia 2009

PHPCon Italia 2009

18.-20. März 2009
Holiday Inn EUR Parco dei Medici, Roma

webinale 09

webinale 09

25.-27. Mai 2009
Berlin

Werbung
Top-Jobs

Software & Support Verlag GmbH

Redakteur (m/w), Vollzeit

Signsoft GmbH

Java-Entwickler (m/w)

Software & Support Verlag GmbH

Lektor (m/w), Vollzeit

Endress+Hauser GmbH+Co. KG

Entwickler Datenbanksysteme (m/w)

Software & Support Verlag GmbH

Volontär (w/m) Redaktion, Vollzeit

Magazine

Entwickler Magazin - Enterprise Technologies & Business Solutions

Entwickler Magazin

Enterprise Technologies & Business Solutions

dot.net magazin - die unabhängige Quelle für .NET-Technologien

dot.net magazin

Die Quelle für .NET-Technologien

Eclipse Magazin

Eclipse Magazin

Weltweit erstes Magazin für Eclipse-Entwickler

Java Magazin - Internet & Enterprise Technology

Java Magazin

Internet & Enterprise Technology

CREATE OR DIE - Ein Leben für die Kreativität

CREATE OR DIE

Ein Leben für die Kreativität

Business Technology - Management Magazin

Business Technology

Management Magazin

PHP Magazin - Professional PHP Development

PHP Magazin

Professional PHP Development

Bücher


hosted by HostEurope