Zephyr's Repository Zephyr's Repository
首页
笔记
技术
更多
收藏
关于
  • 📂 分类
  • 🏷️ 标签
  • 📅 归档

Zephyr

偷得浮生半日闲
首页
笔记
技术
更多
收藏
关于
  • 📂 分类
  • 🏷️ 标签
  • 📅 归档
  • Web

    • SQL注入
    • PHP伪协议
    • PHP反序列化
    • SSTI模板注入
    • .htaccess文件利用
    • .user.ini文件利用
      • 背景
      • .user.ini
        • 什么是.user.ini
        • autoappendfile、autoprependfile
      • 总结
    • escapeshellarg+escapeshellcmd
    • XXE漏洞原理及利用
  • 密码学

  • 技术文档

  • 资料

  • 博客搭建

  • GitHub技巧

  • 技术
  • Web
转载
2022-07-13
目录

.user.ini文件利用

# .user.ini文件利用

# 背景

  • 传统的利用.htaccess文件添加解析规则绕过仅限于apache局限性很强
  • 而.user.ini则比.htaccess用的更广,不管是nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个方法。利用面可谓很广,不像.htaccess有局限性

# .user.ini

# 什么是.user.ini

php.ini是php默认的配置文件,其中包括了很多php的配置,这些配置中,又分为几种:PHP_INI_SYSTEM、PHP_INI_PERDIR、PHP_INI_ALL、PHP_INI_USER。 在此可以查看 (opens new window)这几种模式有什么区别?官方的解释如下:

user.ini1

  • 其中就提到了,模式为PHP_INI_USER的配置项,可以在ini_set()函数中设置、注册表中设置,再就是.user.ini中设置。 这里就提到了.user.ini,那么这是个什么配置文件?那么官方文档在这里 (opens new window)又解释了:
  • 除了主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配置项中有两个比较有意思的项(下图第一、四个):

user.ini2

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

# auto_append_file、auto_prepend_file

user.ini3

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

auto_prepend_file=hackcode.gif
1
  • hackcode.gif是要包含的文件
  • 所以,我们可以借助.user.ini轻松让所有php文件都“自动”包含某个文件,而这个文件可以是一个正常php文件,也可以是一个包含一句话的webshell
  • 限制:需要在.user.ini同级目录下拥有至少一个可执行php文件

# 总结

思考一下在哪些情况下可以用到这个姿势? 比如,某网站限制不允许上传.php文件,你便可以上传一个.user.ini,再上传一个图片马,包含起来进行getshell。不过前提是含有.user.ini的文件夹下需要有正常的php文件,否则也不能包含了。 再比如,只是想隐藏个后门,这个方式也是最方便的。

原文链接 (opens new window)

#web#uploadfile
上次更新: 2022/08/24, 22:23:34
.htaccess文件利用
escapeshellarg+escapeshellcmd

← .htaccess文件利用 escapeshellarg+escapeshellcmd→

最近更新
01
0CTF 2016 piapiapia
07-23
02
CISCN 2019 初赛 Love
07-22
03
PHP反序列化
07-21
更多文章>
Theme by Vdoing | Copyright © 2021-2022 Zephyr | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×