【VULNERABLITY】文件包含漏洞详解

  1. 1. 概述
  2. 2. 文件包含漏洞
  3. 3. 远程文件包含
    1. 3.1. 远程包含支持的协议

概述

很久没有归纳总结知识点了,学了那么多总感觉那么零散,所以准备开始总结这一系列的漏洞详解。一方面是总结一方面也是复习。这篇主要总结一下文件包含漏洞。

文件包含漏洞

由于在Web应用开发的过程中,大量代码是可以重复使用的,为了方便使用结合开发语言(如php)的便利,包含重复利用的代码,如果在包含过程中,路径或请求的url可控且没有做任何的安全处理,就容易发生文件包含漏洞。
文件包含漏洞包括

  • 本地文件包含
  • 远程文件包含

下面主要讲的文件包含在php中的应用,毕竟php是世界上最好的语言,23333333
ps:其他语言,遇到了再补充

远程文件包含

这里先讲一下远程文件包含RFI(Remote File Include),顾名思义,远程文件包含就是,Web应用程序请求远程的资源,进行一个包含利用。一些猥琐的过马一句话木马就是利用这种方式进行一个恶意代码的包含。
在php中造成远程文件包含,首先需要配置文件中allow_url_include=On默认不开启,以及远程读取文件allow_url_fopen=On,满足这些条件,我们再来看看有哪些触发远程文件包含的php函数。

1
2
3
4
5
6
7
8
9
10
//读取远程文件内容
fopen()
copy()
file_get_content()
//包含远程文件代码
include()
include_once()
require()
require_once()
//可能会有遗漏,小伙伴如果知道还有其他的可以email我:)

前面读取远程文件内容,可能会出现在上传头像处,存取远程头像。
后者危害可能更大,直接包含恶意代码执行导致任意代码执行。

远程包含支持的协议

在满足配置文件的要求下,使用php支持使用httphttps(存在openssl扩展时)、ftpphp://input