Dvwa 文件包含漏洞
原理部分:
PHP文件包含漏洞的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。最常见的就属于本地文件包含(Local File Inclusion)漏洞了。
通过引入文件时,用户可控,没有严格的检验,或是被绕过,操作一些敏感文件,导致文件泄露和恶意代码注入
当包含文件在服务器本地上,就形成本地文件包含,当包含的文件在第三方服务器是,就形成可远程文件包含。
程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这中文件调用的过程一般被称为文件包含。
程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,
但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。
几乎所有脚本语言都会提供文件包含的功能,但文件包含漏洞在PHP Web Application中居多,而在JSP、ASP、http://ASP.NET程序中却非常少,甚至没有,这是有些语言设计的弊端。
在PHP中经常出现包含漏洞,但这并不意味着其他语言不存在。
常用的文件包含函数:
include或include_once一般用于动态包含,所谓动态包含就是根据不同条件包含不同文件
require或require_once一般用于静态包含,比如包含一个html文件的头部或者尾部 如:require_once footer.inc.php
include和require可以包含多次,include_once和require_once只包含一次
分为远程文件包含和本地文件包含:
远程文件包含和本地文件包含的配置区别
本地文件包含php.ini配置文件中开启allow_url_include
远程文件包含与本地文件包含的区别(开启allow_url_include和allow_url_fopen )
远程文件(包括本地文件包含)包含比本地文件包含的危害大
开始演示:
网页所期望用户所进行的操作:

分别点击file1.php,file2.php,file3.php;



发现3个页面除了文件的内容不同外,最大的不同就是url中page的参数不同。

而在现实中,恶意的攻击者是不会按照网站建设者的意愿点击这些链接的,因此page参数是不可控的
Low级别
Low级别源码:

可以看到,服务器端对page参数没有做任何的过滤跟检查。
在此环境中,服务器期

最低0.47元/天 解锁文章
439

被折叠的 条评论
为什么被折叠?



