zoukankan      html  css  js  c++  java
  • 代理审计之包含漏洞

       BMG: 

      我们都知道不管什么语言都有包含头文件,包含漏洞就是利用的PHP头文件包含的漏洞,因为网络上代码的文件包含有时候是可以覆盖更改的,

    倘若你能更改掉原先的路径,去包含你自己的文件不是可以有很大的空间去发挥吗?下面我详细介绍下

    测试代码都很简单啊  只需要用个记事本写下  然后自己安装个PHPStudy 然后就可以在自己的网页访问了

                                  本地包含与远程包含

    一基本定义

           包含产生的漏洞基本原理就是,包含某个文件名,通过对被包含文件内容的修改进行操作

        这是4个包含函数,include,include_once,require,require_once

     

     

    在PHP 中,有四个用于包含文件的函数,当使用这些函数包含文件时,文件中包含的PHP

    代码会被执行。下面对它们之间的区别进行解释:

     

    include():当使用该函数包含文件时,只有代码执行到include()函数时才将文件包含进来,

    发生错误时只给出一个警告,继续向下执行。

    include_once():功能和include()相同,区别在于当重复调用同一文件时,程序只调用一次。

     

    require():

    1.require()与include()的区别在于require()执行如果发生错误,函数会输出错误信

    息,并终止脚本的运行。

    2.使用require()函数包含文件时,只要程序一执行,立即调用文件,而include()只

    有程序执行到该函数时才调用。

     

    require_once():它的功能与require()相同,区别在于当重复调用同一文件时,程序只调用一次。。

           需要注意的是

           本地包含受gpc的影响,在其关闭下才能进行,开启后会被过滤转义。还可以进行

    %00截断,就是遇到空格停止解析文件名,借此可以突破某些文件后缀名限制上传木马脚本。

    远程包含:

           需要开启allow_url_fopen和

    Allow_url_include为On

    下面进行简单的代码演示:

           这是简单的本地包含url包含1.txt成功执行

    1. txt里面的phpinfo();的内容。如果执行  phpinfo就是执行自己的PHP版本的配置文件 ,如果成功 则证明存在漏洞

    include $file.".php";则会限制文件后缀名限制。智能上传php后缀的文件,但是可以%00截断

     PS:%00截断是IIS6.0的解析漏洞,

    就比如说 本来是不允许上传  1.php文件的只允许上传突破。jpg格式的,但你把文件名改成 1.php ;.jpg注意啊中间有个空格,

    在16进制下改成00,上传时因为是。jpg会允许上传,解析时遇到00则停止解析,等于上传网页解析后还是1.php成功突破

    演示如下:

    看,开始失败  为什么失败呢 因为gpc开着 ,什么是GPC了 ,朋友可以百度下,大致的意思是 魔术过滤引号,转义',"等等这些可能造成的漏洞,加强防范的,

    后面加%00后成功,原理就是遇到%00不再往后解析文件格式。

    http://127.0.0.1/php/include1.php?file=1.txt%00

           远程包含基本原理一样就是把文件路径名换成URL的路径即可。

    三.伪协议

           前提也是 allow_url_include =ON开启 而且PHP版本

    >=5.2.0.

    在包含路径输入php://input,然后执行POST参数里面的代码

    ,具体是为什么,还没有弄清楚。有可能是GET变POST方式执行代码。

    演示如下

      

    也可以执行CMD命令,功能十分强大

     

    第二个伪协议

    php://filter/read=convert.base64-encode/resource=

    读本地文件的

     

    解码后就是原先的1.txt里面的内容

     

    测试代码如下:

    <?php
    
    if (isset($_GET['file']))
    
    {
    
           $file = $_GET['file'];
    
           include $file;
    
           //include $file.".php";
    
    }
    
     
    
     
    
    ?>

  • 相关阅读:
    如何复用网页
    sap
    学习方法
    spring + ehcache 实例
    200个 jquery插件
    vs 示例代码浏览器 搜索
    struts jquery 整合
    eclipse clean 后clease 为空
    mvc相关
    css 框架
  • 原文地址:https://www.cnblogs.com/arsense/p/6427620.html
Copyright © 2011-2022 走看看