任意文件读取漏洞 (Arbitrary File Read/Download Vulnerability)

任意文件读取漏洞

文章目录

  • 任意文件读取漏洞
    • 漏洞场景
    • 漏洞危害
    • 漏洞分类
    • 任意文件读取
      • 重要函数
        • readfile()
        • file_get_contents()
        • fread()
        • $_GET任意文件读取
    • 任意文件下载
      • html实现a标签
      • PHP实现
      • 任意文件下载
    • 任意⽂件读取攻防
      • 过滤../
        • 防守
        • 绕过
    • 任意文件读取挖掘
    • 漏洞防御

​ 一些网站的需求,可能会提供文件查看与下载的功能。如果对用户查看或下载的文件没有限制或者限制绕过,就可以查看或下载任意文件。这些文件可以是源代码文件,配置文件,敏感文件等等

  • 任意文件读取会造成(敏感) 信息泄露;
  • 任意文件读取大多数情况是由于其他漏洞引发的,如RCE、目录遍历、文件包含等
  • 任意文件读取与任意文件下载本质上没有区别,信息都是从服务端流向浏览器的

​ 任意文件读取与下载可能形式不同,但是从本质上讲读取与下载没有区别,从权限角度来讲,读取与下载都需要读权

漏洞场景

  • 存在读取文件的功能或函数,也就是web开放了文件读取功能
  • 读取文件的路径客户端可控,完全控制或影响文件路径参数
  • 没有对文件路径进行校验或者校验不严导致校验被绕过
  • 输出了文件的内容

漏洞危害

下载服务器任意文件,包括源代码文件、系统敏感文件、配置文件等等
可以配合其他漏洞,构成完整攻击链
对源代码文件进行代码审计,查找更多的漏洞
任意文件读取与下载重点关注的文件:

  • 源代码
  • 配置文件
  • 敏感文件
  • 日志文件

漏洞分类

  • 任意文件读取

  • 任意文件下载

任意文件读取

重要函数

readfile()

功能:

  • 直接读取文件内容
  • 自带输入功能
$path="";
readfile($path);

在这里插入图片描述

file_get_contents()

功能:

  • 直接读取文件内容
  • 需要输出读取内容

要绝对路径,如果页面空白查看源代码

$path="";
echo file_get_content($path)

在这里插入图片描述

fread()

功能:

  • 打开文件
  • 计算文件大小
  • 读取文件
  • 输出文件
  • 关闭文件

使用方法分三步

打开

读取

关闭

$path="";
$f= fopen($path,"r");
echo fread($f,1024) //需要加字节数
fclose($f);

在这里插入图片描述

$path="";
$f=fopen($$path,"r");
$f_size=filesize($path);//读取字节数
echo fread($f,$f_size);
fcose($f);

在这里插入图片描述

$_GET任意文件读取
$path=@$_GET['filepath'];

如果说服务器限制必须需要绝对路径可以加一堆…/…/ 因为根目录就没有上级了,达到文件读取的目的
在这里插入图片描述

任意文件下载

条件:

  • 已知目标文件路径
  • 目标文件路径,客户端可控
  • 没有经过校验或检验不严格

html实现a标签

<a href='路径'  target="_blank">文件下载</a>

在这里插入图片描述
跳转右键另存为
在这里插入图片描述

PHP实现

$path="";
header("Content-Type:image/jpg(文件类型)");
header('Content-Disposition:attachment;fileName='.basename($path));
readfile($path)

在这里插入图片描述

任意文件下载

$path = $_GET['filepath'];

在这里插入图片描述
在这里插入图片描述

任意⽂件读取攻防

过滤…/

防守
$path = @$_GET['filepath'];
$path = str_replace("../","",$path);
readfile($path);
绕过
  • 使用绝对路径 C:/windows/users/…
  • 双写绕过 …/…/./…/./etc/passwd
  • 在windows环境下可以尝试…\ 使用反斜杠,因为windows的包容性斜杠和反斜杠都能识别

任意文件读取挖掘

从⽂件名上看

  • readfile.php
  • filedownload.php
  • filelist.php

从参数名上看

  • f=
  • file=
  • filepath=
  • fp=
  • readfile=
  • path=
  • readpath=
  • url=
  • menu=
  • META-INF=
  • WEB-INF=
  • content=

