Thread CGI Sicherheit: Vermeidung gefährlicher Inhalte
(165 answers)
Opened by Gast at 2005-12-12 17:10
@ptk: Nullbyte und Slash (/) sind nicht erlaubt in Unix-Dateinamen. Unter DOS/Windows ist die Negativliste deutlich laenger.
Das Problem mit dem "Poison Null Byte" hat nicht direkt etwas mit Unix oder Windows zu tun, sondern mit C, und beide Betriebssysteme sind in C geschrieben. Perl-Strings koennen alle Zeichen enthalten, C-Strings dagegen sind nullterminiert. Sobald ein Perl-String als C-String an eine OS-Routine oder eine C-Funktion uebergeben wird, faellt alles nach dem Nullbyte weg. Es geht auch nicht darum, ob jetzt eine Datei mit der Endung ".exe" erzeugt werden kann, sondern dass hier nicht der Programmierer das Dateiende festlegt, sondern der Angreifer! Auch wenn Unix/Linux fuer die Ausfuehrbarkeit nicht auf Dateiendungen achtet - der Apache z.B. tut es. Wenn der faule CGI-Programmierer also denkt, dass sein CGI-Skript ruhig irgendwelche Daten im selben Verzeichnis ablegen darf, dann jubelt ihm der Angreifer vielleicht so eine Datei mit Endung ".cgi" und einem Skript als Inhalt unter. Zusammen mit einem Directory-Traversal-Angriff (Zeichenfolgen der Form "../../../" in einem uebergebenen Dateipfad) koennte man auch an beliebige Dateien im Dateisystem kommen. Das Problem ist natuerlich auch nicht neu, sondern wurde u.a. schon vor sechs Jahren im Phrack Magazine beschrieben. Der Artikel ist auch sonst immer noch lesenswert. Ansonsten schliesse ich mich den anderen an: Bauhaus scheint bisher nur recht vage Vorstellungen davon zu haben, vor welcher Art von Angriffen er sich jetzt schuetzen moechte. Es gibt hunderte von Angriffsarten und mindestens dutzende von "Best Pratices", wie man so etwas verhindert, und alle paar Monate gibt es auf beiden Seiten neues. Die Literaturtipps von esskar sind sicherlich ein guter Anfang. Und der schon mehrfach gefallene Ratschlag "traue grundsaetzlich keinen Benutzereingaben!" |