Sicherheitslücken in af.cgi (alienform oder alienform2)
Martinus
- perl
Liebe Leute,
seit einigen Jahren sind Sicherheitslücken im immer noch oft genutzten Skript alienform bekannt. Eine englische Zusammenfassung und Bugfix von Nick Cleaton findet sich z.B. unter http://lists.jammed.com/bugtraq/2002/06/0077.html.
Für deutsche Nutzer sind die Angaben aber wenig hilfreich, da die wohl am meisten genutzte Version des Skripts ("Deutsche Übersetzung: www.internet-partner.de") die entsprechneden Zeilen gar nicht enthält.
Deshalb hier meine eigene Korrektur für diese Version:
Ab ca. Zeile 194 hinter
sub LogFile {
my $msg = shift @_;
my $file = shift @_;
und hinter
sub ReadFile {
my $msg = shift @_;
my $file = shift @_;
ist jeweils einzusetzen:
$file =~ s[../] [_]g;
$file =~ s/[^\w-./\]+/_/g;
Desweiteren sollte für Logfiles ein anderes Verzeichnis gewählt werden als für den Rest, da sie sonst leicht ausgelesen werden können. Das wird erreicht durch Definition eines zweiten Pfades:
hinter
$base_path = '../htdocs/formulare/';
ca. in Zeile 23 also ergänzen:
$base_path_logs = '../htdocs/logs/';
sowie in der Subschleife für logfiles ca. in Zeile 199
$file = $base_path . $file;
ersetzen durch
$file = $base_path_logs . $file;
Schließlich gibt es noch einen schwerwiegenden Fehler, auf den Nick Cleaton nicht hinweist: In Alienform soll festgelegt werden können, welcher Server auf das Skript zugreifen darf. Das funktioniert aber nicht, erforderlich ist diese Änderung unter sub CheckRef ca. in Zeile 106:
statt
if ((@Referers) and ($ENV{'HTTP_REFERER'})) {
muss es heißen:
if (@Referers) {
So. Ich hoffe, es stimmt alles wie hier beschrieben und es mag jemandem nützen.
Gruß Martin