Du möchtest verstehen, wie ein CSRF Token Deine Anwendung schützen kann?
Dieses Tutorial gibt Dir einen ersten praktischen Einblick.
Starten wir!
Was ist Cross-site request forgery (CSRF)?
CSRF ist eine Hacking Strategie.
Der Kriminelle versucht dem Opfer unbewusst einen Link zuzuschieben, sodass der Browser des Opfers den Schadlink ausführt.
Der Schadlink kann den Server lahmlegen und dessen Daten löschen oder verändern.
Die Strategie „CSRF“ nennt sich auch XSRF, Sea Surf, Session Riding oder Hostile Linking und gehört zu den Anwendung-Sicherheit-Attacken. Zu der gleichen Kategorie gehören auch:
- Brute-Force-Angriffe: Der Angreifer probiert möglichst viele Passwörter aus. Im Internet kann sich jeder z. B. 1,4 Milliarden Klartext-Passwörter downloaden und damit testen.
- DNS Poisoning: Der Kriminelle überschreibt einen DNS Cache mit falschen Informationen, sodass ein echter Kunde fehlgeleitet wird.
DAS. Sagen die Medien. TWITTER
Im Jahr 2010 hat die Malware „WTF goat worm“ vom Malware Typ „Wurm“ auf Twitter gespammt.
Dieser funktioniert auf der Basis CSRF und basiert auf der Entwicklung von Blogger Christian Heilmann, der auf eine solche Sicherheitslücke aufmerksam machen wollte.
Der Blogger steuerte die Anwendungsschnittstelle (API) von Twitter an, sodass sich der Post immer wieder kopierte, wenn neue Personen den gleichen Link anklickten.
CSRF einfach erklärt
Der Angreifer nutzt die Session Cookies im Browser seines Opfers.
Die meisten Internet-Nutzer sind permanent in verschiedenen Webapps wie z. B. von Facebook, Twitter und anderen Plattformen (via Sessions) angemeldet. Mit den aktiven Sitzungen im Browser kann der Angreifer seine Schadlinks über das Konto des Opfers ausführen.
Designen einer enfachen GET-Anfrage
Du musst im ersten Schritt eine HTTP-GET-Anfrage designen:
GET http://www.zwittscherr.com/hackersprofile/follow.php?follow=true
Wenn das Opfer auf den süßen und harmlosen Link klickt und das Opfer auf der Plattform Zwittscherr angemeldet ist, dann folgt der Nutzer automatisch dem Profil des Angreifers.
Während der Attacke merkt das Opfer gar nicht, dass dieser gerade einer neuen Person folgt.
GET http://www.zwittscher.com/myprofile/post.php?post=Schau%20was%20ich%20gefunden%20habe%3A%20Folgt%20ihm%20auch!%20http%3A%2F%2Fwww.zwittscherr.com%2Fhackersprofile%2Ffollow.php%3Ffollow%3Dtrue%0A
Jetzt wollen wir den GET-Befehl etwas viraler designen. In dem Beispiel oben hat der Hacker einen Link designt, mit dem das Opfer unbemerkt einen Post absendet:
Der Post beinhaltet die Aufforderung, dass jeder Profilleser des Opfers auf den gleichen Link klicken soll. Durch Klick auf den Link repliziert sich der Post auf das Profil des Lesers und immer mehr Zwittscherr Nutzer lesen, klicken und duplizieren unbewusst.
Effektiv Schadlinks verteilen
Natürlich ist unser Opfer nicht doof und klickt auf einen „so komischen“ Link. Kriminelle nutzen weitere Strategien, wie sie die Opfer dazu verführen auf den Link zu klicken.
Nr. 1 Link Shortner
Die sehr langen HTTP-GET Befehle können auffällig sein. Selbst Leihen ist mulmig, wenn sie auf einen so langen Link klicken. Ein Link-Shorter generiert aus einem super langen Link einen sehr kurzen. Diese verdeckt die Inhalte , dass die einen CSRF-Link nicht mehr sichtbar ist.
Die Link-Shorter YOURLS kann Umleitung-Links generieren, sodass das Opfer nicht erkennt, wo der Link hinführt und wie der ursprüngliche Link aussieht.
Nr. 2 Href-Tag
Die Auszeichungssprache des Webs HTML kann eine Link-Verknüpfung über einen beliebigen Text erstellen:
<a href=“http://www.schadlink.de/sehrboese“> Kennst Du schon diese News?</a>
Der Nutzer sieht nur den Text „Kennst Du schon diese News?“, der blau und unterstrichen ist. Der Schadlink bleibt ihm verborgen. Erfahre Nutzer fahren über den Link und sehen unten links einen die Ziel-URL. Diese Sicherheitsfeature nutzen nur wenige aktiv.
Nr. 3 Laden von Bildern, die keine Bilder sind
Der Hacker kann ein „unsichtbares“ Bild in einer Mail oder auf einer Webseite platzieren. Das unechte Bild enthält im src-Attribut keinen Pfad zu einer Bilddatei, sondern einen Schadlink.
Beim Laden der Mail oder Webseite ruft sich der Link auf und das Opfer merkt davon nichts.
POST-Anfragen und CSRF?
Mit etwas List kann der Kriminelle ein „verstecktes“ Formular designen, von dem der Nutzer nur der Button zu sehen bekommt.
Die Werte kann der Hacker in den value-Attributen festlegen. Zuletzt wird der Button mit einem Klick-Köder versehen:
„XMCompany hat das neue Phone3020 released. Zu einem Knüllerpreis“
Jetzt sendest Du das HTML-Formular einem XMCompany-Fan und schon hat er einen POST-Befehl unbewusst ausgelöst.
Sicherungsmaßnahme mit CSRF Token
Auf der Seite des Servers können Webhoster bei jedem GET und POST eine geheime Information (CSRF Token) mitsenden, sodass der Hacker nicht einfach CSRF ausnutzen kann.
Ein SHA3-256 Hash kann diese kleine Information maskieren und dem Hacker das Leben erschweren.
Die Web-Programmierer realisieren den Schutz durch ein verstecktes Input-Feld, welches einen CSRF Token enthält. Der Browser kann den Token auch in Form eines Cookies speichern.
Credits
Icons made by Gregor Cresnar from www.flaticon.com is licensed by CC 3.0 BY – Icons made by dDara from www.flaticon.com is licensed by CC 3.0 BY – Icons made by Icomoon from www.flaticon.com is licensed by CC 3.0 BY –Icons made by Those Icons from www.flaticon.com is licensed by CC 3.0 BY