Die Funktionen von CGI-Programmen sind leistungsstark, aber gerade deshalb wird Ihr System mit Lücken übersät sein, wenn Sie als CGI-Entwickler oder Systemadministrator keine Aufmerksamkeit auf das Schreiben und Einrichten von CGI-Programmen richten. In diesem Artikel werden die Sicherheitsprobleme von CGI erläutert.
3. Sicherheit von CGI
Die Funktion des CGI-Programms ist leistungsstark. Es kann nicht nur die Funktionen gewöhnlicher Programme haben, sondern auch die Ergebnisse des Programms im WEB veröffentlichen. Aber gerade weil die Funktionen von CGI-Programmen so leistungsstark sind, wird Ihr System, wenn Sie als CGI-Entwickler oder Systemadministrator dem Schreiben und Einrichten von CGI-Programmen keine Aufmerksamkeit schenken, mit Lücken übersät sein, die es einigen illegalen Benutzern ermöglichen, auszunutzen von ihnen.
Die hier erwähnte Sicherheit wird nicht durch die CGI-Spezifikation verursacht, sondern durch unsachgemäße Programmierung und Systemeinstellungen. Die CGI-Spezifikation ermöglicht es Benutzern, die Rechenleistung des Servers auszunutzen. Es sind fehlerhafte Berechnungen auf dem Server, die zu Sicherheitslücken im System führen. Im Folgenden beschreibe ich eine CGI-Sicherheitslücke auf UNIX-Systemen. Diese Schwachstelle ist sehr häufig.
# !/usr/local/bin/perl
# formmail.cgi
erfordern „cgi.pl“;
# Starten Sie die E-Mail-Anwendung „/bin/mail“ mit der Kopfzeile „Betreff:“ aus dem Feld „formname“.
open (MAIL, "|/bin/mail -s '".$input{"formname"}."' webweave");
# Fügen Sie das Sendefeld „formcontents“ als Nachrichtentext hinzu
DRUCKMAIL $input{"formcontents"};
close(MAIL);
Ausgang(0);
In diesem Beispiel übermittelt das CGI-Programm die Formularinformationen an /bin/mail und sendet sie an den Webveave-Server. In den meisten Fällen kann dieses CGI-Programm die Aufgabe normal ausführen, aber dieses CGI-Programm filtert nicht die vom Benutzer in das WEB-Formular eingegebenen Informationen, wodurch Sicherheitsrisiken entstehen. Wenn Benutzer oder Personen mit Hintergedanken falsche Daten eingeben, kann dies zu Systemfehlern führen oder unzulässige Berechtigungen erlangen.
Beispielsweise füllt der Benutzer den folgenden Inhalt in den „Formularnamen“ des WEB-Formulars ein:
„ls /etc/passwd ‚[email protected] #‘
Der Inhalt von /etc/passwd wird im WEB-Browser des Benutzers angezeigt. Wenn die passwd-Datei dieses UNIX-Systems keinen Schatten hat, kann der Benutzer diesen Inhalt verwenden, um zu versuchen, das Passwort mit Crack Jack oder Crack John zu knacken.
Wie bereits erwähnt, liegt die Verantwortung für CGI-Sicherheit sowohl bei Programmierern als auch bei Systemadministratoren. Jetzt werde ich über Dinge sprechen, auf die beide achten sollten:
Aufgabe des Systemadministrators:
1. Arbeiten Sie mit Programmierern zusammen, um Informationen zur Serversicherheit auszutauschen, gleichzeitig die Codes der anderen zu überprüfen und Sicherheitsprobleme im Code rechtzeitig zu erkennen.
2. Verwenden Sie eine gute Serversoftware und besuchen Sie häufig die WEB-Site der Serversoftware, um die neuesten Informationen zu erhalten.
3. Beschränken Sie Serverbenutzer auf bestimmte Netzwerkhosts, verwenden Sie die Sicherheitsverwaltungsfunktion des Servers, legen Sie die Routing-Zugriffskontrolle fest usw.
4. Beschränken Sie die CGI-Funktionen, beschränken Sie einige erweiterte Dienste auf vertrauenswürdige Benutzer, beschränken Sie die Verwendung getesteter CGI-Programme auf Entwickler und stellen Sie Benutzern nur getestete CGI-Programme zur Verfügung.
5. Überprüfen Sie den Code sorgfältig, wenn Sie CGI-Programme anderer Personen verwenden.
6. Beschränken Sie die Nutzung von CGI-Programmen auf eine geschützte Umgebung, stellen Sie den Server auf nicht privilegierten Benutzerzugriff ein und richten Sie ein laufendes Konto oder eine Gruppe speziell für CGI-Programme ein.
7. Richten Sie den Server, auf dem das CGI-Programm ausgeführt wird, außerhalb der Firewall ein. Es ist zu beachten, dass der Server, auf dem das CGI-Programm ausgeführt wird, außerhalb der Firewall eingerichtet werden muss, sobald illegale Benutzer die Sicherheitslücke erkennen Mit dem CGI-Programmserver können Sie alle Hosts innerhalb der Firewall steuern!
8. Reduzieren Sie die Ausführungspriorität von CGI-Programmen, um zu verhindern, dass Benutzer in böswilliger Absicht eine große Anzahl von CGI-Programmen ausführen, was zu einer Serverüberlastung führt.
9. Abonnieren Sie E-Mails zum Thema Netzwerksicherheit und nehmen Sie an Newsgruppen zur Netzwerksicherheit teil.
Jobs als CGI-Programmierer:
1. Arbeiten Sie mit dem Systemadministrator zusammen, um die Sicherheitsinformationen des Systems zu verstehen und die Codes der anderen zu überprüfen.
2. Verwenden Sie zuverlässige Bibliotheksprogramme und überprüfen Sie den Quellcode der Bibliotheksprogramme.
3. Erhalten Sie den Clientnamen von REMOTE_HOST und beschränken Sie einige erweiterte Funktionen auf vertrauenswürdige Clients.
4. Wenn der WEB-Server eine HTTP-Passwortbestätigung bereitstellt, verwenden Sie das HTTP-Passwort, um den Zugriff einzuschränken.
5. Filtern Sie Benutzereingaben und entfernen Sie illegale Eingabedaten.
6. Begrenzen Sie die Größe der Eingabedaten, um zu verhindern, dass böswillige Benutzer den Server durch die Eingabe großer Datenmengen überlasten.
7. Vermeiden Sie die Weitergabe von Benutzerdaten an andere Anwendungen, um zu verhindern, dass Benutzer den Befehlsinterpreter aufrufen oder Sicherheitslücken in anderen Anwendungen ausnutzen.
8. Wenn Sie eine Schwachstelle in einem CGI-Programm entdecken, erzählen Sie es niemandem, geschweige denn hinterlassen Sie Kommentare im Programm. Sie sollten die Schwachstelle sofort beheben.
9. Lernen Sie, ein Angreifer zu sein und die Sicherheitslücken von CGI-Programmen herauszufinden.