0x00 背景
这个估计很多同学看了不屑,认为是烂大街的东西了:
.htaccess文件构成的php后门
那么我来个新的吧:.user.ini。它比.htaccess用的更广,不管是nginx/apache/iis,只要是以fastcgi运行的php都可以用这个方法。我的nginx服务器全部是fpm/fastcgi,我的iis php5.3以上的全部用的fastcgi/cgi,我win下的apache上也用的fcgi,可谓很广,不像.htaccess有局限性。
0x01 .user.ini
那么什么是.user.ini?
这得从php.ini说起了。php.ini是php默认的配置文件,其中包括了很多php的配置,这些配置中,又分为几种:php_ini_system、php_ini_perdir、php_ini_all、php_ini_user。 在此可以查看:http://php.net/manual/zh/ini.list.php 这几种模式有什么区别?看看官方的解释:
enter image description here
其中就提到了,模式为php_ini_user的配置项,可以在ini_set()函数中设置、注册表中设置,再就是.user.ini中设置。 这里就提到了.user.ini,那么这是个什么配置文件?那么官方文档在这里又解释了:
除了主 php.ini 之外,php 还会在每个目录下扫描 ini 文件,从被执行的 php 文件所在目录开始一直上升到 web 根目录($_server['document_root'] 所指定的)。如果被执行的 php 文件在 web 根目录之外,则只扫描该目录。
在 .user.ini 风格的 ini 文件中只有具有 php_ini_perdir 和 php_ini_user 模式的 ini 设置可被识别。
这里就很清楚了,.user.ini实际上就是一个可以由用户“自定义”的php.ini,我们能够自定义的设置是模式为“php_ini_perdir 、 php_ini_user”的设置。(上面表格中没有提到的php_ini_perdir也可以在.user.ini中设置)
实际上,除了php_ini_system以外的模式(包括php_ini_all)都是可以通过.user.ini来设置的。
而且,和php.ini不同的是,.user.ini是一个能被动态加载的ini文件。也就是说我修改了.user.ini后,不需要重启服务器中间件,只需要等待user_ini.cache_ttl所设置的时间(默认为300秒),即可被重新加载。
然后我们看到php.ini中的配置项,可惜我沮丧地发现,只要稍微敏感的配置项,都是php_ini_system模式的(甚至是php.ini only的),包括disable_functions、extension_dir、enable_dl等。 不过,我们可以很容易地借助.user.ini文件来构造一个“后门”。
php配置项中有两个比较有意思的项(下图第一、四个):
enter image description here
auto_append_file、auto_prepend_file,点开看看什么意思:
enter image description here
指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数。而auto_append_file类似,只是在文件后面包含。 使用方法很简单,直接写在.user.ini中:
auto_prepend_file=01.gif
01.gif是要包含的文件。
所以,我们可以借助.user.ini轻松让所有php文件都“自动”包含某个文件,而这个文件可以是一个正常php文件,也可以是一个包含一句话的webshell。
测试一下,我分别在iis6.0+fastcgi+php5.3和nginx+fpm+php5.3上测试。 目录下有.user.ini,和包含webshell的01.gif,和正常php文件echo.php:
enter image description here
enter image description here
访问echo.php即可看到后门:
enter image description here
nginx下同样:
enter image description here
enter image description here
那么,我们可以猥琐地想一下,在哪些情况下可以用到这个姿势? 比如,某网站限制不允许上传.php文件,你便可以上传一个.user.ini,再上传一个图片马,包含起来进行getshell。不过前提是含有.user.ini的文件夹下需要有正常的php文件,否则也不能包含了。 再比如,你只是想隐藏个后门,这个方式是最方便的。
0
0
相关文章
如何在JavaScript中动态获取循环生成的音频元素索引值
php创建文件含数组怎么转存_php数组转存创文件法【技巧】
php后端是什么意思_PHP后端的概念定义与核心作用
PHP 中解析带 @ 符号的 Header 字符串并提取键值对
Azure B2C 与 PHP 应用(Slim 框架)的完整集成指南
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。
25
2026.01.29
clawdbot龙虾机器人官网入口:https://clawd.bot/,clawdbot ai是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。
16
2026.01.29
本专题系统讲解 Golang 在网络安全与加密技术中的应用,包括对称加密与非对称加密(AES、RSA)、哈希与数字签名、JWT身份认证、SSL/TLS 安全通信、常见网络攻击防范(如SQL注入、XSS、CSRF)及其防护措施。通过实战案例,帮助学习者掌握 如何使用 Go 语言保障网络通信的安全性,保护用户数据与隐私。
8
2026.01.29
2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。
622
2026.01.28
热门下载
精品课程
最新文章







