当前位置: 首页 > news >正文

文件下载漏洞, 漏洞原理, 测试方法, 漏洞防御, 常见敏感路径

文件下载漏洞

一, 文件下载漏洞原理

利用条件:
1. 读取文件的路径是用户可控, 且没有校验或检验不严.
2. 使用了读取文件的函数.
3. 输出了文件内容.

漏洞场景一:

后端没有限制哪些路径的文件可以下载

后端代码:

http://192.168.112.200/security/download.php

$file_path = $_GET['filename'];
echo file_get_contents($file_path); // 直接在页面上显示文件内容
Header("Content-type: application/octet-stream"); // 设置响应头为下载而不是读取内容
// 下载后的文件名, 如果不设置默认名称是download.php
Header("Content-Disposition: attachment; filename=".basename($file_path)); 

重点是添加上 "Content-type: application/octet-stream" 响应头后, 向服务器请求的文件就变成自动下载.

漏洞利用:

这里filename参数是用户可控的, 通过这个参数就可以下载其他目录文件, 比如下载passwd文件:

http://192.168.112.200/security/download.php?filename=/etc/passwd

或利用../回溯上级目录, 无论当前在哪一级目录都可能回溯到根目录:

http://192.168.112.200/security/download.php?filename=../../../../../../etc/passwd

漏洞场景二:

后端限制文件允许下载的目录

后端代码:
// 对提交的文件路径前面做了目录拼接, 只允许下载upload目录内的文件
$file_path = "upload/{$_GET['filename']}";if(!file_exists($file_path)){die("你要下载的文件不存在,请重新下载");
}$fp = fopen($file_path, "rb");
$file_size = filesize($file_path);//下载文件需要的响应头
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length:".$file_size);
Header("Content-Disposition: attachment; filename=".basename($file_path));// 当文件较大时, 需要循环读取文件流,然后返回到浏览器
// feof() 函数确认是否读到了末尾EOF
$buffer = 1024; // 每次读取的大小
$file_count = 0; 
while(!feof($fp) && $file_count<$file_size){$file_con = fread($fp,$buffer);echo $file_con;$file_count += $buffer;
}
fclose($fp);
漏洞利用:

这里如果直接提交upload之外的路径文件读取不到, 例如:

http://192.168.112.200/security/download.php?filename=/etc/passwd

那么后端拼接之后是: upload/etc/passwd, 读取不到.

使用../回溯上级目录绕过:

http://192.168.112.200/security/download.php?filename=/../../../../../../../etc/passwd

那么后端拼接之后是: upload//…/…/…/…/…/…/…/etc/passwd

二, 文件下载漏洞的测试方法.

  1. 发送文件资源请求, 抓包观察参数, 是否有 file, filename, page, url, path 等名称, 可能是文件路径参数.
  2. 尝试提交 ../../../../../etc/passwd类似的参数来下载常见的系统敏感文件, 如果成功说明存在漏洞.

三, 文件下载漏洞防御:

  1. 过滤特殊的字符点 ".", 避免用户在url中可以回溯上级目录.
  2. 对用户输入的参数做严格打的正则校验, 限制访问的目录.
  3. 在php.ini文件中配置 open_basedir , 限制文件访问的目录.

四, 常见的系统敏感路径文件:

# linux:
/root/.ssh/authorized_keys					//ssh登录认证文件
/root/.ssh/id_rsa							//公钥文件
/root/.ssh/id_rsa.keystore					//密钥存放文件
/root/.ssh/known_hosts						//已访问过的主机公钥记录文件
/etc/passwd									//用户信息
/etc/shadow									//密码存放文件
/etc/my.cnf									//mysql配置文件
/etc/httpd/conf/httpd.conf					//apache配黑文件
/root/.bash_history							//记录系统历史命令文件
/root/.mysq1_history						//记录数据库历史命令文件
/proc/self/fd/fd[0-9](文件标识符)			//连接当前正运行的进程
/proc/mounts								//已挂载的文件系统信息
/porc/config.gz								//内核配置文件# windows:
C:\boot.ini									//查看系统版本
C:windows\win.ini							//基本系统配置文件
C:\windows\System32\inetsrv\MetaBase.xm]	//IIS配需文件
C:\windows\repair\sam						//存储系统初次安装的密码
C:\ProgramFiles\mysq1\my.ini				//Mysql配置
C:\ProgramFiles mysq1\data\mysq]\user.MYD	//Mysqlroot
C:\windows\php.ini							//php配置信息
C:\windows\my.ini							//Mysql配置信息

五, 常见的网络服务器敏感路径文件

