文件包含漏洞相关知识总结
1. 文件包含漏洞概念
通过PHP函数引入文件时,传入的文件名没有经过合理的验证,从而操作了预想之外的文件,就可能导致意外的文件泄漏甚至恶意代码注入
2. 文件包含漏洞的环境要求
- allow_url_fopen=On(默认为On) 规定是否允许从远程服务器或者网站检索数据
- allow_url_include=On(php5.2之后默认为Off) 规定是否允许include/require远程文件
3. 常见文件包含函数
- include()
- require()
- include_once()
- require_once()
4. PHP伪协议在文件包含漏洞中的利用
4.1. php://input
php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行
如果存在文件包含漏洞,可将php://input作为文件名传入,同时在post中注入设置想要注入的代码,php执行时就会将post的内容作为php代码执行
4.1.1. 使用条件
- allow_url_fopen:off/on
- allow_url_include:on
4.1.2. 实例
<meta charset="utf8">
<?php
error_reporting(0);
$file = $_GET["file"];
if(stristr($file,"php://filter") || stristr($file,"zip://") || stristr($file,"phar://") || stristr($file,"data:")){
exit('hacker!');
}
if($file){
if ($file!="http