巧用 php.ini 留后门维持权限(需要高权限)

经验分享 master 来源:带头大哥 8个月前 (01-17) 48次浏览 未收录 0个评论 扫描二维码

前言

php.ini 配置文件(http://php.net/manual/zh/configuration.file.php)在 PHP 启动时被读取一次;

包含 auto_prepend_file 与 auto_append_file 两个选项,其功能是让所有的 php 文件均包含这两个选项指定的文件;

auto_prepend_file 是在首部包含,auto_append_file 是在尾部包含;

这就可以造成文件包含漏洞来实现权限维持,即在这两个选项中指定任意包含恶意代码的文件即可(任意后缀)。

应用场景:

1.碰到高权限 shell,来留后门;

2.CTF、AWD比赛中,用来维持权限;

Note:

1.修改文件必须拥有高权限;

2.修改完必须重新加载 php.ini 来让其生效,类似 linux 下 source 效果;

巧用 php.ini 留后门维持权限(需要高权限)

重新启动 apache,让其重新加载 php.ini;

巧用 php.ini 留后门维持权限(需要高权限)

没问题。但实际场景中有好多情况:例如只有 shell ,而没有进入到服务器(内网)。

碰到这种情况,有人会说了,直接在 shell 下执行重启apache命令不就得了?

现实是你重启但它并不一定能启得来,环境往往很复杂,这种没有中上后门,还把 shell 给丢了;

得不偿失,要有稳妥的方法,转发进入服务器再来修改重启,等等;

而以上并不是这篇文章的重点…

如何在 shell 中重新加载 php.ini 才是重点!

Windows:

环境:

1.phpStudy

2.apache

3.php 5.3.29

1.用死循环重新加载 php.ini ,上传 php 文件:

执行这个文件,会重新加载 php.ini 达到目的;

2.直接使用 .user.ini (http://php.net/manual/zh/configuration.file.per-user.php)来达到相同的目的:

简单来说,它和 php.ini 功能一样,但是是高度自定义,程序执行时会先寻找当前目录下是否存在 .user.ini 文件,如果没有会继续向根目录寻找,直到配置目录下的 php.ini;

.user.ini 作用于同级目录文件,区别 php.ini 作用于全部文件;

这样就可以直接在文件目录下上传一个 .user.ini 文件:

默认300s重新加载,这里设置为10s;

不需要重启 apache ,等时间一到就会重新加载从而达到目的。

Linux:

环境:

1.apache2

2.php 7.0.15

利用条件较为苛刻,死循环不行,上传 .user.ini 也不行,应该是没使用 CGI/FastCGI 启动的原因;

这里需要是以 CGI/FastCGI 启动的 apache 才可以触发成功,印象中大多数 IIS + php 都是以 CGI/FastCGI 启动的,这就解释了网上许多这类后门是基于Windows下来实现的。

.user.ini 在Linux下会是一个比较猥琐和通用的姿势,因为文件默认隐藏,且比 php.ini 更方便管理,形式更简洁且不需要重启,实际利用效果不可观。

Tips:

既然能够修改 php.ini 配置文件了,那直接开启 allow_url_include,使用 php 伪协议 php://input 来避免上传新文件留下痕迹且能达到后门权限维持的目的:

base64加密语句解密为:

这是只需要在执行任意 php 文件时 POST 命令语句即可:

巧用 php.ini 留后门维持权限(需要高权限)

参考博文:

https://www.t00ls.net/thread-38906-1-1.html

https://www.t00ls.net/thread-35053-1-1.html

http://www.admintony.top/?p=1349

http://www.2cto.com/article/201411/348137.html


Xss.lc私人博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:巧用 php.ini 留后门维持权限(需要高权限)
喜欢 (1)
master
关于作者:
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址