Donnerstag, August 24, 2006

JavaScript Port-Scanning

So kann man sich irren. Bislang hielt ich JavaScript für ziemlich harmlos. Der in einer Webseite eingebundene JavaScript-Code wird im Browser clientseitig ausgeführt und ermöglicht eindrucksvolle Effekte, wie es neuerdings AJAX-Applikationen demonstrieren. JavaScript bleibt dabei gewissermassen im Gefängnis der Ausführungsumgebung des Browsers eingesperrt. Schaden kann JavaScript dabei nicht anrichten. JavaScript hat z.B. keinen Zugriff auf das Dateisystem.

Aber mit JavaScript kann man dennoch durch die Gitterstäbe des Browsergefängnisses spähen! Und das sogar ziemlich weit. Es ist möglich Port-Scans durchzuführen und das Rechnernetz eines ahnungslosen Surfers auszuspähen. Die verwendete Technik dahinter hat etwas bestechendes -- einmal abgesehen davon, was man damit anrichten kann. Ich wurde darauf in einer heise-Meldung aufmerksam.

Die Idee ist so einfach wie genial: Nehmen wir im ersten Schritt die Suche nach ausspähbaren Zielen. Das Image-Objekt in JavaScript kennt ein Attribut "src" (für source, Quelle) , das einfach mit einer IP-Adresse des Ziels versehen wird. Damit wird versucht, ein Bild vom Ziel zu laden. Darüber läßt sich herausfinden, ob das Ziel existiert -- ein ping. Weitere Details finden Sie in dem verlinkten SPI-Paper. Es lohnt sich auch, den Code auf der Beispielseite zu studieren, insbesondere scanner3.js ist dabei von Interesse.

1 Kommentar:

Aaron_Mueller hat gesagt…

Ein richtiger Port-Scanner ist das ja nicht, wenn ich den Sourcecode richtig interpretiere. Es werden nur alle möglichen IP-Adressen durchprobiert und getestet ob auf Port 80 ein Service liegt der auf HTTP-Anfragen reagiert.

Die Idee ist natürlich genial.

Ich habe ein ähnliches Script gebastelt, mit dem ich überprüfen konnte, ob mein vServer noch erreichbar ist. Dabei hab ich eine kleine Textdatei ins Root-Verzeichnis des Webservers gelegt und dieses per PHP-Script alle 30 Minuten versucht runterzuladen (cronjob). Wenn das geklappt hat, war alles okay, wenn nicht hat das Script mir ne E-Mail geschrieben.