• PHP:文件包含漏洞


    简单记录一些文件包含漏洞的常用方法

    产生原因:

    文件包含漏洞的产生原因是在通过引入文件时,由于传入的文件名没有经过合理的校验,或者校检被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。

    常见的导致文件包含的函数如下:
     
    PHP: include(), include_once(), require(), require_once(), fopen(), readfile() ...
    当使用前4个函数包含一个新的文件时,该文件将作为 php 代码执行,php 内核不会在意该被包含的文件是什么类型。

    本地文件包含(LFI):

    当被包含的文件在服务器本地时,就形成的本地文件包含漏洞。我们可以通过该漏洞读取服务器文件,并执行包含php代码的文件。以DVWA为例:

    我们成功读取了php探针文件。而本地文件包含在遇到过滤的情况下也需要一些绕过方法,比如%00截断,点号截断等。

    %00截断:
    `/etc/passwd%00`
    (需要 magic_quotes_gpc=off,PHP小于5.3.4有效)

    %00截断目录遍历:
    `/var/www/%00`
    (需要 magic_quotes_gpc=off,unix文件系统,比如FreeBSD,OpenBSD,NetBSD,Solaris)

    路径长度截断:
    `/etc/passwd/././././././.[…]/./././././.` 
    (php版本小于5.2.8(?)可以成功,linux需要文件名长于4096,windows需要长于256)

    点号截断: 
    `/boot.ini/………[…]…………`
    (php版本小于5.2.8(?)可以成功,只适用windows,点号需要长于256)

    修复方案:

    限制用户访问区域,并校验和过滤用户传入的参数。

    远程文件包含(RFI):

    这里注意一下,当我们远程服务器上的文件为xx.php与xx.txt时,存在远程文件包含漏洞的服务器在执行这两个文件时结果是不同的,以DVWA为例:

    这是xx.txt文件执行phpinfo后所显示的ip。

    这是xx.php执行phpinfo后的ip地址。

    这说明远程文件包含漏洞所包含的文件为非php后缀才是正确的,因为当后缀名为php结尾的文件被执行时实在攻击者本机上执行的,而非php后缀的文件实在受害机上执行的。

    PHP的部分常用伪协议:

    * file 协议读取本地文件:`file=file://etc/passwd`  
    (需要allow_url_fopen=On并且 allow_url_include=On)
     
    * 利用php流input:`?file=php://input`
      (需要allow_url_include=On,详细→http://php.net/manual/en/wrappers.php.php)
       
    * 利用php流filter:`?file=php://filter/convert.base64-encode/resource=index.php`
      (同上)
       
    * 利用data URIs:`?file=data://text/plain;base64,SSBsb3ZlIFBIUAo=%00`
      (需要allow_url_include=On)

    当网站存在本地文件包含漏洞和上传漏洞时我们可以配合两个漏洞GETSHELL。

    任重而道远,共勉!

  • 相关阅读:
    杂题之求1-100连续不重复整数中的缺少的一个数
    C语言之位运算
    程序员的激情其实是一种痛苦
    主机windwo7+虚拟机centos如何配置虚拟机可以上网,且与主机互ping通
    MyEclipse Servers视窗出现“Could not create the view: An unexpected exception was thrown”错误解决办法
    一个web项目在myeclipse中add deployment时无法被识别出来的原因
    Hibernate中,将session绑定到线程时,在保存和查询数据的代码里,要正确的关闭session
    springframwork历史版本下载地址
    在web项目中使用cxf开发webservice,包含spring支持
    [转] Spring Security(01)——初体验
  • 原文地址:https://www.cnblogs.com/s1ye/p/8283651.html
Copyright © 2020-2023  润新知