一、原理
1、文件包含
开发人员将相同的函数写入单独的文件中,需要使用某个函数时直接调用此文件,无需再次编写,这种文件调用过程称为文件包含;
2、文件包含漏洞
开发人员为了使代码更灵活,会将被包含的文件设置为变量,用来进行动态调用,从而导致客户端可以恶意调用一个恶意文件,造成文件包含漏洞;
二、文件包含漏洞常见函数
(1)require:找不到被包含的文件,报错,并且停止运行脚本;
(2)include:找不到被包含的文件,只会报错;
(3)require_once:与require类似,区别在于当重复调用同一但会继续运行脚本文件时,程序只调用一次;
(4)include_once:与include类似,区别在于当重复调用同一文件时,程序只调用一次;
三、特征
(1) ?page=
(2) ?file=
(3) ?home=
四、目录遍历和文件包含的区别
目录遍历是可以读取web目录以外的其他目录,根源在于对路径访问权限设置不严格,针对于本系统;
文件包含是利用函数来包含web目录以外的文件,分为本地文件包含和远程文件包含;
五、本地文件包含和远程文件包含
本地文件包含就是通过游览器包含web服务器上的文件,这种漏洞是因为游览器包含文件时没有进行严格的过滤允许遍历目录的字符注入游览器并执行;
远程文件包含就是允许攻击者包含一个远程的文件,一般是在远程的服务器上预先设置好脚本。此漏洞是因为游览器对用户的输入没有进行严格的检查,导致不同程度上的信息泄露,拒绝服务攻击,甚至在目标服务器上执行代码;
六、防御
使用HTTP://或者HTTPS://大小写绕过
使用…/./…/./…/./绕过
七、zico2靶机
hack:kali(192.168.137.4)
靶机:zico2
1、靶机ip地址扫描
2、开放端口扫描
3、查看每个端口对应的服务
4、查看网页指纹信息
5、登录查看页面发现文件包含关键词,抓包查看是否存在文件包含漏洞(没有发现文件上传点,暂时告一段落)
6、扫描网站对应的目录
7、使用游览器登录http://192.168.137.3/dbadmin(使用弱密码admin直接登陆成功)
8、查看数据库的用户以及密码
使用MD5解密
root 34kroot34
zico zico2215@