目录
一、文件包含漏洞的介绍
1.文件包含漏洞的原理
2.常见的文件包含函数
3.文件包含漏洞的分类
本地文件包含漏洞
远程文件包含漏洞
3.文件包含漏洞的危害
4.文件包含漏洞的防范措施
5.文件包含漏洞的绕过手法
空字符绕过
超长字符绕过
一、文件包含漏洞的介绍
1.文件包含漏洞的原理
本质上可以说是文件调用漏洞
由于代码在开发过程中,有时候会遇到相同的代码,不想重复输入,就将代码单独写在一个文件里面,当用到该文件的代码的时候就直接调用该文件进行运行,而这种方式就会导致客户端可以调用其他的恶意文件,通过调用恶意文件,从而形成文件包含漏洞
2.常见的文件包含函数
- PHP:include() 、include_once()、require()、require_once()
- JSP/Servlet:ava.io.file()、java.io.filereader()
- ASP:include file、include virtual
3.文件包含漏洞的分类
可分为2类
- 本地文件包含漏洞
- 远程文件包含漏洞
本地文件包含漏洞
本地文件包含,通过意思就能够理解,就是在条件允许的情况下,所谓的条件允许也就是安全防护没做到位,通过这个条件对文件路径加文件,就形成了本地文件包含。
远程文件包含漏洞
远程文件包含漏洞导致的原因和本地文件包含漏洞造成的原因是一样的,只不过远程文件包含漏洞是利用外部的服务器中的文件进行执行,就形成了远程文件包含漏洞。
3.文件包含漏洞的危害
读取WEB服务器上的配置文件以及WEB服务器上的敏感文件,并且若和webshell联动,并将恶意代码执行将造成更大的危害,通常来说远程文件包含漏洞危害更大
4.文件包含漏洞的防范措施
1、使用str_replace等方法过滤掉危险字符
2、配置open_basedir,防止目录遍历(open_basedir 将php所能打开的文件限制在指定的目录树中)
3、php版本升级,防止%00截断
4、对上传的文件进行重命名,防止被读取
5、对于动态包含的文件可以设置一个白名单,不读取非白名单的文件。
6、做好管理员权限划分,做好文件的权限管理,allow_url_include和allow_url_fopen最小权限化
5.文件包含漏洞的绕过手法
空字符绕过
空字符绕过是存在PHP小于5.3.4版本的一个漏洞,这个漏洞就是用于接收来自路径中的空字符,这样在部分需求下攻击者可以利用将此字符放置安全文件后面来绕过访问限制。
前提条件就是需要PHP版本小于5.3.4,并且关闭PHP魔术引导超长字符绕过
超长字符截断就是利用操作系统对目录最大长度的限制,在Windows中目录长度不可以超过256字节,linux中目录长度不可以超过4096字节。超过的部分会被丢弃。
可以使用"./“进行填充,当然不单单”./“可以填充,使用”."也可以,至于还有那些可以绕过,可以自己去试试。