千家信息网

DVWA系列之16 文件包含漏洞挖掘与防御

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,下面我们来分析一下DVWA中文件包含漏洞的源码。首先文件包含的主页面是D:\AppServ\www\dvwa\vulnerabilities\fi\index.php文件,文件中的主要代码部分:在这段
千家信息网最后更新 2024年11月11日DVWA系列之16 文件包含漏洞挖掘与防御

下面我们来分析一下DVWA中文件包含漏洞的源码。

首先文件包含的主页面是D:\AppServ\www\dvwa\vulnerabilities\fi\index.php文件,文件中的主要代码部分:

在这段代码中,首先使用switch语句根据用户选择的安全级别,分别将low.php、medium.php、high.php赋值给变量$vulnerabilityFile,接下来使用require_once函数来包含用户所选择的页面,最后用include函数来包含变量$file。

变量$file正是来自于low.php、medium.php、high.php。

在low.php中,以GET方式获取用户通过page参数传来的数据,并赋值给变量$file,可以看到这里对page参数没有进行任何的过滤处理。

在medium.php中,通过str_replace()函数将用户传来的数据进行了替换,主要是将http://和https://都替换成了空,这里主要是为了防止远程文件包含。

我们之前所使用的文件包含都是包含目标服务器上的本地文件,因而称为本地文件包含LFI,其实也可以包含远程服务器上的文件,比如http://127.0.0.1/dvwa/vulnerabilities/fi/?page=php://192.168.80.132/info.php,这称为远程文件包含RFI。很明显RFI的威力更强,但要能实施RFI的前提是要保证PHP中的两项参数allow_url_fopen和 allow_url_include处于开启状态,这两项参数默认状态下都是关闭的,因而RFI多半是执行不了。据说可以通过"zlib://"和"ogg://"等方式绕过,但是我目前还没有查找到相关资料,也没有验证,这个问题就暂且搁置吧。

总之,medium对LFI没有任何的影响,因而之前所使用的文件包含操作都可以执行。

最后看下high.php,这里用if语句来判断用户输入的数据是否是inlude.php,如果不是则直接报错退出,其实也就是指定了只允许包含include.php文件。这是最为安全的一种防御措施,当然实践中可能会有多个文件需要用户来选择,那么也只需要多进行几次判断即可。经过这样的设计,也就不存在文件包含漏洞了。

文件包含漏洞挖掘的思路跟之前一样,仍是搜索include()、include_once()、require()和require_once()这些函数,并且观察这些函数所包含的内容是否可以由用户控制,并是否采取了防御措施。

比如在下面这段代码中,include_once()函数中包含了变量$lang,而这个变量可以由用户输入且没有经过任何的处理,因而这里就产生了文件包含漏洞。

文件 用户 函数 变量 漏洞 参数 代码 数据 文件包 选择 防御 安全 措施 方式 服务器 状态 语句 前所 处理 服务 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络技术的 证书 网络安全工程师在哪里考试 热场仿真模拟软件开发公司 数据库操作引擎授权码 企业加强网络安全的例子 深圳市DMR对讲机软件开发公司 青少年网络安全教育空中课堂 网络安全工程师晋升岗位 手机afreeca的直播服务器 国家对于网络安全的认识 河北数据库管理工程师培训 我国网络技术发展趋势 服务器系统如何内网穿透 删除数组中的一行数据库 河北c语言软件开发定做 数据库数据导出 普陀区市场软件开发大概费用 江西服务器机柜品牌 数据库命名规范 数据库网站建设怎样收费 保卫祖国网络安全 山东联投网络技术公司怎么样 软件开发七项原则 深圳市DMR对讲机软件开发公司 网络技术在道路工程中的运用 关系数据库中列称 部队文职软件开发岗面试题 陕西网络安全等级保护评估机构 进销存数据库怎么编写 安仁app软件开发学费多少
0