16. April 2008

Path Evasion, Flash Decompiling oder Voting für Fortgeschrittene

Hier haben wir bereits von einem Download-Script auf einer Webseite berichtet, das gegenüber Directory Traversal anfällig war.

Der Freund des Freundes eines Freundes (oder so in der Art) nahm mit seiner Band an einem Contest eines großen Brause-Herstellers teil und bat in einem Forum darum, dass man doch bitte für ihn voten sollte. Das haben auch viele getan. Da die Bitte in einem techniklastigen Forum erging, haben einige einen Flash-Decompiler angeworfen und folgendes entdeckt:
Der Vote ging auf eine URL in Form von /vote/a?34567754345677654356765456765456123123. Der String war nicht in irgendeinerweise einfach so fälschbar, um die Abstimmung zu beeinflussen (rein akademisch betrachtet). Das Decompiling ergab, dass der Aufwand für den String sehr hoch war. Die Basis-Infos (ID der Band, Timestamp, etc) werden mittels AES einem Passwort verschlüsselt, dann noch noch Electronic Code Book Mode und ein PKCS#5-Padding.
Aufgrund dessen konnte ein Proof-of-Concept Script von dem Freund eines Freundes entwickelt werden, um diese sehr komplexe Absicherung in insgesamt ~1 Stunde zu umgehen.

Ein andere fand ein Script, dass den Download von MP3s ermöglicht hat (woher kenne ich das nur?..) und, tadaaaa, auch hier war ein Directory Traversal möglich. Letztlich fand der Freund eines Freundes auch eine include-Datei mit folgendem Inhalt

 $DBNAME = "einedb";
 $DBUSER = "einuser";
 $DBHOST = "xx.xx.xx.xx";
 $DBPASS = "komplexespw";


Der Freund eines Freundes hat sich auf die Datenbank verbunden (MySQL, Port 3306/TCP) und hätte so alle Daten, inkl. den Votes, verändern oder löschen können. Ein Bild der Datenbank verdeutlicht dies (klicken = groß).

Tabellenansicht

Tabellenansicht

Ein spannendes Fallbeispiel, bei dem vieles richtig gemacht wurde und zuviel falsch:

  • Richtig: URLs für Votings sollten nicht vorhersehbar sein (es geht aber sicherlich auch einfacher)
  • Falsch: Schlechte bzw. keine Benutzer-Validierung in PHP-Scripten
  • Falsch: Sensitive Informationen in Flash-Dateien

/gt