1.漏洞介绍
能够读取或执行包含本地文件的漏洞,称为本地文件包含漏洞。
有传参的地方很有可能存在文件包含漏洞。
文件包含不看后缀。
2.文件包中php类型关键词区别
关键词 | 介绍 |
include | 找不到被包含的文件只会产生警告,脚本继续执行 |
require | 找不到被包含的文件会产生致命错误,并停止脚本运行 |
require_once | 如果检测到该文件的代码已经被包含,则不会再次包含 |
include_once | 如果检测到该文件的代码已经被包含,则不会再次包含 |
3.PHP本地文件包含
4.访问日志进行文件包含
5.文件包含读取源代码
查看源代码方式:
6.文件包含执行任意PHP代码
测试网页包含如下代码:
<?php
$file=$_GET['filename'];
include($file);
?>
网站利用文件包含功能读取一些php文件,例如phpinfo:
7.文件包含绕过
%00绕过
双写绕过
file(读取本地文件)绕过
8.常见的敏感目录信息路径
Windows系统:
C:\boot.ini //查看系统版本
C:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件
C:\windows\repair\sam //存储Windows系统初次安装的密码
C:\ProgramFiles\mysql\my.ini //Mysql配置
C:\ProgramFiles\mysql\data\mysql\user.MYD //MySQL root密码
C:\windows\php.ini //php配置信息
Linux/Unix系统:
/etc/password //账户信息
/etc/shadow //账户密码信息
/usr/local/app/apache2/conf/httpd.conf //Apache2默认配置文件
/usr/local/app/apache2/conf/extra/httpd-vhost.conf //虚拟网站配置
/usr/local/app/php5/lib/php.ini //PHP相关配置
/etc/httpd/conf/httpd.conf //Apache配置文件
/etc/my.conf //mysql配置文件
9.文件包含危害
(1)读取任意文件
(2)执行任意PHP代码
(3)执行图片马
(4)拿webshell
10.文件包含防御
(1)禁用远程文件包含,改php配置
(2)过滤关键字,如:../ ..\
(3)代码写死,确保%00截断无法使用