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

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

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

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

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

1. .user.ini简介

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

去官方看一下简介https://www.php.net/manual/zh/configuration.file.per-user.php

image-20220713105324039

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

  • 首先此类文件必须在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中设定

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

https://www.php.net/manual/zh/ini.list.php

image-20220713110748995

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

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


2. 利用演示

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

image-20220713113922966

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

image-20220713114115324

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

image-20220713114140034

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

image-20220713115123095

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

image-20220713122308885

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

image-20220713121705678

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

image-20220713132657565

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值