open_basedir Verständnisfrage

Apache, Lighttpd, nginx, Cherokee
hotzi
Posts: 197
Joined: 2004-04-14 09:04
Location: Bayern, Sulzemoos

open_basedir Verständnisfrage

Post by hotzi » 2007-04-22 14:01

Hallo,

wenn ich hier:

http://www.php.net/manual/en/features.s ... en-basedir

richtig lese, sollte es da ja so sein, dass ein script, welche zum Beispiel ein exec ausführen mag, sich das Ziel des exec im OpenBaseDir befinden muss.

Beispiel:

Code: Select all

open_basedir	/var/www/web63/html/
PHP-Script:

Code: Select all

 $var2 = shell_exec ('cat /etc/passwd');
 echo $var2;
Dieses exec wird bei mir ausgeführt, dabei liegt cat nicht im open_basedir.

Die Hilfe schreibt:
Limit the files that can be opened by PHP to the specified directory-tree, including the file itself. This directive is NOT affected by whether Safe Mode is turned On or Off.
When a script tries to open a file with, for example, fopen() or gzopen(), the location of the file is checked. When the file is outside the specified directory-tree, PHP will refuse to open it. All symbolic links are resolved, so it's not possible to avoid this restriction with a symlink.
Ich verstehe wohl was falsch? Und wie kann ich das Ausführen solcher Files auf einen bestimmten Files verhindern?

Das Komische: Gallery sagt, es könne Dinge wie "convert" nicht finden, wenn das base_dir nicht stimmt.

PS: Dieser Test wurde mit safe_mode off gemacht, daher kann ich exec_dir nicht setzen.

Danke und Gruß

Andre

dtdesign
Posts: 391
Joined: 2006-09-05 21:12
Location: Berlin

Re: open_basedir Verständnisfrage

Post by dtdesign » 2007-04-22 14:57

Ist doch klar warum das geht. Verbiete doch via disabled_functions in der php.ini die exec Befehle, da diese für gewöhnlich böse sind ;)

PHP kann nicht überprüfen, ob ein Pfad innerhalb eines exec erlaubt ist, da du hierbei auf die Shell zugreifst.

Gruß
dtdesign

Roger Wilco
Administrator
Administrator
Posts: 5924
Joined: 2004-05-23 12:53

Re: open_basedir Verständnisfrage

Post by Roger Wilco » 2007-04-22 14:57

Hotzi wrote:

Code: Select all

 $var2 = shell_exec ('cat /etc/passwd');
 echo $var2;
Dieses exec wird bei mir ausgeführt, dabei liegt cat nicht im open_basedir.
PHP öffnet die Datei nicht selbst. Daher geht es auch, wenn das Binary nicht in einem Verzeichnis liegt, das in open_basedir nicht aufgelistet ist. Die open_basedir Restriktionen greifen nur bei Funktionen, in welchen der PHP-Interpreter selbst die Datei öffnen muss (fopen, file etc.).
Hotzi wrote:Ich verstehe wohl was falsch? Und wie kann ich das Ausführen solcher Files auf einen bestimmten Files verhindern?
safe_mode_exec_dir oder mit einer entsprechenden Webserverkonfiguration (SuExec, CGIWrap, SuPHP) und dem Standard Permissionsystem von Linux.
Hotzi wrote:Das Komische: Gallery sagt, es könne Dinge wie "convert" nicht finden, wenn das base_dir nicht stimmt.
Gallery und ähnliche Skripte überprüfen, ob fopen() auf das Binary einen Fehler liefert. Da fopen von den open_basedir Restrictions betroffen ist, liefert das natürlich einen Fehler, obwohl die Datei ausgeführt werden könnte.

hotzi
Posts: 197
Joined: 2004-04-14 09:04
Location: Bayern, Sulzemoos

Re: open_basedir Verständnisfrage

Post by hotzi » 2007-04-22 15:10

Ich teste auf suphp, aber ls, cat und so kann ka normal jeder aufrufen.

Roger Wilco
Administrator
Administrator
Posts: 5924
Joined: 2004-05-23 12:53

Re: open_basedir Verständnisfrage

Post by Roger Wilco » 2007-04-22 15:13

Hotzi wrote:Ich teste auf suphp, aber ls, cat und so kann ka normal jeder aufrufen.
Das kannst du mit chown/chmod ändern.

hotzi
Posts: 197
Joined: 2004-04-14 09:04
Location: Bayern, Sulzemoos

Re: open_basedir Verständnisfrage

Post by hotzi » 2007-04-22 15:28

Schon klar, aber ich such immer zuerst den Weg, den man am einfachsten gehen kann.

dtdesign
Posts: 391
Joined: 2006-09-05 21:12
Location: Berlin

Re: open_basedir Verständnisfrage

Post by dtdesign » 2007-04-22 15:44

Und der lautet:

exec/shell_exec in der php.ini verbieten. Schauen ob alle Skripte funktionieren und wenn ja, glücklich sein ;)

hotzi
Posts: 197
Joined: 2004-04-14 09:04
Location: Bayern, Sulzemoos

Re: open_basedir Verständnisfrage

Post by hotzi » 2007-04-22 15:47

Gallery geht dann nicht, imagemagick usw...

rootsvr
Posts: 538
Joined: 2005-09-02 11:12

Re: open_basedir Verständnisfrage

Post by rootsvr » 2007-04-22 20:57

Gllery funktioniert wunderbar mit der eingebauten Lib GD

hotzi
Posts: 197
Joined: 2004-04-14 09:04
Location: Bayern, Sulzemoos

Re: open_basedir Verständnisfrage

Post by hotzi » 2007-04-22 21:06

Gallery2 vielleicht, G1 kann kein GD, zum Glück übrigens, denn GD ist lahm und qualitativ...

duergner
Posts: 923
Joined: 2003-08-20 11:30
Location: Pittsburgh, PA, USA

Re: open_basedir Verständnisfrage

Post by duergner » 2007-04-23 10:07

Dann musst du wohl mit dem leider auch nicht viel sicheren safe_mode und entsprechend gesetztem safe_mode_exec_dir arbeiten. PHP ist halt leider aus Sicht der Sicherheit ein Horror.