File Inclusion,文件包含漏洞是Web漏洞的一种类型,通常会影响依赖脚本运行的Web应用程序。当应用程序包含可执行代码的路径变量被攻击者控制, 攻击者就可以控制在运行时执行的文件
文件包含漏洞不同于一般的目录遍历攻击,因为目录遍历是获取未经授权的文件系统访问的一种方式,而文件包含漏洞则会破坏应用程序加载代码以执行的方式。成功利用文件包含漏洞将可以在Web服务器上执行远程代码。
php程序中,指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数,利用url去动态包含文件。此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。
- include() 会将指定的文件读入并且执行里面的程序
- require() 会将目标文件的内容读入,并且把自己本身代换成这些读入的内容
- include_once() 和 include 语句完全相同,唯一区别是如果该文件中已经被包含过,则不会再次包含。如同此语句名字暗示的那样,只会包含一次
- require_once() 和 require 语句完全相同,唯一区别是如果该文件中已经被包含过,则不会再次包含。如同此语句名字暗示的那样,只会包含一次
下面看dvwa案例
注意:本例需要做2个准备工作
1.打开php的错误提示。
编辑/etc/php/7.0/apache2/php.ini,设置
display_errors = On
然后重启动apache服务
service apache2 restart
2.打开2个文件包含选项
编辑/etc/php/7.0/apache2/php.ini,设置
allow_url_fopen = On
allow_url_include = On
然后重启动apache服务
service apache2 restart
关于这2个选项说明,参见https://www.cnblogs.com/liruning/p/6023256.html
low
界面上有3个文件file1.php,file2.php,file3.php,点击后链接如下