漏洞防御

  1. 添加输入验证,让 web 用户只能访问(读取),所需要的文件和路径。

  2. 不能有文件包含漏洞,目录遍历漏洞或其他漏洞。因为漏洞会引发连锁

  3. 限定文件访问范围,让用户不能访问 Web 根目录以外的路径。

    open_basedir = c:\www\
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/145205.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

十年测试告诉你35岁测试程序员,互联网技术岗,何去何从?

今年的就业情形&#xff0c;想必大家都深有感触。企业裁员&#xff0c;求职市场岗位大幅减少&#xff1b;薪资降低&#xff0c;岗位能力要求越来越高&#xff1b;好像一瞬间大家都从万米高空坠落&#xff0c;失重带来的眩晕和迷茫&#xff0c;让求职者和招聘企业都显得有点手忙…

路由器ipsec|vpn实验分析

AR1 和 AR2代表两个公司的出口&#xff0c;R2模拟互联&#xff0c;两个公司通信&#xff0c;通过ipsec vpn 加密隧道进行业务通信 切记&#xff1a;ipsec 路由器一定用AR系列&#xff0c;千万别用R&#xff0c;否则会给你惊喜 R2只有接口配ip&#xff0c;无任何配置&#xff…

【Err】jetBrains远程开发报错:Failed to exec spawn helper: pid: 18310, exit value: 1

最近双11阿里云打折&#xff0c;买了台服务器做了下远程开发环境&#xff0c;在IDEA远程开发时遇到了个问题&#xff0c;导致项目启动失败&#xff0c;报错如下&#xff1a; JetBrains远程开发报错 Failed to exec spawn helper: pid: 18310, exit value: 1 &#xff08;我改好…

解析SQL 获取表、字段及SQL查询参数

解析SQL 获取表、字段及SQL查询参数 1. 执行效果2. 使用2.1 引入依赖2.2 相关实体2.3 工具类 1. 执行效果 2. 使用 2.1 引入依赖 <!-- sql 解析处理--><dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifa…

Potrace:一个基于多边形的跟踪算法

Potrace算法通过几个步骤将位图转换为矢量轮廓。 第一步&#xff0c;将位图分解为若干条路径&#xff0c;在黑白区域间形成边界。 在第二步中&#xff0c;每条路径由一个最优多边形逼近。 在第三步中&#xff0c;每个多边形被转换成光滑的轮廓。 在可选的第四步中&#xff0c;通…

【管理运筹学】运筹学“背诵手册”(二) | 对偶理论与灵敏度分析

二、对偶理论与灵敏度分析 用矩阵形式表示原问题和对偶问题&#xff1a; max ⁡ z C X s . t . { A X ≤ b X ≥ 0 \max z\pmb{CX}\\ s.t.\begin{cases} \pmb{AX\leq b} \\ \pmb{X}\geq\pmb{0} \end{cases} maxzCXs.t.{AX≤bX≥0​ 其中 C ( c 1 , c 2 , ⋯ , c n ) , X (…

Java入门篇 之 继承

本篇碎碎念&#xff1a;最近的课程遇到瓶颈了&#xff0c;看的时候感觉自己会了&#xff0c;但是结束仔细一回顾还是一知半解&#xff0c;一点一点来吧&#xff0c;基础必须要打好(自己给自己好的心里暗示&#xff0c;结局一定是好的) 今日份励志文案:慢慢改变&#xff0c;慢慢…

四、Ribbon负载均衡

目录 一、负载均衡流程 1、我通过浏览器直接访问userservice/user/1&#xff0c;无法访问&#xff0c;说明是负载均衡做了相应的处理 2、我们来看一下代码中负载均衡的流程是怎样的 3、图像流程 二、负载均衡策略 1、修改负载均衡策略 &#xff08;方式一&#xff09; &a…

Spring面试题:(七)Spring AOP思想及实现

AOP思想的概念 AOP的实现&#xff1a;动态代理技术 通过spring容器获取目标对象和增强对象&#xff0c;通过动态代理生产代理对象&#xff0c;在目标对象的目标方法执行增强方法&#xff0c;返回生成代理对象给spring容器&#xff0c;在获取bean时则获取代理对象。 JDK代理和…

