文件下载漏洞

文件下载漏洞

一、漏洞PHP源码

// 获取店端清酒的文件名
$file_path = $GET['filename'];
// 设置响应头为附件下载而非内容读取
Header("Contnet-type: application/octet-stream");
Header("Content-Disposition: attachment; filename=".basename($file_path));
// 向页面输出文件内容
echo file_get_contents($file_path);

二、利用条件

  • 存在读文件的函数和操作
  • 读取文件的路径由用户可控且未校验或校验不严格
  • 输出了文件内容

三、文件下载危害

  • 可以下载服务器任意文件,如脚本代码、服务及系统配置文件等
  • 可用得到的代码进一步代码审计,得到更多可利用的漏洞

四、文件下载的防范

  • 过滤特殊字符.(点),使用户在URL中不能回溯上级目录
  • 震泽严格判断用户输入参数的格式
  • php.ini配置open_basedir限定文件访问范围
  • 将文件路径保存到数据库中,通过url?id=123的方式下载文件
上一篇
下一篇