Website Hacking

Der Titel klingt vielleicht spannend, aber hier soll es nicht darum gehen wie ihr eine Website haken könnt, sondern auf welche Gefahren ihr beim Erstellen einer Website achten solltet. Ich stelle euch ein paar allgemeine Methoden vor, welche sich in den letzten Jahren etabliert haben.

Heutzutage gibt es zwar immer mehr Schutz gegen die allbekannten Maßnahmen, doch gerade Anfänger bietet immer wieder leichte Ziele für einen dieser Angriffe.

Auch fallen den Hackern immer wieder neue Methoden ein um diese Angriffsverfahren um zusetzen.

Cross-Site-Scripting

Cross-Site-Scripting (XSS) ist eine der häufigsten Angriffsverfahren im Web, da viele Seiten Sicherheitslücken besitzen, die mit dieser Methode genutzt werden, um bösartigen und schadhaften Code, meist in Form von clientseitigen Scriptsprachen (JavaScript), in die Website einzuschleusen. Dabei gibt es verschiedene Varianten.

Einerseits passiert Cross-Site-Scripting seiten-übergreifend, wobei andere Server genutzt werden, die denn Schadhaften Code ausführen. Diese Variante wird häufig im Zusammenhang mit Phishing-Verfahren verwendet um an persönliche Daten der Nutzer zu kommen. Der Angreifer manipuliert Teile einer Website oder verschickt Emails die vertrauenswürdig erscheinen. Dort platziert er einen vertrauenswürdigen Hyperlink, der den Nutzer auf eine bösartige Seite weiterleitet.

Eine andere Methode von XSS ist das Einschleusen von Codefragmenten direkt auf dem Server des Betreibers. Dabei werden Sicherheitslücken auf der Seite genutzt. Ein Beispiel hierbei ist das Einschleusen von Code in eine Datenbank durch einen Gästebucheintrag. Jeder Nutzer der das Gästebuch öffnet und denn Eintrag mit dem schadhaften Code angezeigt bekommt, führt im Hintergrund diesen Code aus. Mit dieser Variante lassen sich Cookies, die teilweise Informationen zu Sessions oder Benutzerkonten beinhalten, auslesen.

Bekannte Beispiel für Cross-Site-Scripting

Paypal 2006

Das Unternehmen PayPal wurde im Sommer 2006 Opfer einer Pfishing-Attacke. Dieser Angriff wurde mit Hilfe von XSS ausgelöst. Nutzern des Dienstes wurde eine gefälschte E-Mail zugesannt, in der auf ein deaktiviertes Konto hingewiesen wurde. Ein Link zur Seite von PayPal sollte diese Deaktivierung wieder rückgängig machen. Der Link führte allerdings auf eine real existierende, geschützte Seite der Firma PayPal. Auf dieser Seite wurde allerdings JavaScript-Code platziert, der den Nutzer auf den Server der Angreifer weiterleitete. Hier wurden durch eine gefälschte Oberfläche persönliche Daten, wie Benutzername, Passwort und Kreditkartennummer, abverlangt.

Quelle: heise.de

Twitter 2009

Zu Ostern wurde durch eine Sicherheitslücke im Microblogging-Dienst Twitter ein XSS-Wurm eingeschleust. Dieser Wurm wurde anhand von JavaScript-Code in einem Profil abgelegt. Betraten andere Nutzer dieses Profil, wartete das Script drei Sekunden bevor es den Nutzernamen und das Twitter-Cookie vom Browser ausgelesen hat. Mit diesen Daten verschickte der Wurm im Namen des infizierten Nutzers Nachrichten an weitere Mitglieder des Diensts, um diese ebenfalls anzustecken. In der Nachricht befand sich ein Link zum einem Konkurrenz-Dienst, der vom Entwickler des Wurms betrieben wurde.

Quelle: heise.de

SQL-Injection

Das Einschleusen von SQL-Befehlen in Datenbankmanagementsystemen (DBMS) wird als SQL-Injection bezeichnet. Ähnlich beim Cross-Site-Scripting sind auch viele Web-Anwendungen anfällig für diese Methode.

