任意文件读取与下载漏洞
任意文件读取与下载漏洞
任意文件读取与下载又名不安全的文件下载,一些网站的业务需要,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,就能够查看或下载任意的文件,可以是源文件,敏感文件等等。
通过任意文件下载,可以下载服务器的任意文件,web 业务的代码,服务器和系统的具体配置信息,也可以下载数据库的配置信息,以及对内网的信息探测等等
利用方式
通过文件下载,可以下载操作系统的敏感文件。如/etc/passwd 文件
192.168.0.103/06/vul/unsafedownload/execdownload.php?filename=../../../../../../../etc/passwd
常见的敏感文件
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 系统常用系数
/etc/passwd /etc/shadow /etc/hosts /root/.bash_history //root 的 bash 历史记录 /root/.ssh/authorized_keys /root/.mysql_history //mysql 的 bash 历史记录 /root/.wget-hsts /opt/nginx/conf/nginx.conf //nginx 的配置文件 /var/www/html/index.html /etc/my.cnf /etc/httpd/conf/httpd.conf //httpd 的配置文件 /proc/self/fd/fd[0-9]*(文件标识符) /proc/mounts /porc/config.gz /proc/sched_debug // 提供 cpu 上正在运行的进程信息,可以获得进程的 pid 号,可以配合后面需要 pid的利用 /proc/mounts // 挂载的文件系统列表 /proc/net/arp //arp 表,可以获得内网其他机器的地址 /proc/net/route //路由表信息 /proc/net/tcp and /proc/net/udp // 活动连接的信息 /proc/net/fib_trie // 路由缓存 /proc/version // 内核版本 /proc/[PID]/cmdline // 可能包含有用的路径信息 /proc/[PID]/environ // 程序运行的环境变量信息,可以用来包含 getshell /proc/[PID]/cwd // 当前进程的工作目录 /proc/[PID]/fd/[#] // 访问 file descriptors,某写情况可以读取到进程正在使用的文件,比如access.log SSH文件 /root/.ssh/id_rsa /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys /etc/ssh/sshd_config /var/log/secure /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/syscomfig/network-scripts/ifcfg-eth1
防御方式
1.过滤点(.)使用户在 url 中不能回溯上级目录
2.正则严格判断用户输入参数的格式
3.php.ini 配置 open_basedir 限定文件访问范围
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效