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=点击的文件名来显示相应内容,那么可能存在文件包含漏洞,通过修改URL,让page=指定的文件,来显示攻击者想访问的不在开发者指定访问范围中的内容。

http://127.0.0.1/DVWA/vulnerabilities/fi/?page=../../hackable/flags/fi.php

显示成功。
在这里插入图片描述

文件内有五句话,显示了三句,一句隐藏了,还有一句在源码中。

2.2.medium

DVWA Security设置为Medium,开发者过滤了一些输入,但依然存在文件包含漏洞。
在这里插入图片描述

过滤了https://,"…/“等,对于我们在low中所用的相对的方法,会过滤…/,不过可绕过,使用双写绕过替换规则,比如过滤了”…/"我们可以写…//,这样中间的…/去掉后依然是…/。猜测这样过滤是想排除远程文件包含漏洞。
访问http://127.0.0.1/DVWA/vulnerabilities/fi/?page=…//…//hackable/flags/fi.php。依然可以访问到fi.php文件内容。注意如果访问文件左上角显示空白,说明绕过失败。

2.3.high

DVWA Security设置为High,使用了文件名匹配,使用file*只允许以file开始的文件名,或者include.php,但是可以绕过的。
在这里插入图片描述

利用file协议绕过防护策略,通过浏览器打开一个本地文件,用到的就是file协议。

http://127.0.0.1/DVWA/vulnerabilities/fi/?page=file:///var/www/html/DVWA/hackable/flags/fi.php。

file协议后面接的是绝对路径。成功绕过。

2.4.impossible

DVWA Security设置为Impossible Level。这个级别设置文件名白名单。

3.防御措施

使用文件白名单验证,文件包含参数写死,文件包含参数不可由用户修改,禁止目录跳转字符"…/"。等等

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值