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

简介:

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

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

image

在这段代码中,首先使用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参数没有进行任何的过滤处理。

image

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

image

我们之前所使用的文件包含都是包含目标服务器上的本地文件,因而称为本地文件包含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文件。这是最为安全的一种防御措施,当然实践中可能会有多个文件需要用户来选择,那么也只需要多进行几次判断即可。经过这样的设计,也就不存在文件包含漏洞了。

image

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

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

image


本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1727406

相关文章
|
6月前
|
机器学习/深度学习 人工智能 搜索推荐
AI训练师入行指南(五):模型评估
本文从珠宝鉴定类比出发,探讨AI模型从训练到优化的全流程。首先介绍模型评估的四大核心指标:准确率、精确率与召回率、F1-Score及AUC-ROC,帮助明确模型性能。接着分析阈值调节、正则化与集成学习等调优方法的实际应用,如支付宝动态人脸识别和腾讯金融风控系统。此外,针对GPT-4o、Stable Diffusion和滴滴ETA模型的具体案例,展示参数微调与审美争议解决策略。最后提供避坑指南,强调数据泄漏、过拟合和冷启动问题的应对之道,总结模型评估应以商业价值、伦理规范和用户体验为导向,确保AI模型真正成为“智能珍宝”。
242 0
|
XML 前端开发 Java
怎样将MultipartFile和File互转
该文介绍了如何在Java开发中优雅地转换MultipartFile和File。MultipartFile是Spring框架用于接收上传文件的类,而File是操作系统文件的代表。文章提供了三种将MultipartFile转换为File的方法:使用`transferTo`方法、FileOutputStream和Java NIO。另外,还介绍了在测试场景下将File转换为MultipartFile,通过MockMultipartFile实现。
1244 1
|
网络协议 安全 算法
RIP两个版本:RIP-1和RIP-2
【7月更文挑战第14天】
486 0
RIP两个版本:RIP-1和RIP-2
|
8月前
|
安全 Ubuntu Linux
在DVWA靶机上从渗透到控制(weevely和中国蚁剑)
本文介绍如何使用Weevely工具对Ubuntu系统上的DVWA进行渗透测试,通过上传Webshell获取远程服务器控制权。实验环境为靶机IP 192.168.1.37(DVWA低安全等级)和攻击机Kali Linux IP 10.211.55.29。详细步骤包括Weevely安装、Webshell生成与上传、命令执行及提权尝试,并结合中国蚁剑进一步操作。文中强调合法授权和隐蔽性的重要性。
419 0
在DVWA靶机上从渗透到控制(weevely和中国蚁剑)
|
11月前
|
Linux C# Android开发
分享3款开源、免费的Avalonia UI控件库
分享3款开源、免费的Avalonia UI控件库
1113 0
|
负载均衡 Java 测试技术
面试官:说说微服务灰度发布的底层实现?
面试官:说说微服务灰度发布的底层实现?
282 1
面试官:说说微服务灰度发布的底层实现?
|
搜索推荐 关系型数据库 MySQL
PHP编程入门与实战:构建你的第一个动态网页
【8月更文挑战第24天】本文将引导初学者进入PHP编程的世界,从基础概念到实践操作,一步步展示如何使用PHP创建一个简单的动态网页。文章不仅介绍PHP的安装、语法和常用功能,还通过一个实际案例演示如何应用这些知识。无论你是编程新手还是希望扩展技能的开发者,这篇文章都将为你打开一扇通往Web开发的大门。
|
人工智能 自然语言处理 监控
AI大模型智能体工作流涉及使用Ollama和FastGPT这两个工具
AI大模型智能体工作流涉及使用Ollama和FastGPT这两个工具
1258 4
|
Sentinel
一文速通Sentinel熔断及降级规则
一文速通Sentinel熔断及降级规则
|
JavaScript 安全 应用服务中间件