搜索
查看: 5143|回复: 0

你是否只知道htaccess但是不知道.user.ini

[复制链接]

17

主题

0

回帖

38

积分

新手开车

积分
38
发表于 2022-7-13 13:38:11 | 显示全部楼层 |阅读模式 来自 北京



你是否只知道htaccess但是不知道.user.ini

回到家,iPad开机,打开大佬的文章,开卷。每当触碰到我的知识盲区,我就想研究一番



相信很多人都知道.htaccess,简单理解就是它能影响当前目录以及子目录的配置,它存放着Apache服务器配置相关的一些指令,我们经常利用它令Apache将图片格式的webshell当做脚本文件解析,达到绕过文件上传限制的目的。

       

微信公众号:小惜渗透,欢迎大佬一起交流进步


1.   .user.ini简介

接下来我们来了解一下.user.ini,.user.ini是php的一种配置文件,众所周知php.ini是php的配置文件,它可以做到显示报错,导入扩展,文件解析,web站点路径等等设置


去官方看一下简介[color=var(--a-color)]https://www.php.net/manual/zh/configuration.file.per-user.php



从官方的简介中提取以下内容:

  • 首先此类文件必须在CGI或者FastCGI模式下才有效



还有一句话是在.user.ini风格的INI文件中只有具有PHP_INI_PERDIR和PHP_INI_USER模式的INI设置可被识别。

  • 这句话的意思就是你不能利用.user.ini来更改所有php.ini里面的配置只能更改具有PHP_INI_PERDIR和PHP_INI_USER模式的配置


什么是PHP_INI_PERDIR和PHP_INI_USER呢?

  • PHP_INI_USER:可在用户脚本(例如 ini_set())或 Windows 注册表(自 PHP 5.3 起)以及 .user.ini 中设定
  • PHP_INI_PERDIR:可在 php.ini,.htaccess 或 httpd.conf中设定



具体它们能修改什么配置看官方的这个表一目了然

[color=var(--a-color)]https://www.php.net/manual/zh/ini.list.php




遍历相关配置,发现有两个我们可以利用,并且还符合模式条件,auto_prepend_fileauto_append_file


它们的功能就是说白了就是文件包含,不过一个插入到文件最前,一个是插入到最后,这样的话如果我们准备一png格式的webshell,利用这种方式就可以将文件包含到一个php脚本文件里,目的就达到了。







2. 利用演示

这里用一到ctf举例[SUCTF 2019]CheckIn1



上来一个文件上传,尝试传文件


后缀名不行,先改成jpg试试


不让包含<?,这个没关系可以用<script language='php'></scirpt>来绕过


成功绕过,但是出现exif_imagetype,看来后端用了这exif_imagetype,这个我们可以加上图片内容头绕过


可以看到文件里面存在一个index.php,摆明了让我们利用文件包含呢,紧接着我们上传.user.ini文件, 用auto_prepend_file指明包含文件shell.jpg,由于exif_imagetype函数的限制,所以再上传.user.ini的时候也得加上图片内容头


上传成功后访问/uploads/c47b21fcf8f0bc8b3920541abd8024fd路径下的index.php,就获取到了flag


总结一下,这个在实战中遇到的也少,但是还是有几率碰到的,所以当扩充知识面了。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表