引起的原理
原因
- 原因来自服务器开启了allow_url_include选项 allow_url_fopen选项
- 通过PHP函数引入文件
- 允许url动态包含文件 如果没有过滤 可以导致命令解析执行
- allow_url_fopen = On
默认打开
,允许URLs作为像files一样作为打开的对象;
- allow_url_include = On
默认关闭
,允许include/require函数像打开文件一样打开URLs;
作用的函数
- include() 只生成警告(E_WARNING)并且脚本会继续
- require() 会生成致命错误(E_COMPILE_ERROR)并停止脚本
- include_once() 让文件包含一次 避免重复包含 函数重定义 被重新赋值
- require_once() 如上
两种方式
- 本地文件包含 //可以读取本地文件 例如phpinfo
- 远程文件包含 //原因开启了allow_url_fopen (远程读取)选项 可以借解析的特征远程跑PHP指令
危害
- 包含漏洞可以结合上传漏洞 跑大马
- 读取文件 写入文件 包含日志文件
- 截断包含
- PHP内置伪协议利用