首页 > 代码库 > 代理审计之包含漏洞

代理审计之包含漏洞

   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";

}

 

 

?>

 

技术分享

 

代理审计之包含漏洞