文件包含漏洞
文件包含漏洞也是一种注入型漏洞,与SQL注入等攻击方式一样,其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行。有时候由于网站功能需求,会让前端用户选择要包含的文件,而开发人员又没有对要包含的文件进行安全考虑,就导致攻击者可以通过修改文件的位置来让后台执行任意文件,从而导致文件包含漏洞。
例如:通过PHP函数引入文件时,传入的文件名没有经过合理的验证,从而操作了预想之外的文件,就可能导致意外的文件泄漏甚至恶意代码注入。
分类
文件包含分为远程包含(RFI)和本地包含(LFI)
本地包含就是通过相对路径/绝对路径 的方式能打开并包含 本地文件的漏洞,大部分情况遇到的文件包含漏洞都是 LFI用户可以 动态控制变量
远程包含就是能够包含远程服务器上的文件并执行,可以通过 http(s)或者 ftp 等方式,远程加载文件
条件
allow_url_fopen=On(默认为On) 规定是否允许从远程服务器或者网站检索数据
allow_url_include=On(php5.2之后默认为Off) 规定是否允许include/require远程文件
PHP伪协议
file:// — 访问本地文件系统
http:// — 访问 HTTP(s) 网址<