DVWA-文件包含

 

什么是文件包含?在文件包含里面,我们要想方设法把真正包含的文件掉包,换成恶意文件,服务器却不知道。

文件包含:是一种代码处理方式,当一个代码文件想要引用另外一个代码文件,就要用到包含,常见的包含函数有include、require等,参数是文件名。但是如果文件包含的参数用户可控且过滤不严,被攻击者偷梁换柱。

LOW等级:

首先进行正常的操作:点击fil1和file2时,仅仅是配置参数的变化,而其他并没有变化,这个参数便是可以利用的。

首先进行尝试,将这个参数随便改成test.php,显示找不到文件,证明这个参数是可以利用的。如图可以看到错误信息,同时爆出来web的绝对路径。

 

思考:之前的file1.php、file2.php、file3.php肯定是在一个目录中的,而这个目录加上这个文件名形成了绝对路径,这个目录我们已经在出错信息里面找到了,所以这个include函数如下图所示。

进一步思考,如果我们要包含根目录里面的php.ini文件,就要跳转到上两级目录,如下图所示:

 

在浏览器中,php.ini的文件成功读取:

 

接下来思考如何进行攻击:

1、本地文件执行:

尝试读取DVWA跟目录下面的phpinfo.php文件,如图所示,表明了文件包含不仅仅能读取文件,换能够执行文件。

2、远程文件执行:

在DVWA跟目录下面放一个phpinfo.txt文件,然后进行远程包含:如下图所示,说明是可以远程包含php文件的,而且非php的文件,只要里面包含了php格式的代码都可以正常执行。经过进一步尝试远程的phpinfo.php文件也可以执行,但两者的区别是.txt显示的是DVWA的域名,而.php文件显示的是本地127.0.0.1。我们要清楚远程的执行不是在攻击者的web服务器上执行,而是在受害者web服务器上执行命令,所以phpinfo.txt才是正经。

 

攻击思路:a现在要攻击b,攻击者首先在a上传有webshell代码的文本文件,得到URL,找到b的文件包含漏洞,就成功地执行了webshell,获得了b的web权限。

Medium等级:

1、本地文件执行:

首先进行本地包含,在这个等级,发现刚刚的../没用了,经过测试观察报错信息,发现输入../报错信息里面不出现,说明这个等级过滤了../,但我们可以使用..\

 

如图所示,成功读取

2、远程文件包含:

接下来进行远程包含,发现同样被过滤了,经过不断的判断,观察出错信息,发现服务端只将http://作为整体进行过滤,如图所示采用双写的方法可成功绕过。

High等级:

1、本地文件包含:

前面两种方法都不行,经过测试,观察出错信息,发现page参数只认file开头的文件,其他的则提示找不到文件。

所以我们可以利用file 协议:在file://后面加上物理路径即可,成功查看php.ini里面的内容。

随便读取D盘下面的phpinfo.txt文件可成功执行:

远程文件执行:前面两种方法失效,经过验证同样只支持file开头的字符串,而file协议只支持本地文件,远程的不支持,所以就需要有一种方法将远程的文件上传到服务器上,所以这里要结合文件上传漏洞,然后进行本地文件执行。

防御:

白名单

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值