美文网首页
PHP文件包含漏洞

PHP文件包含漏洞

作者: ApacheShiro | 来源:发表于2019-01-11 15:12 被阅读0次

    PHP编程语言中为我们提供了四个常见文件包含函数,分别是include() 、require() 、include_once() 、require_once() 。这四个函数都可以进行文件包含,但功能却不一样,

    区别如下:

    ·include():执行到include时才包含文件,找不到被包含文件时只会产生警告,脚本将继续执行

    ·require():只要程序一运行就包含文件,找不到被包含的文件时会产生致命错误,并停止脚本

    ·include_once()和require_once():若文件中代码已被包含则不会再次包含

    漏洞利用的条件:

    ·程序用include()等文件包含函数通过动态变量的范式引入需要包含的文件

    ·用户能够控制该动态变量

    ·要保证php.ini中allow_url_fopen和allow_url_include要为On

    注:PHP中只要文件内容符合PHP语法规范,包含时不管扩展名是什么都会被PHP解析, 

     若文件内容不符合PHP语法规范则会暴漏其源码。

    php.ini配置文件:allow_url_fopen=off 时不可以包含远程文件,只有开启了才可以包含。Php4存在远程&本地,php5仅存在本地包含。

    漏洞分类

    本地文件包含:可以包含本地文件,在条件允许时甚至能执行代码

    读敏感文件,读PHP文件

    包含日志文件GetShell

    上传图片马,然后包含从而GetShell

    包含/proc/self/envion文件GetShell

    包含data:或php://input等伪协议

    若有phpinfo则可以包含临时文件

    远程文件包含:可以直接执行任意代码

    php协议类型:

      file:// — 访问本地文件系统

      http:// — 访问 HTTP(s) 网址

      ftp:// — 访问 FTP(s) URLs

      php:// — 访问各个输入/输出流(I/O streams)

      zlib:// — 压缩流

      data:// — 数据(RFC 2397)

      glob:// — 查找匹配的文件路径模式

      phar:// — PHP 归档

      ssh2:// — Secure Shell 2

      rar:// — RAR

      ogg:// — 音频流

      expect:// — 处理交互式的流

    想要开启文件包含的功能,首先要修改PHP的配置文件(PHP.ini)把文件里的功能选项开启。

    在Linux中PHP.ini配置文件一般默认安装在 /etc目录下。

    下面是两个功能选项:

    allow_url_fopen :on 默认开启 该选项为on便是激活了 URL 形式的 fopen 封装协议使得可以访问 URL 对象文件等。

    allow_url_include:off 默认关闭,该选项为on便是允许 包含URL 对象文件等

    相关文章

      网友评论

          本文标题:PHP文件包含漏洞

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