bypass open_basedir 简约方法
一、open_basedir的配置
解锁: chattr -i .user.ini 加锁: chattr +i .user.ini
.user.ini配置
open_basedir=/项目路径/:/tmp/:/proc/ 例: open_basedir=/www/aaa/:/tmp/:/proc/
二、突破配置
在二级目录新建一个文件 例如aa/.user.ini 内容如下:
open_basedir=/
一定得访问一下aa目录下的php文件。然后才能生效
然后访问aa/aa.php
三、思考为什么能bypass open_basedir
这个首先是一个fastcgi 的机制导致的。因为可以重复注册 open_basedir 导致的一个任意子目录下面都能引用这个配置。
四、解决这个问题
在fastcgi 配置中添加如下的配置
fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/"
里面的一个具体原理。可以看看一下源码。这里就不多做阐述