文件包含漏洞(伪协议利用)

实验环境

    1.已经配置好的WEB服务器

    2.文件包含页面

include.php:

         

                   

                            文件包含

                   

                   

                           

                                    phpinfo(); //一些伪协议的使用需要关注 allow_url_include 和 allow_url_fopen的状态

                                    include($_GET['f']);

                            ?>

                   

           

3.伪协议利用

    file伪协议,通过这个协议可以对系统中的文件进行包含,不过一定要是绝对路径

           

1-1

php伪协议,有两种类型 input 和 filter

  input需要allow_url_include:On,在input中POST提交的数据都会被当作php代码处理

                   

1-2

    利用burpsuite抓包,然后把GET请求改为POST请求。

    注意:把?f=php://input这个参数写回请求路径下,然后在下面写入POST数据

           

filter 不需要开启allow_url_fopen 或者 allow_url_include

filter://resource=文件路径(可以绝对或者相对)


1-3

filter://convert.base64-encode/resource=文件路径

#利用这个方法可以下载源码,对文件内容进行base64编码,就不会被解析


1-4

ZIP伪协议,利用这个伪协议可以执行包含到ZIP中的文件,不过这个协议我没有利用成功,就不放截图了


phar伪协议,通过这个伪协议,可以执行包含在文件中的文件

1-5

把一个php文件压缩成zip文件,然后把zip后缀改为jpg,然后利用这个协议去执行,当然不一定要这样做,直接传zip也是可以利用成功的


1-6

data伪协议,需要 allow_url_include:On allow_url_fopen:On,它可以直接执行语句中的代码

    ?f=data://text/plain, //直接执行php代码


1-7

利用成功。

data伪协议的一些格式:

      data://,<文本数据>

      data://text/plain,<文本数据>

      data://text/html,

      data://text/css,

      data://text/javascript,

      data://text/gif;base64,

      还有png,jpeg等格式的数据都是这个格式去写,改下后面就好了,如果要对数据进行base64编码,就在类型后面加上;base64,就好了


HTTP协议

需 要 allow_url_include:On allow_url_fopen:On ,这就是所谓的远程文件包含了

      这个就不多说了,注意二次包含,加入你用目标服务器去包含一个远程服务器的php文件,那么这个php文件被远程服务器解析过,解析过后,目标服务器去包含这个文件,是没有任何东西的,会让包含失败                 

             

                                       

你可能感兴趣的:(文件包含漏洞(伪协议利用))