Re: Frage zu Sicherheit public_html und php
On Thu, May 01, 2003 at 09:17:44PM +0200, Stephan Dietl wrote:
> Michael Hilscher <macvampi@michael-hilscher.de> schrieb:
> > Ich weiss nicht recht. Die Syntax für safe_mode sieht bei mir anders
> > aus. Allerdings hast Du ja geschrieben, dass Dir open_basedir Probleme
> > bereitet. Nun verstehe ich allerdings nicht _was_ nicht funktioniert.
>
> Das Problem ist ja, daß das Skript des User funktioniert obwohl es das
> nicht sollte. Es macht ein ls -l unter /var/www, dann ändert er es auf
> ein interessantes Verzeichnis das der Apache lesen kann, dann macht er
> sein system("cat INTERESSANTE_DATEI") und liest Daten aus wie die
> config.php des Webforums das läuft ( http://fud.prohost.org ), wo das
> MySQL-Passwort des Forums drinsteht, etc....
>
> Bei der Einstellung:
>
> <VirtualHost XXX.XXX.XXX.XXX>
> ServerName SERVER/members/USER
> ServerAlias SERVER/members/USER
> DocumentRoot /var/www/members/USER
> User USER
> Group USER
> php_admin_flag safe_mode on
> php_admin_value open_basedir /var/www/members/USER
> </VirtualHost>
Mit User und Group innerhalb von VirtualHost aktivierst Du SuEXEC in
Apache 1.3.x. ServerName und ServerAlias verweisen auf den /die Domainnamen -
anstelle der IP kannst Du auch mit einem Wildcard arbeiten (zumindest
bei Namensbasierten VirtualHosts).
> geht das Skript immer noch:
>
> <?php
>
> echo "You have been 0wnzd";
>
> system("ls /var/www/ -l");
>
> system("cat /var/www/.....");
>
> ?>
System und Exec Befehle werden mit dem safe_mode geblockt. Für
interne Filebefehle von PHP wird OpenBasedir verwendet ...
> Füge ich dem Virtuel Host ein <Directory> mit /var/www/members/* hinzu
> mit open_basedir auch auf /var/www/members/* (ein genauer Pfad wie
> /var/www/members/USER ändert nichts ?!) und safe_mode on, dann geht das
> Skript nicht mehr ABER auch nichts das nur unterhalb des Verzeichnisses
> arbeiten würde bzw. ein <?phpinfo?> oder ein <?php echo "test"; ?>
Versuche es mal so:
<VirtualHost *>
ServerName username.domain.de
DocumentRoot /var/www/members/USER
php_admin_flag safe_mode on
php_admin_value open_basedir /var/www/members/USER
</VirtualHost>
Natürlich muss der DNS so konfiguriert sein, das die subdomain
username.domain.de mit der IP des Servers aufgelöst werden kann. In der
Bind Konfig kannst Du ebenfalls mit Wildcards arbeiten - es muss hier
also nicht jede Subdomain zusätzlich eingetragen werden.
> > Du kannst mit dem minni PHP Script:
> > --- cut ---
> > <?php
> > echo phpinfo ();
> > ?>
> > --- /cut ---
> > überprüfen, welche Einstellungen für den Ort in dem das PHP Script
> > ausgeführt wurde gelten.
>
> open_basedir no value no value
> safe_mode Off Off
>
> Er übernimmt die Einstellungen also nicht....aber warum?
Ich vermute, dass der Apache den VirtualHost als fehlerhaft konfiguriert
ansieht und den Abschnitt überspringt. Wirf einen Blick ins Logfile.
greetinXs,
Michael Hilscher
--
Would Mozart have been more productive if he had scribes to help him, a
secretary and a CEO to lead his way? -- Linus Torvalds
Reply to: