Hetian lab Day 9 DVWA八:文件包含漏洞

背景知识

由于开发人员在编写源码时将可重用的源码插入到单个文件汇总,并在需要的时候将他们包含在特殊的功能代码文件中,然后包含文件中的代码会被解释执行。由于并没有针对代码中存在的文件包含的函数入口做过滤,导致客户端可以提交恶意构造语句并交由服务端解释执行。文件包含攻击中web服务器源码里可能存在include()这类文件包含操作函数,通过客户端构造提交文件路径是该漏洞攻击成功的最主要原因。
如果攻击者动态包含指令指定一个有效文件,那么该文件的内容会被传递给PHP解释器,可直接在远程服务器上执行任意PHP文件。如果攻击者能够指定一条路径来只想被自己控制的远程站点,那么动态include指令就会执行由攻击者提供的任意恶意代码,也就是所谓的远程文件包含。

实验目的

通过该实验理解文件包含漏洞的原理和利用方法。

实验环境

服务器:win2003+DVWA,IP地址:10.1.1.174
测试者:win7,IP地址随机

实验步骤

步骤一

查看根目录下的1.txt文件,
在这里插入图片描述

实验步骤二:medium等级

为了和medium实验做对比,还可以用如下形式。

http://10.1.1.174/vulnerabilities/fi/?page=http://10.1.1.174/test.txt

实验关键代码:

//bad input validation
$file = str_replace("http://","",$file);
$file = str_replace("https://","",$file);

通过本段代码实现过滤到http和https,不包含远程文件,正常包含本地文件。
因此这种情况下包含远程文件就会报错:
在这里插入图片描述
但是包含本地文件是不会有问题的:
在这里插入图片描述

小结

程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这中文件调用的过程一般被称为文件包含。这使得代码更加灵活,但正是由于这种灵活性使得客户端能够调用恶意文件,造成文件包含漏洞。几乎所有脚本语言都会提供文件包含功能,但文件包含漏洞在PHP webapplication中比较多,在JSP、ASP、ASP.NET程序中比较少(但还是存在的)。

分析与思考

1)文件包含漏洞本地和远程有什么不同?
本地文件包含漏洞
当网站服务器本身存在恶意文件时,本地包含使用。
远程文件包含漏洞
远程文件包含漏洞是因为开启了PHP配置中的allow_url_fopen,开启该选项后服务器允许包含一个远程文件。
2)本地和远程包含的利用条件是什么?
当服务器的PHP配置中,选项allow_url_fopenallow_url_include为开启状态是,服务器会允许包含远程服务器上的文件,如果对文件来源没有检查的话,就容易导致任意远程代码执行。
参考文件包含漏洞利用与防御

课后习题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值