一个案例带你认识何为文件下载漏洞
比如:http://www.epa.ae/download.php?filepath=circular&file=13.pdf
我们可以这样:http://www.epa.ae/download.php?filepath=circular&file=../download.php
就可以得到下图这个效果:
那么到底是缘何呢?我们来看看下载下来的代码
一打开文件就看到了那么浓浓的代码漏洞的气息。
第八行的变量$filename并没有任何过滤就带入了43行/44行进行打开和读取,由此产生文件读取漏洞。
修复的方法:
- 过滤点(.)使用户在url中不能回溯上级目录
- 正则严格判断用户输入参数的格式
- php.ini 配置open_basedir限定文件访问范围