Hi, Am Sonntag, 7. April 2002 14:37 schrieb Ratti:
Bernhard Walle:
`whoami` oder `/usr/bin/whoami`
[...]
Falsch ist, daß perl sich weigert einen Befehl auszuführen, für den es eigentlich keine Restriktion gibt, weil er noch eigene obendrauf setzt.
Falsch ist das mit sicherheit nicht! Eher ein Feature.
Will sagen: Wenn su httpd whoami
funktioniert, dann hat #!/usr/bin/perl `whoami`
Wenn Du etwas von der Konsole ausführst ist das nicht so, als wenn CGI etwas ausführen. Die kennen normalerweise nur Ihr htdocs, das soll sein. Oder sehe ich das falsch?
Da ist für mich irgendwann Schluß, das ist keine Security mehr, das ist Paranoia. Das Script gehört root, das muss als Sciherheitseinschränung
Also bei Dir läuft Dein Webserver als root ? Ein Webserver steht normal im Internet und _da_ ist Sicherheit wichtig!
CGI-Scripte werden nicht im Browser ausgeführt, sondern durch ein Modul des Webservers.
Ist richtig, über den Browser kann man Sie aufrufen.
Wenn ich als Verwalter: - vorsätzlich suidperl installiert habe - mit den dazu nötigen Rechten das Script root:root übereignet habe - suid gesetzt habe (Was alles nicht trivial ist, sprich: Von normalen Usern durchführbar), dann langt das. Da hat der Befehlsinterpreter nicht noch irgendwelche Überprüfungen am Code vorzunehmen, was letztlich dazu führt, daß ich Zeit im Netz verbringen muß, um herauszufinden, wie man das jetzt wieder abschaltet.
Das ist Dein Problem, nicht das von Perl. Nimm doch einfach die BASH für Deine CGI's Programme:)
Siehe oben: Ich greife auf Befehle zu, die in der Bash funktionieren, und Perl baut mir wieder "Wenn" und "Aber" davor.
s.o Bash != PerlCGI Wenn folgendes Skript auf der Konsole läuft, muß bei meinem Perl nicht der kpl. Pfad angegeben werden. ( ohne -T ). #!/usr/local/bin/perl -w $out = `ls` print $out; Der Taint Modus ist also auch nicht explicit an!
Ist es so schwer, den $PATH zu setzen? Aber hier ging es nicht um eigene Skripte, die mal zum testen da sind sondern um Skripte, die im Web veröffentlicht werden und auf die _jeder_ zugreifen kann! Für ein Testskript, das ich eh in 2 min wieder lösche, würde ich -T auch weglassen.
Es ist technisch gesehen einfach unnötig, $PATH zu setzen, wenn ich `/usr/bin/whoami` aufrufe. Der Pfad wird dafür überhaupt nicht benötigt.
Das ist ja richtig, aber unsicher. Außerdem soll man grundsätzlich absolute Pfade in seinen Skripten angeben (wenn man im System arbeitet jedenfalls, bei CGI nimmt man oft auch relative Pfade) Bei PHP z.B. ist das ähnlich. Wenn Du das willst mußt auch die php.ini abändern und freischalten das Du außerhalb Deines htdocs etwas ausführen willst.
Wenn es nur das wäre. Aber ich sehe ja, wie lang "man perlsec" ist und was da alles drin auftaucht... Meiner Meinung nach sollte das System damit zufrieden geben, Dinge auszuführen, die root freigeschaltet hat. Ich werde schon wissen, warum. Wenn ich sehe, daß apache z.B. nicht als root gestartet werden kann, weil die Programmierer das bewusst abgefangen haben, dann werde ich sauer.
Warum installierst Du keinen M$ Webserver? Das ist kommerz Software, da kannst Du anschliessend beschweren. SCNR Ciao Andre