Donnerstag, 8. Januar 2009

News

präsentiert von: entwickler.com
Donnerstag, 28. Februar 2008

About Security #145: Schwachstellensuche: Daten auswerten

In About Security #144 wurde beschrieben, wie der Aufbau der auf Schwachstellen zu untersuchenden Webanwendung ermittelt werden kann. In dieser Folge geht es um die Auswertung der dabei gesammelten Daten.

Schritt 1b: Analyse der Webseiten

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

Zuerst werden die gesammelten Seiten eine nach der anderen analysiert. Dazu wird der Code jeder Seite betrachtet und nach nützlichen Informationen in Kommentaren gesucht. Das können z.B. auskommentierte Codeteile in der Programmiersprache der Webanwendung sein, die durch einen falsch gesetzten Tag oder HTML-Kommentar in die ausgegebene Seite gelangt sind. Solche Codefragmente können Aufschluss über den inneren Aufbau der Webanwendung geben oder sogar Informationen über die Konfiguration wie Namen von Servern, SQL-Tabellen usw. enthalten. Die HTML-Dateien können sowohl manuell als auch mit einem Tool wie z.B. grep mithilfe von regulären Ausdrücken durchsucht werden.

Interessant sind besonders folgende Punkte:

  • HTML-Kommentare (<!-- .. -->) enthalten meist nur Hinweise auf Bereiche der Seite, können aber manchmal auch interessantere Informationen enthalten.
  • Programm-Kommentare (z.B. //, /* .. */, <!--- .. ---> (Coldfusion, leicht mit HTML-Kommentaren zu verwechseln) ) dürften normalerweise nicht in der ausgegebenen HTML-Seite erscheinen. Tun sie es doch, sind die Chancen groß, dass sie nützliche Informationen enthalten.
  • Versteckte Eingabefelder (<input type='..' hidden>) können z.B. Tokens zum Schutz vor CSRF-Angriffen oder andere brauchbare Informationen enthalten.
  • SQL-Queries (SELECT .. FROM .., UPDATE .. SET .., INSERT INTO .., DELETE FROM ..) können außer in Fehlermeldungen nur durch einen Programmier- oder Konfigurationsfehler in die ausgegebene Seite gelangen. Sie liefern unter Umständen Informationen über die Datenbankstruktur und den Aufbau der verwendeten Queries.
  • IP-Adressen interner Server
  • Web- oder E-Mail-Adressen, z.B. der Entwickler, die Informationen über beteiligte Unternehmen liefern. Vielleicht basiert die Webanwendung ja auf einem bekannten Programm und wurde nur optisch angepasst?
Schritt 1c: Analyse der übergebenen Parameter

Als Nächstes werden die übergebenen Parameter untersucht. Was passiert bei falschen Eingaben? Die zurückgegebenen Fehlermeldungen, egal ob vom Webserver oder der Webanwendung, können nützliche Informationen liefern. Z.B. kann in einer Fehlermeldung des SQL-Servers die fehlgeschlagene Anweisung samt Server- und Tabellennamen enthalten sein. Auch immer wieder gern gesehen sind unterschiedliche Fehlermeldungen bei einem fehlgeschlagenen Login-Versuch: Liefert die Anwendung unterschiedliche Fehlermeldungen für einen falschen Benutzernamen und ein falsches Passwort, kann der Angreifer gültige Benutzernamen ermitteln. Gibt es dann auch keinen Schutz gegen Brute-Force-Angriffe, kann das böse enden. Daher sollten solche Fehlermeldungen neutral formuliert werden, z.B. "Benutzername und Passwort passen nicht zueinander" oder "Benutzername und/oder Passwort sind falsch".

About Security: Die komplette Serie

Entsprechendes gilt für alle Fehlermeldungen: Auf produktiv eingesetzten Systemen sollten die nur mitteilen, dass ein Fehler aufgetreten ist. Details sind für den Benutzer uninteressant, aber für den Angreifer Gold wert. Ebenso sollten auf produktiv eingesetzten Systemen besser keine Kommentare in den ausgegebenen HTML-Seiten enthalten sein. Ein normaler Benutzer sieht sie sowieso nicht, dafür liefern sie Angreifern unter Umständen nützliche Informationen. Alternativ könnte man nur die Kommentare mit möglicherweise für einen Angreifer nützlichen Informationen löschen. Das bedeutet aber nur unnötigen Aufwand. Einfacher ist es, alle Kommentare zu löschen.

Das klingt zwar nach "Security by Obscurity", hat damit aber nur teilweise zu tun. Die Sicherheit hängt nicht vom Verbergen der Informationen ab. Die Webanwendung darf keine Schwachstellen enthalten – unabhängig davon, ob der Angreifer nun mehr oder weniger Informationen besitzt. Aber man muss es einem Angreifer ja nicht unnötig leicht machen.

Schritt 2: Weitere Informationen sammeln

Nachdem die offensichtlichen Informationen gesammelt wurden, kann man anfangen, die nicht offensichtlichen zu suchen. Dazu wird im Wesentlichen nach nicht verlinkten Seiten gesucht. Wenn z.B. ein Verzeichnis die verlinkten Dateien geschäftsbericht04.pdf, geschäftsbericht05.pdf und geschäftsbericht06.pdf enthält, ist ja vielleicht auch der noch nicht veröffentlichte aktuelle als geschäftsbericht07.pdf vorhanden.

Die in Schritt 1a aufgebaute Sitemap kann dabei helfen, Muster in den Dateinamen und interessante Verzeichnisse zu finden. Dabei hängen die mögliche Ergebnisse sehr von der untersuchten Anwendung ab. So werden z.B. in einem Buchkatalog, in dem jedes verfügbare Buch auf einer eigenen Seite beschrieben wird, auf diesen Seiten keine für den Angreifer verwertbaren Informationen zu finden sein. Ganz anders sieht es hingegen bei einem Benutzerverzeichnis aus, bei dem die Benutzer nur die vollständigen Profile bestimmter anderer Benutzer sehen dürfen. Kann dann über z.B. benutzer-[lfd.Nr.].html oder benutzer.php?id=[lfd.Nr.] auf beliebige Profile zugegriffen werden, könnte der Angreifer dadurch nicht für ihn bestimmte Informationen erlangen.

In der nächsten Folge geht es um das Sammeln von Informationen im Client.

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 "Schwachstellensuche – I. Informationen sammeln"

Kommentare

BASTA!

Konferenzen

BASTA! Spring 2009

BASTA! Spring 2009

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

Entwicklertage 2009

Entwicklertage 2009

23.-27. Februar 2009
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

JAX 09

JAX 09

20.-24. April 2009
Rheingoldhalle Mainz

Eclipse Forum Europe 09

Eclipse Forum Europe 09

20.-24. April 2009
Rheingoldhalle Mainz

webinale 09

webinale 09

25.-27. Mai 2009
Berlin

RailsWayCon

RailsWayCon

25.-27. Mai 2009
Berliner Congress Center, Alexanderplatz, Berlin

Werbung
Top-Jobs

Endress+Hauser GmbH+Co. KG

Entwickler Datenbanksysteme (m/w)

Software & Support Verlag GmbH

Redakteur (m/w), Vollzeit

Software & Support Verlag GmbH

Volontär (w/m) Redaktion, Vollzeit

Software & Support Verlag GmbH

Lektor (m/w), Vollzeit

Signsoft GmbH

Java-Entwickler (m/w)
JAX 09

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

Ruby on Rails

RailsWay Magazin

Ruby on Rails

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