CGI-Scripte

Apache, Lighttpd, nginx, Cherokee
Post Reply
hannes
Posts: 38
Joined: 2002-05-23 18:14
 

CGI-Scripte

Post by hannes »

Ich habe da ein kleines Problem, das vermutlich hier schon einige Male diskutiert wurde...Leider bin ich nur zu blind um eine Lösung via Search zu finden :-(

Und zwar handelt es sich um folgendes:
Ich kann bei mir via CGI-Script auf z.B. Logfiles (/var/log) oder auch auf das /etc Verzeichnis zugreifen (bei beiden: readonly). Kann man diesen Zugriff irgendwie unterbinden? Ahja...suexec ist bereits im Einsatz und funktioniert auch 100%ig.
Spontan würde mir nur Einfallen die Verzeichnis Rechte bei allen zu ändern oder den Apache chrooted laufen zu lassen. Gäbe es da vielleicht eine elegantere Möglichkeit? Z.B. eine Art zweiten Suexec Check, von dem jeweils auch die Files überprüft werden, auf die zugegriffen werden soll z.B. mit cat (exec Command)?!?

Vielen Dank für eure Hilfe im Vorraus ;-)
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: CGI-Scripte

Post by captaincrunch »

Ich verschiebe mal ins Webserver-Forum, da wird's wohl mehr Ideen dazu geben ...
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe
Contact:
 

Re: CGI-Scripte

Post by dodolin »

Ah, wenn sich da noch keiner zu geäussert hat, dann will ich mal. Vermute, das liegt dran, dass du schon alles bereits korrekt erkannt hast.

Das ist völlig normal, dass man mit CGI-Skripten auf alles lesend zugreifen kann. Mit suEXEC werden die Skripten ja unter der UID eines lokalen Nutzers ausgeführt. Das CGI hat also genau die Rechte, die der User auch hat. Somit ist das kein Sicherheitsrisiko, denn der User könnte ja so oder so auf die Dateien zugreifen.

Ebenso hattest du bereits die 2 möglichen Lösungswege erkennt. Mehr würden mir auf Anhieb auch nicht einfallen. Einen wie von dir genannten Check in suEXEC einzubauen wird nicht oder nur sehr schwierig möglich sein, da suEXEC nur vor der Ausführung von CGIs zum Zuge kommt. Es kann vom Prinzip her nicht CGIs während der Ausführung überwachen. Aber man könnte eventuell ein chroot für die CGIs in suEXEC einbauen. Dazu sollte man aber mindestens die gesamte Doku von suEXEC lesen und auch die Warnhinweise bezüglich Modifikationen von suEXEC lesen und beachten.
hannes
Posts: 38
Joined: 2002-05-23 18:14
 

Re: CGI-Scripte

Post by hannes »

Danke für deine Antwort Dodolin ;-)

Eine Sache bleibt jedoch noch offen: Wie machen es wohl die großen Webhoster ala Schlund etc. ? Hat da vielleicht jemand eine Ahnung bzw. eine Vermutung?
[nix]pepe
Userprojekt
Userprojekt
Posts: 244
Joined: 2003-04-08 19:36
 

Re: CGI-Scripte

Post by [nix]pepe »

mmmh, des hat mich jetzt auch schonmal weiter gebracht *auchbedank* :)

aber eine frage hab ich noch :D
hab irgendwo gelesen, das man mit dem script ausgeben kann, unter welcher uid und gid es läuft, könnt ihr mir vielleicht sagen wie das geht ??

MfG
Pepe
dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe
Contact:
 

Re: CGI-Scripte

Post by dodolin »

Eine Sache bleibt jedoch noch offen: Wie machen es wohl die großen Webhoster ala Schlund etc. ? Hat da vielleicht jemand eine Ahnung bzw. eine Vermutung?
Ich hatte bisher noch kein Paket mit CGIs und bald habe ich nen eigenen Rooty, dann brauche ich es auch nicht mehr. ;) Habe keine Ahnung... Kann man denn bei denen nicht auf alles zugreifen, was man so "normalerweise" sehen könnte? Wenn nein, welche Fehlermeldung tritt auf, etc.?
hab irgendwo gelesen, das man mit dem script ausgeben kann, unter welcher uid und gid es läuft, könnt ihr mir vielleicht sagen wie das geht ??
Welche Sprache? Naja egal, exec sollten alle irgendwie können...

Code: Select all

man whoami
WHOAMI(1)                        User Commands                       WHOAMI(1)

NAME
       whoami - print effective userid
[...]
[nix]pepe
Userprojekt
Userprojekt
Posts: 244
Joined: 2003-04-08 19:36
 

Re: CGI-Scripte

Post by [nix]pepe »

also bei perl müsst ich praktisch einfach nur machen:

Code: Select all

#!/usr/bin/perl

print system("whoami");
oder seh ich das jetzt falsch....

zu Puretec und Strato... bei denen is das so geregelt, du kannst praktisch (wenn du dir z.B. nen php browser gebastelt hast, ich kann dir meinen schicken, wenn du willst) durch das komplette system surfen und den ganzen aufbau begutachen ;)

du kommst alledings nicht in die Ordner von anderen Kunden, und man kann leider auch nicht in wichtige system kompunenten einblicken... also z.B. passwd, oder httpd.conf (die hab ich zumindest nicht gefunden...) dafür aber eine list mit allen domsains die auf dem server waren und die Frontpage extensions hatten ^^
Man kriegt aber schon recht viel raus, z.B. das Strato sendmail benutz, warum auch immer ^^

MfG
Pepe
Post Reply