欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

文件读取下载

发布时间:2024/1/1 编程问答 52 豆豆
生活随笔 收集整理的这篇文章主要介绍了 文件读取下载 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

概述

一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意敏感文件,这就是文件查看与下载漏洞

漏洞产生原因

  • 存在读取下载文件的函数
  • 存在文件输出和下载功能
  • 读取下载文件的路径用户可控,且未校验或校验不严

文件读取函数 readfile()、file_get_contents()、fopen()

漏洞危害

  • 下载常规的配置文件,服务器及系统配置文件。例如: ssh,weblogic,ftp,mysql等相关配置
  • 下载各种.log文件,从中寻找一些后台地址,文件上传点之类的地方,如果运气好的话会获得一些前辈们的后门。
  • 下载web业务文件进行白盒审计,利用漏洞进一步攻入服务器。

漏洞挖掘

  • 通过web漏洞扫描工具对网站实施扫描可能发现任意文件读取/下载漏洞,发送一系列”…/”字符来遍历高层目录,并且尝试找到系统的配置文件或者系统中存在的敏感文件。
  • 也可通过判断网站语言,并根据其url中部分提供的参数,进行构造相关的路径信息,如收集到网站中间件版本为apache,则想办法构造…/…/…/ WEB-INF/web.xml等,然后查看其是否可被读取或者下载出来。
  • 有些WAF会过滤…/,可以构造 /.%252e/.%252e/.%252e/ , %25对应的是%,%2e对应的是.,所以 .%252e/ 对应的是 …/

漏洞防御

  • 过滤“.(点)”,使用户在url中不能回溯上级目录
  • 正则严格判断用户输入参数的格式
  • 配置限定文件访问范围,目录权限设置或单独文件权限设置
  • 将下载区独立出来,放在项目路径外,给每个下载资源固定的URL,而不是所有的下载资源都是统一的URL:http://www.test.com/download?filename=文件名
  • 净化数据:对用户传过来的文件名参数进行硬编码或统一编码,对文件类型进行白名单控制,对包含恶意字符或者空字符的参数进行拒绝。
  • 用户下载文件之前需要进行权限判断。
  • 文件放在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配置信息
C:\Windows\win.ini //Windows系统的一个基本系统配置文件

Linux
/root/.ssh/authorized_keys //如需登录到远程主机,需要到.ssh目录下,新建authorized_keys文件,并将id_rsa.pub内容复制进去
/root/.ssh/id_rsa //ssh私钥,ssh公钥是id_rsa.pub
/root/.ssh/id_ras.keystore //记录每个访问计算机用户的公钥
/root/.ssh/known_hosts //记录每个访问计算机用户的公钥
/etc/passwd //账户信息
/etc/shadow //账户密码文件
/etc/my.cnf //mysql配置文件
/root/.bash_history //用户历史命令记录文件
/root/.mysql_history //mysql历史命令记录文件
/var/lib/mlocate/mlocate.db //全文件路径

参考# [目录浏览(目录遍历)漏洞和任意文件读取/下载漏洞]
# 浅析文件读取与下载漏洞

总结

以上是生活随笔为你收集整理的文件读取下载的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。