1. tomcat, jsp
1. tomcat-users.xm1(用户配置文件)tomcat-users.xm]认在conf目录下,或许可以直接使用下戟点下载该文件。http://目标网站/down.isp?filename=tomcat-users.xml&path=C:/Program Files/Apache SoftwareFoundation/Tomcat 6.0/conf/tomcat-users.xm]2. web.xm](网站配器文件》Jsp网站配黑文件默认放在根目录WEB-INF/Web.xm下(一般都有很多内容有时含有数据库连接用户名和密码等关键信息)http://目标站点/file.do?method=downFile&fileName=../WEB-INF/Web.xml
2. php

php一般是mysq1数据库,一般mysq1数据库禁止远程连接,但是有些站点会使用使用phpMyAdmin进行管理。
下载数据库配置文件:

http://目标站点/download.php?filename=../conf/config.php&dir=/&title=config.php
3. asp
http://目标站点/download.asp?filename=../../inc/conn.asp(数据库配置文件)
http://目标站点/download.asp?filename=../../download.asp(网站配置文件)
http://目标站点/download.asp?filename=../../Admin_login.asp(用户登录界面)
http://目标站点/database/xxxx.mdb(数据库路径)
4. aspx
web.config文件《网站配置文件)
aspx站点用根目录下的web.config文件保存配置信息,尝试构造确定根目录:http://目标站点/DownLoadFileLow.aspx?FileName=../web.config

相关文章:

文件下载漏洞, 漏洞原理, 测试方法, 漏洞防御, 常见敏感路径

文件下载漏洞 一, 文件下载漏洞原理 利用条件: 1. 读取文件的路径是用户可控, 且没有校验或检验不严. 2. 使用了读取文件的函数. 3. 输出了文件内容.漏洞场景一: 后端没有限制哪些路径的文件可以下载 后端代码: http://192.168.112.200/security/download.php $file_pat…...

【零参考GAN:Pansharpening】

ZeRGAN: Zero-Reference GAN for Fusion of Multispectral and Panchromatic Images &#xff08;用于多光谱和全色图像融合的零参考GAN&#xff09; 本文提出了一种融合低空间分辨率多光谱(LR MS)和高空间分辨率全色(PAN)图像的新的全色锐化方法–零参考生成对抗网络(ZeRGAN…...

Nacos 注册中心介绍与实操

前言 本文为个人SpringCloud学习笔记&#xff0c;主要记录Nacos的注册中心实操、SpringBoot多模块编程实操等 注册中心 注册中心介绍 注册中心是微服务的一个重要组件&#xff0c;用于实现服务的注册与发现&#xff0c;主要作用包括以下&#xff1a; 服务注册&#xff1a;…...

基于51单片机的智能手机充电器设计

**单片机设计介绍&#xff0c;1660【毕设课设】基于51单片机和MAX1898的智能手机充电器设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 51单片机智能手机充电器设计介绍 51单片机智能手机充电器是一种可以实现智能快速充电的…...

nginx 和gateway配置实现动静分离和反向代理

这两个配置文件分别是Nginx和Spring Cloud Gateway的配置文件&#xff0c;它们用于构建网关服务&#xff0c;进行请求的路由和转发。 前端发送请求的时候为了不暴露服务器地址,所以会使用nginx做反向代理的一个主要作用是隐藏后端服务器的真实地址&#xff0c;从而增加网络安全…...

【深度学习实验】网络优化与正则化(二):基于自适应学习率的优化算法详解:Adagrad、Adadelta、RMSprop

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入必要的库1. 随机梯度下降SGD算法a. PyTorch中的SGD优化器b. 使用SGD优化器的前馈神经网络 2.随机梯度下降的改进方法a. 学习率调整b. 梯度估计修正 3. 梯度估计修正&#xff1a;动量法Momen…...

系统韧性研究(3)| 工程系统韧性要求

从最基本的层面上说&#xff0c;系统韧性指的是系统在逆境中继续执行其任务的程度。虽然对操作连续性至关重要&#xff0c;但系统的服务&#xff08;能力&#xff09;只是系统继续执行其任务所必须保护的一些资产。该系统必须检测不利因素&#xff0c;对其作出反应&#xff0c;…...

.net 5 发布后swagger页面不显示问题

1&#xff1a;项目右键属性-》生成xml--用于swagger文件读取 2&#xff1a;开启文件配饰swagger读取指定文件...

Spring Boot 3 整合 xxl-job 实现分布式定时任务调度,结合 Docker 容器化部署(图文指南)

