文件包含漏洞之——fnmatch函数绕过与——PHP内置协议

fnmatch函数绕过

DVWA安全等级高

代码解读

防御源码中最关键的一行

if(!fnmatch("file*",$file)&&$file!="include.php")

当文件既不是"include.php"(包含include.php文件)也不是"file*"(文件名file开头)时才抛出错误,反之意思,如果文件名符合其中一个条件既可以。

思路

第一个条件很难满足,所以我们的目光转移到达成第二个漏洞
page=file:///C:/xampp/htdocs/dvwa/php.ini 刚好满足"file*"(文件名file开头)

操作

构造url
http://192.168.0.103/dvwa/vulnerabilities/fi/page=file:///C:/xampp/htdocs/dvwa/php.ini
成功读取了服务器的配置文件
利用php的file协议

注意

在最新的DWVA新加了一个impossibol难度(没有漏洞)
让我们看看他是怎么写的

	写法 		
if(!="include.php"&&$ file ! "file1.php"   &&"file2.php")

白名单写法真的是屡试不爽啊

PHP内置协议

PHP带有很多内置URL风格的封装协议,可用于类似fopen()、copy()、file_exists()和filesize()的文件系统函数。

File:// 访问本地文件系统 htt[p:// 访问HTTP(s)网址 ftp:// 访问FTP(s)URLS
php:// 访问各个输入/输出流(I/o streams) zlib:// 压缩流
data:// 数据(RFC2397) ssh2:// Secure Shell 2 expect:// 处理交互式的流
glob:// 查找匹配的文件路径模式 有时候对方程序员对协议进行限制我们可以多尝试尝另外的

具体协议请参照http://www.php.net/manual/zh/wrappers.php

练习

从网上下载copyright 2007-2011 易酷CMS Some Rights Reserved 版本到本地测试。

漏洞利用过程:

http://www.anquan.us/static/bugs/wooyun-2014-061639.html

发布了94 篇原创文章 · 获赞 8 · 访问量 5219

猜你喜欢

转载自blog.csdn.net/weixin_43079958/article/details/105398819
今日推荐