.user.ini配置文件在渗透中的利用
.user.ini配置⽂件在渗透中的利⽤
大一匹和1.5匹空调有什么区别前⾔:
官⽅介绍:
ABAC式的词语有哪些⾃ PHP 5.3.0 起,PHP ⽀持基于每个⽬录的 .htaccess 风格的 INI ⽂件。此类⽂件仅被 CGI/FastCGI SAPI 处理。
此功能使得 PECL 的 htscanner 扩展作废。如果使⽤ Apache,则⽤ .htaccess ⽂件有同样效果
除了主 php.ini 之外,PHP 还会在每个⽬录下扫描 INI ⽂件,从被执⾏的 PHP ⽂件所在⽬录开始⼀直上升到 web 根⽬录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执⾏的 PHP ⽂件在 web 根⽬录之外,则只扫描该⽬录。
⾸先我们知道,php.ini是php的核⼼配置⽂件,在 PHP 启动时被读取。按照如上所说,那么web⽬录的其他ini⽂件也是可以被php识别,那么我们是不是可以通过配置.user.ini⽂件重新进⾏配置的修改呢?
答案是显⽽易见的,并不能任意修改配置。
在 .user.ini 风格的 INI ⽂件中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置可被识别
综上,我们可以了解到:
1、.user.ini实际上就是⼀个可以由⽤户⾃定义的php.ini,我们能够⾃定义的设置是模式为 PHP_INI_PERDIR 或者
PHP_INI_USER的设置。实际上,除了PHP_INI_SYSTEM以外的模式(包括PHP_INI_ALL)都是可以通过.user.ini来
设置的。
2、.user.ini是⼀个能被动态加载的ini⽂件。也就是说我修改了.user.ini后,不需要重启服务器中间件,只需要等待
user_ini.cache_ttl所设置的时间(默认为300秒),即可被重新加载。
我们可以发现稍微敏感的配置项,都是PHP_INI_SYSTEM模式的(甚⾄是php.ini only的),包括disable_functions、extension_dir、enable_dl等,但是还是有可以利⽤的地⽅的
可以通过.user.ini绕过open_basedir的限制,还有其他的⼀些绕过⼿法就不多介绍了,下⾯的这篇⽂章介绍得很详细:
浅谈⼏种Bypass open_basedir的⽅法
利⽤.user.ini本地包含⽂件:
利⽤条件:open_basedir没有被限制
利⽤函数:auto_append_file、auto_prepend_file
利⽤原理:借助.user.ini轻松让所有php⽂件都“⾃动”包含某个⽂件,⽽这个⽂件可以是⼀个正常php⽂件,也可以是⼀个包含⼀句话的webshell
小学班主任工作职责auto_prepend_file 表⽰在加载第⼀个PHP代码之前先⾏预加载该配置所指⽰的PHP⽂件。
被骗的个性签名
auto_append_file 表⽰在加载第⼀个PHP代码之后执⾏预加载该配置所指⽰的PHP⽂件。
利⽤过程:
海上生明月天涯共此时的意思1、我们先构建⼀个图⽚马,并上传到服务器:
2、上传.user.ini到⽬标服务器,⽂件内容编辑为:
五一高速免费时间3、到⽬标服务器存在的任意php可正常访问的⽂件
这⾥我们以echo.php作为测试:
假设某⽹站限制不允许上传.php⽂件,但是可以上传⼀个.user.ini,再上传⼀个图⽚马,包含起来进⾏
getshell。不过前提是含有.user.ini的⽂件夹下需要有正常的php⽂件。
user.ini在实际中的应⽤很⼴,它⽐.htaccess⽤的更⼴,不管是nginx/apache/IIS,只要是以fastcgi运⾏的php都可以⽤这个⽅法
利⽤.user.ini绕过o pen_ba sedir(失败):
由于Windows使⽤phpstudy复现失败,这⾥我们搭建环境:
上传.user.ini,编辑内容如下:
open_basedir=:\
复现失败了,似乎这个思路不⾏,它会根据php.ini设置的open_basedir为主php我了解得很少,可能还有其他函数可以被利⽤的,以后发现了再说
.user.ini⽂件
神秘的.user.ini⽂件
PHP 通过.user.ini 绕过⿊名单限制

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。