DVWA-4.3 File Inclusion(文件包含)-High-利用file协议绕过防护策略
High Level
查看源码
<?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; } ?>
fnmatch() 函数根据指定的模式来匹配文件名或字符串。
可以看到,High级别的代码使用了fnmatch函数检查page参数,要求page参数的开头必须是file,服务器才会去包含相应的文件。
漏洞利用
High级别的代码规定只能包含file开头的文件,看似安全,不幸的是我们依然可以利用file协议绕过防护策略。file协议其实我们并不陌生,当我们用浏览器打开一个本地文件时,用的就是file协议,如下图。
构造url
http://172.16.134.26/dvwa/vulnerabilities/fi/?page=file:///D:/software/wamp/www/dvwa/php.ini
成功读取了服务器的配置文件
至于执行任意命令,需要配合文件上传漏洞利用。首先需要上传一个内容为php的文件,然后再利用file协议去包含上传文件(需要知道上传文件的绝对路径),从而实现任意命令执行。
参考:https://www.freebuf.com/articles/web/119150.html