Re: open_basedir bypass
| From: | Ángel González | Date: | Tue, 27 Sep 2011 22:16:22 +0000 |
| Subject: | Re: open_basedir bypass | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-55638@lists.php.net to get a copy of this message | ||
Reindl Harald wrote:
below a correct open_basedir restriction but why can fopen() create this file outside the basedir and after that the restriction is active? this means in other words: fopen() can empty files outside the basedir if their permissions are open enough Sep 27 10:53:26 open_basedir restriction in effect. File(/tmp/rhcsvz8QeBL) is not within the allowed path(s): (/etc/httpd/conf/panel:/Volumes/dune/www-servers/phpincludes:/usr/share/pear) Sep 27 10:53:26 PHP Warning: fopen(/tmp/rhcsvz8QeBL): failed to open stream: Operation not permitted in /Volumes/dune/www-servers/phpincludes/global_rh_csv.inc.php on line 2 [root@arrakis:~]$ stat /tmp/rhcsvz8QeBL File: „/tmp/rhcsvz8QeBL“ Are you sure it is the fopen() what is making it?I think that some other function/extension may be creating the temporary file /tmp/rhcsvz8QeBL for you to open, which then fails due to the open_basedir. What version are you running ? Can you try to isolate the problem? A simple test like: <?php ini_set('open_basedir', '/var/tmp/'); $f = fopen("/tmp/foo.txt", "w"); Does *not* create such file. It is possible to create a file there with*tmpfile(), but just because that's the default location for temporary files. You can't change the folder from a malicious script, and the files are removed at the end of the script, so it is arguable as a basedir bypass. * Can you create a testcase that leaks such file?