Hallo leute,
mir ist letztens ein (perl)script in die haende gefallen, welches mich als serverbesitzer schon ziemlich aufschreckte: Mit diesem Script (es nennt sich cgicommand.pl) kann man im grunde alle befehle, die man auf der kommandozeile ausfuehren kann auch ausfuehren und man bekommt die ausgabe geliefert. Somit koennen sich user, die zwar vom ftp-server her nur ne chroot-umgebung haben und sich auch nicht per telnet einloggen koennen, jedoch cgi-access haben, alle moeglichen dateien vom server ziehen, sogar passwordfiles und andere geheime sachen.
Was kann ich dagegen machen?
Falls es jemanden interessiert, das script koennt ihr ja hier mal ausprobieren (ist nich auf meinem server):
http://balder.prohosting.com/~desertin/cgi-bin/cgicommand.pl
einfach kein passwort eingeben und los geht´s
ciao, dominic
-------------------------------------------------------- --> webmaster@simonandgarfunkel.de --> ICQ #71510820 --> http://www.simonandgarfunkel.de --> http://www.FreshMidis.Net ______________________________________________________________________________ Die Fachpresse ist sich einig: WEB.DE 15mal Testsieger! Kostenlos E-Mail, Fax, SMS, Verschlüsselung, POP3, WAP....testen Sie uns! http://freemail.web.de
Dominic Neumann (dominicc@web.de) wrote:
DN> mir ist letztens ein (perl)script in die haende gefallen, welches DN> mich als serverbesitzer schon ziemlich aufschreckte: DN> Mit diesem Script (es nennt sich cgicommand.pl) kann man im grunde DN> alle befehle, die man auf der kommandozeile ausfuehren kann auch DN> ausfuehren und man bekommt die ausgabe geliefert.
---schnipp--- #!/usr/bin/perl use CGI; my $q = new CGI; print "Content-Type: text/plain\n\n"; system($q->param('command')); ---schnapp---
Oder: (kürzer, aber dreckiger) ---schnipp--- #!/usr/bin/perl print "Content-Type: text/plain\n\n"; system($ENV{'QUERY_STRING'}); ---schnapp---
DN> Somit koennen sich user, die zwar vom ftp-server her nur ne DN> chroot-umgebung haben und sich auch nicht per telnet einloggen DN> koennen, jedoch cgi-access haben, alle moeglichen dateien vom server DN> ziehen, sogar passwordfiles und andere geheime sachen.
Eigentlich nicht, es sei denn, die Scripts von jedem werden als root ausgeführt. Und das will ich doch nicht hoffen ;)
DN> Was kann ich dagegen machen?
Ohne weiteres: Nichts. Wenn sie CGI machen können, können sie auch die Befehle ausführen. Du könnstest dir natürlich irgendwas basteln .. hmm .... vielleicht apache chrooten oder sowas?
Damit die User aber nicht Dateien von anderen Usern angucken können, gibts beim Apache SUExec, schau dir das mal an.
On Friday 05 January 2001 18:01, Dominic Neumann wrote:
Hallo leute,
mir ist letztens ein (perl)script in die haende gefallen, welches mich als serverbesitzer schon ziemlich aufschreckte: Mit diesem Script (es nennt sich cgicommand.pl) kann man im grunde alle befehle, die man auf der kommandozeile ausfuehren kann auch ausfuehren und man bekommt die ausgabe geliefert. Somit koennen sich user, die zwar vom ftp-server her nur ne chroot-umgebung haben und sich auch nicht per telnet einloggen koennen, jedoch cgi-access haben, alle moeglichen dateien vom server ziehen, sogar passwordfiles und andere geheime sachen.
Was kann ich dagegen machen?
Falls es jemanden interessiert, das script koennt ihr ja hier mal ausprobieren (ist nich auf meinem server):
http://balder.prohosting.com/~desertin/cgi-bin/cgicommand.pl
hmm, also im Verzeichnis eines Users... Ich als Admin würde 1. ExecCGI aus der Section für Userfiles steichen (das mit <Directory ???/public_html> und 2. den betreffenden User verwarnen.
Wenn er nicht reagiert käme so eine Mail: "ich habe über Ihr CGI gerade diesen Befehl ausgeführt: rm -rf ~" (da das Script unter seiner UID läuft löscht dieses Kommando sein gesamtes Homedirectory).
Konrad
On Fri, Jan 05, 2001 at 06:01:31PM +0100, Dominic Neumann wrote:
Hallo leute,
Somit koennen sich user, die zwar vom ftp-server her nur ne chroot-umgebung haben und sich auch nicht per telnet einloggen koennen, jedoch cgi-access haben, alle moeglichen dateien vom server ziehen, sogar passwordfiles und andere geheime sachen.
Was kann ich dagegen machen?
1. Entertaste mal zur Reparatur schicken ... 2. Keine Scripte ausführen lassen.
3. Calm down (?)
Scripte werden mit der UID des Webservers ausgeführt, der ist nichtprivelegiert. Sollte also einem ordentlich gepflegten System nicht soo viel anhaben (außer DOS u.ä. Dingen.)
Damit die Scripte vieler virtueller Server nicht durcheinander geraten, kann man SuEXEC benutzen und für jeden virtuellen Server einen eigenen Nutzer erzeugen und dann mit den Permissionen spielen -- geht, ist aber nicht ganz unaufwendig ...
Löst aber auch nicht das Grundproblem.
SuEXEC hacken und dann chroot laufen lassen ..
Best regards from Dresden/Germany Viele Gruesse aus Dresden Heiko Schlittermann
lug-dd@mailman.schlittermann.de