【Web安全攻防从入门到精通】任意文件下载漏洞

任意文件下载漏洞

概述

网站由于业务需求,提供文件查看或下载功能,如果对用户查看或下载的文件不做限制,恶意用户就能够查看或下载任意文件,任意文件类型包含源代码文件、敏感文件等。

利用条件

  • 存在读文件的函数
  • 读取文件的路径可控且未校验或校验不严
  • 输出了文件内容

常见敏感文件路径

Windows:
C:\boot.ini                                      //查看系统版本
C:\Windows\System32\inetsrv\MetaBase.xml         //IIS配置文件
C:\Windows\repair\sam                            //存储系统初次安装的密码
C:\Program Files\MySQL\my.ini                    //MySQL配置
C:\Program Files\MySQL\data\MySQL\user.MYD       //MySQL root
C:\Windows\php.ini                               //php配置信息
C:\Windows\my.ini                                //MySQL配置信息
...
Linux:
/root/.ssh/authorized_keys
/root/.ssh/id_rsa
/root/.ssh/id_ras.keystore
/root/.ssh/known_hosts
/etc/passwd                                      //密码文件信息
/etc/shadow                                      //影子文件信息
/etc/my.cnf                                      //MySQL文件
/etc/httpd/conf/httpd.conf                       
/root/.bash_history                              //操作历史文件信息
/root/.MySQL_history                             //MySQL操作历史文件信息
/proc/self/fd/fd[0-9]*(文件标识符)
/proc/mounts
/proc/config.gz

修复方案

  1. 过滤../ ./ 等敏感字符,使用户在URL中不能回溯上级目录

Windows中可用..\来绕过

  1. 文件下载时判断输入的路径,最好的方法是文件应该在数据库中一一对应,避免通过输入绝对路径来获取文件
  2. php.ini配置open_basedir限定文件访问范围
posted @ 2022-10-30 09:30  灰心爷爷  阅读(370)  评论(0编辑  收藏  举报