目录 前言初始化数据库Docker 部署 xxl-job下载镜像创建容器并运行访问调度中心 SpringBoot 整合 xxl-jobpom.xmlapplication.ymlXxlJobConfig.java执行器注册查看 定时任务测试添加测试任务配置定时任务测试结果 结语附录xxl-job 官方文档xxl-job 源码测试项目源码 前言 xxl-…...

1985-2020年我国30m土地利用覆盖数据介绍

土地覆盖(LC)决定了地球各圈层之间的能量交换、水和碳循环。准确的 LC 信息是环境和气候研究的基本参数。考虑到在过去几十年中&#xff0c;随着经济建设的发展&#xff0c;中国发生了巨大的变化&#xff0c;连续和精细的 LC 监测是迫切需要的。然而&#xff0c;目前&#xff0…...

Django 社区志愿者管理系统

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 社区志愿者服务管理系统&#xff0c;主要的模块包括查看首页、个人中心、通知公告管理、志愿者管理、普通管理员管理、志愿活动管理、活动宣…...

wordpress如何修改数据库里用户ID下一个自增值的开始数字

有时候我们为了让别人认为网站有很多注册用户&#xff0c;会想把网站用户ID的起始数改大一点&#xff0c;因为WP默认的用户ID是从1开始&#xff0c;注册一个就加1&#xff0c;这样别人就很容易知道网站的用户量。 那么如何改呢&#xff1f;首先进phpmyadmin&#xff0c;找到wp…...

利用chatgpt大语言模型来做数据预处理

数据预处理是机器学习中的一个重要步骤&#xff0c;包括数据清洗、数据转换、特征选择等。这些步骤通常需要人工进行&#xff0c;或者使用专门的数据预处理工具和库&#xff0c;如Python的Pandas库、Scikit-learn库等。 今天我们将利用chatgpt(国内版本-小策智能问答)的辅助帮…...

【机器学习】五、贝叶斯分类

我想说&#xff1a;“任何事件都是条件概率。”为什么呢&#xff1f;因为我认为&#xff0c;任何事件的发生都不是完全偶然的&#xff0c;它都会以其他事件的发生为基础。换句话说&#xff0c;条件概率就是在其他事件发生的基础上&#xff0c;某事件发生的概率。 条件概率是朴…...

k8s 资源管理方式

k8s中资源管理方式可以划分为下面的几种&#xff1a;命令式对象管理、命令式对象配置、声明式对象配置。 命令式对象管理 命令式对象管理&#xff1a;直接使用命令的方式来操作k8s资源, 这种方式操作简单&#xff0c;但是无法审计和追踪。 kubectl run nginx-pod --imagengi…...

Golang Gin 接口返回 Excel 文件

文章目录 1.Web 页面导出数据到文件由后台实现还是前端实现&#xff1f;2.Golang Excel 库选型3.后台实现示例4.xlsx 库的问题5.小结参考文献 1.Web 页面导出数据到文件由后台实现还是前端实现&#xff1f; Web 页面导出表数据到 Excel&#xff08;或其他格式&#xff09;可以…...

实战之巧用header头

案例&#xff1a; 遇到过三次 一次是更改accept&#xff0c;获取到tomcat的绝对路径&#xff0c;结合其他漏洞获取到shell。 一次是更改accept&#xff0c;越权获取到管理员的MD5加密&#xff0c;最后接管超管权限。 一次是更改accept&#xff0c;结合参数获取到key。 这里以越…...

[AUTOSAR][诊断管理][ECU][$36] 数据传输

文章目录 一、简介二、服务请求报文定义三、服务请求报文中参数定义(1)blockSequenceCounter(2)transferRequestParameterRecord三、肯定响应(1)blockSequenceCounter(2)transferResponseParameterRecord四、支持的NRC五、示例代码36_transfer_data.c一、简介 这个服务…...

sw 怎么装新版本

我们在安装solidworks时&#xff0c;有时候会提示A newer version of this applic ation is already installed. Installation stopped.如下图所示 这时候需要点继续安装 然后会出现下图所示情况&#xff0c;vba7.1安装未成功 这是因为我们电脑中以前安装过更高版本的solidw…...

正点原子嵌入式linux驱动开发——Linux 音频驱动

音频是最常用到的功能&#xff0c;音频也是linux和安卓的重点应用场合。STM32MP1带有SAI接口&#xff0c;正点原子的STM32MP1开发板通过此接口外接了一个CS42L51音频DAC芯片&#xff0c;本章就来学习一下如何使能CS42L51驱动&#xff0c;并且CS42L51通过芯片来完成音乐播放与录…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...