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

2020-06-26  本文已影响0人  张三逍遥法外

实验环境

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

    2.文件包含页面

include.php:

          <html>

                    <head>

                            <title>文件包含</title>

                    </head>

                    <body>

                            <?php

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

                                    include($_GET['f']);

                            ?>

                    </body>

            </html>

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 phpinfo(); ?> //直接执行php代码

1-7

利用成功。

data伪协议的一些格式:

      data://,<文本数据>

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

      data://text/html,<html代码>

      data://text/css,<CSS代码>

      data://text/javascript,<js代码>

      data://text/gif;base64,<base64编码的gif图片数据>

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

HTTP协议

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

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

             

                                       

上一篇 下一篇

猜你喜欢

热点阅读