Der Angriff erfolgt aufgrund von Sicherheitslücken, die auf mangelnde Überprüfung von Nutzereingaben zurückzuführen sind. Eine solche Sicherheitslücke tritt sehr häufig bei dynamisch generierten SQL-Abfragen, die erst nach der erstellt werden, auf. Durch das Anhängen von eigenen SQL-Befehlen an die Übergabe-Parameter ( zum Beispiel durch den Operator UNION oder das Trennzeichen 😉 lassen sich Daten ausspähen oder manipulieren. Außerdem besteht die Möglichkeit Tabellen oder gar ganze Datenbanken zu löschen. In einigen Fällen ist es sogar möglich, auf die Shell (Kommandozeile) des DBMS zuzugreifen, womit der ganze Server eingenommen werden kann. Je nach Konfiguration des DBMS kann durch SQL-Injection ein großer Schaden entstehen. Allerdings können viele Fehlerquellen bereits bei der Konfiguration der Datenbank vermieden werden.

Eine besondere Form der SQL-Injection ist die Blind-SQL-Injection. Diese Art von Angriff verläuft ähnlich der SQL-Injection. Ziel dieser Methode ist es aber nicht das Angreifen des DBMS, sondern das Beschaffen von Informationen über ein Datenbankmanagementsystem. Diese Informationen werden beispielsweise durch Fehlermeldungen, die durch Fehleingaben in den SQL-Befehlen auftreten, erlangt. Das Testen, ob sich eine SQL-Abfrage für eine SQL-Injection eignet, ist auch eine Art der Blind-SQL-Injection. Dabei wird eine Ausgabe, die immer true zurückgibt, an den Übergabe-Parameter gehängt. Wird das Ergebnis ohne Fehlermeldung angezeigt, ist das DBMS angreifbar.

Die meisten Datenbanksystem bieten mitlerweile immer mehr Schutz gegen SQL-Injection. Auch PHP bietet hier mitlerweile viele Funktionen, die dem Anwender helfen eine Injection zu verhinden. Dennoch ist diese Methode auch heute noch gängig.

Bekanntes Beispiel für SQL-Injection

Britsh Telecom

Der Kommunikationsprovider British Telekom wurde in März 2009 Opfer eines SQL-Injection-Angriffs. Ein Hacker schleuste durch eine Sicherheitslücke SQL-Befehle ein und gelang damit an persönliche Benutzerinformationen, wie Name, Passwort, E-Mail-Adresse, Adresse, Telefonnummer usw.

Quelle: softpedia.com

Information Leakage (Informationslecks)

Das Preisgeben von Informationen zur Konfiguration oder internen Abläufen einer Webanwendung oder Datenbank ist neben dem Cross-Site-Scripting eines der häufigsten Probleme bei Webseiten. Bei dieser Sicherheitslücke werden vor allem Informationen gesammelt, die für andere Angriffsverfahren genutzt werden.

Die Quellen für diese Informationen sind meist Fehlermeldungen die unmaskiert auf der Website angezeigt werden. Diese Fehlermeldungen bieten häufig Informationen zum internen Quellcode oder dem Aufbau der Datenbank. Ein Angreifer versucht gezielt Fehler hervorzurufen um an diese Informationen zu kommen. Ein Beispiel hierzu sind missglückte SQL-Abfragen durch falsche Eingaben, welche in der Fehlermeldung den Tabellennamen ausgeben. Weitere Informationsquellen sind öffentlich sichtbare Kommentare im Quelltext mit Informationen zu nicht sichtbaren Programmteilen und die in der Adressleiste mitgelieferten GET-Parameter, welche Auskunft über Variablen im Quelltext geben oder teilweise sogar ganze SQL-Statements enthalten.

All diese Informationen, die eigentlich nicht erkennbar sein sollten, können für XSS oder SQL-Injection genutzt werden.

Social Engineering (soziale Manipulation)

Die soziale Manipulation ist eine der ältesten Techniken, die auch in der Offline-Welt häufig zum Betrug genutzt wird. Mit der Entwicklung des Internets, wurde diese Methode auf die Online-Welt übertragen. Bei der sozialen Manipulation schlüpft der Angreifer in eine andere Rolle und versucht ein vertrauenswürdiges Verhältnis zu seinem Opfer aufzubauen, um an vertrauliche Informationen oder kostenlose Dienstleistungen zu kommen. Dabei sammelt der Angreifer soviel Informationen wie möglich über eine Person oder Firma.

Dieses Angriffsverfahren hat zwar nicht direkt mit der Sicherheit einer Webanwendung zu tun, zählt aber trotzdem zu den Sicherheitslücken, da ein Angreifer durch den Risikofaktor „Mensch“ an Zugangsdaten oder anderen sensiblen Daten gelangen kann. Mit diesen Daten bekommt er Zugang zu internen Bereichen im Web, die nur privilegierten Nutzern zugänglich sein sollten. Phishing ist auch eine vorm von Social Engineering.

Bekanntes Beispiel für Social Engineering

Frank Abagnale Jr

Das bekannteste Beispiel, wenn auch schon sehr lange her, ist wohl Frank Abagnale Jr., der Ende 1960 über 2,5 Mio. US-Dollar durch das Social Engineering erbeutete. Bekannt wurde er vor allem durch den Film „Catch me if you can“ aus dem Jahr 2002.

Kevin Mitnick

In der Computerwelt, ist das bekannteste Beispiel Kevin Mitnick, der durch diese Methode mehrfach in das Computersystem des Pentagons eindringen konnte. Mitnick war zu seiner Zeit der meistgesuchteste Hacker. In einem Interview mit Technologie Review gab er ein Bespiel für den Risiko Faktor Mensch.

„Vor einiger Zeit machte das US-Steueramt (IRS) ein Sicherheits-Audit. Es wurden 100 IRS-Manager angerufen und man gab vor, IT-Mitarbeiter beim IRS zu sein. Und 35 der Manager rückten freimütig ihr Passwort und ihren User-Namen am Telefon heraus.“ [Mitnick 2008]

Content Spoofing (Fälschen von Inhalten)

Das Fälschen von Inhalten wird häufig mit dem Phishing verwendet. Dabei werden entweder Teile einer Website oder auch der ganze Inhalt einer Website so nachgebaut, dass es kaum einen Unterschied zum Original gibt. Der Nutzer denkt also das er auf der Originalseite gelandet ist und schenkt dem Inhalt vertrauen. Die Seiten werden allerdings so angepasst, dass sie sensible Nutzerdaten ausspionieren sollen. Zum Weiterleiten auf diese gefälschten Inhalte wird häufig das Cross-Site-Scripting verwendet. Entweder werden die Nutzer anhand von direkten Links weitergeführt, oder sie werden durch die Manipulation des Servers von der Originalseite direkt auf die Seite des Angreifers geleitet.