【源码运行打包】kkFileView 下载与安装

目录导航 1、源码下载2、IDEA部署2.1、克隆代码2.2、配置maven2.3、下载依赖报错2.4、执行maven打包 3、Centos7.9部署启动3.1、环境要求3.2、部署jdk环境3.3、上传部署包3.4、解压部署包3.5、访问测试3.6、解决乱码 4、使用指南5、部署包下载 文件预览服务 kkFileView &#x…

【Spring进阶系列丨第一篇】初识Spring开发

前言 小伙伴们大家好&#xff0c;我是陈橘又青&#xff0c;今天起 《Spring进阶系列》 开始更新。本专栏将涵盖Spring框架的核心概念、配置管理、Web开发、AOP、Boot、Security、Data、Integration和Batch等多个主题。通过理论讲解和实际案例的剖析&#xff0c;帮助读者深入理解…

【Linux】Ubuntu16.04下完美安装python高版本及对应版本的pip

Ubuntu16.04下完美安装python高版本及对应版本的pip 方法一:直接用命令安装python3.6&#xff08;但我没安装成功&#xff09; 好像是因为Ubuntu16.04的软件仓库&#xff08;源&#xff09;中python的最高版本就是python3.5&#xff0c;所以无法直接用apt来安装 #方法一 sudo…

金财数科无代码开发平台:轻松实现电商、CRM、广告推广系统的集成连接

连接与集成&#xff1a;挖掘电商平台的潜力 金财数科是一家领先的信息技术公司&#xff0c;专注于利用前沿技术如互联网、人工智能、大数据和区块链等&#xff0c;为传统财税信息化方案和产品提供升级改造&#xff0c;并打造新一代智能财税SaaS平台。我们的目标是帮助企业通过…

Nodejs操作缓存数据库-Redis

Hi I’m Shendi Nodejs专栏 Nodejs操作缓存数据库-Redis 在服务端开发中&#xff0c;缓存数据库也是不可或缺的&#xff0c;可以提高程序并发以及方便后续扩展&#xff0c;而目前最常用的莫过于Redis了 安装依赖 和之前的mysql一样&#xff0c;redis的依赖最常用的就是redis …

ViewPager2和TabLayout协同使用,实现多Fragment页面切换类似于QQ音乐,bilibili效果

一、ViewPager2的基本用法 使用前先添加依赖&#xff1a; implementation androidx.appcompat:appcompat:1.4.0 // AndroidX AppCompatimplementation com.google.android.material:material:1.4.0 // Material Design Components1、制作Fragment 首先制作一个Fragment的xml布…

Jmeter控制RPS

一、前言 ​ RPS (Request Per Second)一般用来衡量服务端的吞吐量&#xff0c;相比于并发模式&#xff0c;更适合用来摸底服务端的性能。我们可以通过使用 JMeter 的常数吞吐量定时器来限制每个线程的RPS。对于RPS&#xff0c;我们可以把他理解为我们的TPS&#xff0c;我们就不…

2021年06月 Scratch(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题(共25题,每题2分,共50分) 第1题 小猫位置在舞台中心,点击一次小猫后能前进10步的程序为? A: B: C: D: 答案:B 第2题 快速切换到下一个背景图片应该使用哪个积木? A: B:

Docker Desktop 开启失败 Unexcept WSL Error

Docker Desktop 开启失败 Unexcept WSL Error 原因 原因 安装了安卓模拟器&#xff0c;然后导致 WSL 起不来&#xff0c;尝试如下都没用 重置代理 —— netsh winsock resetBIOS 关闭、重启、再重新打开 CPU 虚拟化关闭 hyper-v、windows subsystem for linux 再重启 再开启卸…

基于引力搜索算法优化概率神经网络PNN的分类预测 - 附代码

基于引力搜索算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于引力搜索算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于引力搜索优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

spring cloud 简介

springcloud 定义 1.定义&#xff1a;springcloud为开发人员提供了在分布式系统中快速构建一些通用模式的工具&#xff08;例如配置管理、服务发现、断路器、路由、控制总线等&#xff09;2.微服务:基于单体应用&#xff0c;基于业务进行拆分&#xff0c;每个服务都是独立应用…