文件包含漏洞

简述

程序员将一些可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,无需再次编写,这种调用文件的过程一般称为文件包含。

而文件包含漏洞就是文件包含函数加载的参数没有经过过滤,可以被攻击者控制,包含了其他恶意文件,执行了恶意代码。

php中的文件包含函数

include()
include_once()
require()
require_once()

include和require函数的区别:include在文件包含过程中如果出现错误,会抛出警告,程序继续执行,而require则会抛出一个致命错误,退出程序执行。

include_once和require_once,是只包含一次,适用于程序执行过程中一个文件可能被包含超过一次的情况下,只被包含一次以避免函数重定义,变量重新赋值等问题。

漏洞分类及其原理

1.本地文件包含漏洞

就是能够打开并包含本地文件的漏洞。

示例:

//index.php
<?php
  $filename = $_GET['filename'];
  include($filename);
?>
//info.php
<?php
  phpinfo();
?>

因为filename直接传入到incldue()函数中,所以可以控制filename直接访问到想访问的内容:

2.远程文件包含漏洞

是能够包含远程服务器上的文件并执行的漏洞。

利用条件:配置中的allow_url_fopen和allow_url_include需要为on。

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

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

php伪协议

1.file://协议

用于访问本地文件系统,不受allow_url_fopen和allow_url_include的影响。

用法:file://[文件的绝对路径和文件名]

http://192.168.1.7/testfile/index.php?filename=file://C:/windows/system.ini

2.zip://协议

可以访问压缩文件中的子文件,不需要指定后缀名。不受allow_url_fopen和allow_url_include的影响。

用法:zip://[压缩文件绝对路径]#[压缩文件内的子文件名]

http://192.168.1.7/testfile/index.php?filename=zip://C:/phpStudy/PHPTutorial/WWW/testfile/info.zip%23info.php

如果对zip的文件格式有限制,压缩后可以改成其他格式:

http://192.168.1.7/testfile/index.php?filename=zip://C:/phpStudy/PHPTutorial/WWW/testfile/info.jpg%23info.php

3.php://协议

不需要开启allow_url_fopen,仅php://input、php://stdin、php://memory和php://temp需要开启allow_url_include。

①php://filter :读取源代码并进行base64编码输出。

http://192.168.1.7/testfile/index.php?filename=php://filter/read=convert.base64-encode/resource=info.php

4.data://协议

需要开启allow_url_fopen和allow_url_include,和php://input类似,可以执行任意代码。

用法1:data:text/plain,php代码

用法2:data:text/plain;base64,编码后的php代码

5.phar://伪协议

这个参数是就是php解压缩包的一个函数,不管后缀是什么,都会当做压缩包来解压。(压缩包需要是ZIP协议压缩)

用法:phar://[压缩文件路径]/[压缩文件内的子文件名]

http://192.168.1.7/testfile/index.php?filename=phar://C:/phpStudy/PHPTutorial/WWW/testfile/info.zip/info.php

参考链接

https://www.cnblogs.com/iamstudy/articles/include_file.html

https://www.freebuf.com/articles/web/182280.html

https://blog.csdn.net/weixin_42277564/article/details/80641849

https://xz.aliyun.com/t/7176

https://www.freebuf.com/column/148886.html

posted @ 2020-06-02 23:47  菜包胖嘟嘟  阅读(149)  评论(0编辑  收藏  举报