文件包含漏洞
产生的原因:通过引入文件时,用户可控,没有严格的检验,或是被绕过,操作一些敏感文件,导致文件泄露和恶意代码注入
当包含文件在服务器本地上,就形成本地文件包含,当包含的文件在第三方服务器是,就形成可远程文件包含。
常见的漏洞代码
if (isset($_GET[page])) {
include $_GET[page];
} else {
include "home.PHP";
}
其中$_GET[page]使用户可以控制变量。如果没有严格的过滤就导致漏洞的出现
包含文件的函数
1.include()
2.include_once()
3.require()
4.require_once()
代码审计的时候,是否是变量,不过滤,过滤不严格,函数include/require
远程文件包含和本地文件包含的配置区别
本地文件包含php.ini配置文件中开启allow_url_include
远程文件包含与本地文件包含的区别(开启allow_url_include和allow_url——ftp on)
远程文件(包括本地文件包含)包含比本地文件包含的危害大
本地文件包含利用
- 上传图片GETshell
- 读取文件,读取php文件
- 包含日志文件获取webshell
1.首先找到文件存放位置
有权限读取apache配置文件或是/etc/init.d/httpd
默认位置/var/log/httpd/access_log
2.让日志文件插入php代码
发送url请求时后插入php代码,一般使用burp抓包修改
curl发包
插入到get请求,或是user-agent部分
3.包含日志文件(必须要权限包含)
- 包含/proc/self/environ 文件webshell
- phpinfo.php 可以包含临时文件(显示临时文件路径)写工具发包上传文件。查看返回信息路径。在使用include包含文件(速度要求快)
- 包含data//或是php://input协议(伪协议,需要allow_url_include=On)
1.包含文件上传的图片
windows环境下
IIS配置文件,查找日志路径
apache/nginx
集成环境
包含日志文件,查看是与否有权限读取文件(可以解析正常)。
事例
1.## 文件包含漏洞
产生的原因:通过引入文件时,用户可控,没有严格的检验,或是被绕过,操作一些敏感文件,导致文件泄露和恶意代码注入
当包含文件在服务器本地上,就形成本地文件包含,当包含的文件在第三方服务器是,就形成可远程文件包含。
常见的漏洞代码
if (isset($_GET[page])) {
include $_GET[page];
} else {
include "home.PHP";
}
其中$_GET[page]使用户可以控制变量。如果没有严格的过滤就导致漏洞的出现
包含文件的函数
1.include()
2.include_once()
3.require()
4.require_once()
代码审计的时候,是否是变量,不过滤,过滤不严格,函数include/require
> 远程文件包含和本地文件包含的配置区别
本地文件包含php.ini配置文件中开启allow_url_include
远程文件包含与本地文件包含的区别(开启allow_url_include和allow_url——ftp on)
远程文件(包括本地文件包含)包含比本地文件包含的危害大
#### windows环境下
IIS配置文件,查找日志路径
apache/nginx
集成环境
包含日志文件,查看是与否有权限读取文件(可以解析正常)。
#### 事例
1.
![](http://upload-images.jianshu.io/upload_images/2495234-669882c3b1b47585.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
上传一个图片,包含文件,include函数在遇到