1-本地文件包含
一、什么是文件包含?
在web后台开发中,程序员往往为了提高效率以及让代码看起来更加简洁,会使用“包含”函数功能。比如把一系列功能函数都写进fuction.php中,之后当某个文件需要调用的时候就直接在文件头中写上一句<?php include fuction.php?>就可以调用函数代码。
文件包含漏洞:
有时候因为网站需求,会让前端用户选择需要包含的文件(或者在前端的功能中使用了“包含”功能),又由于开发人员没有对包含的这个文件进行安全考虑,就导致攻击者可以通过修改包含文件的位置来让后台执行任意文件(代码)。
分类:
本地文件包含漏洞:攻击者通过传入后端服务器固定的配置文件让包含函数去执行,从而使本地的一些配置文件信息被暴露出去。
远程文件包含漏洞:读取远程的php文件加载到本地去执行。
二、包含函数
通过include()或require()语句,可以将PHP文件的内容插入另一个PHP文件(在服务器执行它之前)
include和require语句是相同的,除了错误处理方面:
require会生成致命错误(E_COMPILE_ERROR)并停止脚本。
include只生成警告(E_WARNING),并且脚本会继续。
通过上图我们可知是从前端将要处理的文件传到后台,那么在这传入本地的一些文件地址,是否也能读出其信息。
如图,url中通过提交文件名的方式,进行执行并返回
所以我们尝试用目录切换的方式执行一些系统的固定配置文件,从而获取一些敏感信息。