Hu3sky's blog

.user.ini后门

Word count: 506 / Reading time: 2 min
2019/08/21 Share

这个点在SUCTF中出现了,之前没见过,于是来学习一下

原题CheckIn做法,上传一个.user.ini文件,因为在黑名单之外,接着用.user.ini去包含这个gif,即可getshell,因为不能出现<? 所以用<script language="php"></script>

https://xz.aliyun.com/t/6042#toc-25

什么是.user.ini

除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录

和php.ini不同的是,.user.ini是一个能被动态加载的ini文件。也就是说我修改了.user.ini后,不需要重启服务器中间件,只需要等待user_ini.cache_ttl所设置的时间(默认为300秒),即可被重新加载

.user.ini实际上就是一个可以由用户“自定义”的php.ini,我们能够自定义的设置是模式为“PHP_INI_PERDIR 、 PHP_INI_USER”的设置。
而且,和php.ini不同的是,.user.ini是一个能被动态加载的ini文件。也就是说我修改了.user.ini后,不需要重启服务器中间件,只需要等待user_ini.cache_ttl所设置的时间(默认为300秒),即可被重新加载

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

1
auto_prepend_file=1.gif

demo

几个文件
image

1.gif:

1
GIF89a <?php phpinfo(); ?>

test.php:

1
2
<?php
echo "hello world";

.user.ini:

1
auto_prepend_file=1.gif

结果
image

如果写相对路径就会打不开1.gif文件,
image

所以还是建议改为绝对路径
image

.user.ini

1
auto_prepend_file=/Applications/MxSrvs/www/test/1.gif

image

1.php
image

Referer

CATALOG
  1. 1. 什么是.user.ini
  2. 2. demo
  3. 3. Referer