user.ini文件构成的PHP后门

在suctf2019第一次遇到,这里学习记录一下

前言

在suctf2019一道上传的题目中第一次遇到,也学习掌握了新姿势,这里记录一下

.user.ini

我们先看下php官方手册对.user.ini对说明

也就是说我们可以在.user.ini中设置php.iniPHP_INI_PERDIRPHP_INI_USER 模式的 INI 设置,而且只要是在使用 CGI/FastCGI 模式的服务器上都可以使用.user.ini

这里我们发现了两个有趣的设置:auto_prepend_fileauto_append_file

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

1
auto_prepend_file=1.gif

1.gif是要包含的文件。

所以,我们可以借助.user.ini轻松让所有php文件都“自动”包含某个文件,而这个文件可以是一个正常php文件,也可以是一个包含一句话的webshell。

这两个设置的区别只是在于auto_prepend_file是在文件前插入;auto_append_file在文件最后插入(当文件调用的有exit()时该设置无效)

在实战中的利用

综上所述.user.ini的利用条件如下:

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

从这来看.user.ini要比.htaccess的应用范围要广一些,毕竟.htaccess只能用于Apache

但仔细推敲我们就会感到上传目录下要有可执行的php文件这个要求在文件上传中也比较苛刻,应该没有开发者会把上传文件放在主目录或者把php文件放在上传文件夹。如果都能成功上传php文件并且执行,那为何还要上传.user.ini

不过把.user.ini利用在隐藏后门上应该是个很好的利用方法,我们在存在php文件的目录下留下.user.ini和我们的图片马或者一些看似正常php文件(其实是后门,来避开本地的一些防护软件或者安全人员的审计),这样就达到了隐藏后门的目的。

Reference

  1. 从SUCTF 2019 CheckIn 浅谈.user.ini的利用
  2. p牛的user.ini文件构成的PHP后门)

本文标题:user.ini文件构成的PHP后门

文章作者:xianyu123

发布时间:2019年08月29日 - 14:09

最后更新:2019年08月29日 - 14:59

原始链接:http://0clickjacking0.github.io/2019/08/29/user-ini文件构成的PHP后门/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------    本文结束  感谢您的阅读    -------------