pikachu靶场-Unsafe Filedownload

news2025/1/10 20:37:53

不安全的文件下载

文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。 如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞。
此时如果 攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(比如../../../etc/passwd),则很有可能会直接将该指定的文件下载下来。 从而导致后台敏感信息(密码文件、源代码等)被下载。

所以,在设计文件下载功能时,如果下载的目标文件是由前端传进来的,则一定要对传进来的文件进行安全考虑。

切记:所有与前端交互的数据都是不安全的,不能掉以轻心!

1.漏洞描述


一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意敏感文件,这就是文件查看与下载漏洞。

2.漏洞原理


给用户提供了一个下载的功能,并能接收相关的参数变量

开发时候,使用了读去文件的相关函数

对前端用户读取文件请求,没有进行相应的控制或控制不严(限制、校验)

能输出请求文件的内容,提供给前端下载

3.漏洞危害


可以下载服务器的任意文件:

获得网站web源码,再对代码进行审计,以获得更多的漏洞

获得网站、服务器、系统、数据库等中间件配置文件

获得应用于系统配置文件

对内网的信息进行一个探测

下载各种.log文件,并寻找后台地址、文件上传点等地方

4.漏洞发现


通过web漏洞扫描工具对网站实施扫描可能发现任意文件读取/下载漏洞,发送一系列”…/”字符来遍历高层目录,并且尝试找到系统的配置文件或者系统中存在的敏感文件。

也可通过判断网站语言,并根据其url中部分提供的参数,进行构造相关的路径信息,如收集到网站中间件版本为apache,则想办法构造…/…/…/ WEB-INF/web.xml等,然后查看其是否可被读取或者下载出来。

有些WAF会过滤…/,可以构造 /.%252e/.%252e/.%252e/ , %25对应的是%,%2e对应的是.,所以 .%252e/ 对应的是 …/

5.如何防御


净化数据:对用户传过来的文件名参数进行统一编码,对文件类型进行白名单控制,对包含恶意字符或者空字符的参数进行拒绝。
任意文件下载漏洞也有可能是web所采用的中间件的版本低而导致问题的产生,例如ibm的websphere的任意文件下载漏洞,需更新其中间件的版本可修复。
要下载的文件地址保存至数据库中。
文件路径保存至数据库,让用户提交文件对应ID下载文件。
用户下载文件之前需要进行权限判断,open_basedir 中可以设置访问权限
文件放在web无法直接访问的目录下。
将.过滤,不允许提供目录遍历服务。
公开文件可放置在web应用程序下载目录中通过链接进行下载。
 

1.Unsafe file download

点击一个图片下面的人名,即可进行下载

我们可以看到超链接这里有一个filename的参数

http://xxx/vul/unsafedownload/execdownload.php?filename=rayal.png

 对这个参数进行修改

我们成功把下载的界面给下载了

 继续尝试一下其他的东西

发现可以下载到/etc/passwd

漏洞利用成功

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql数据库基础知识总复习

前言 小亭子正在努力的学习编程,接下来将开启javaEE的学习~~ 分享的文章都是学习的笔记和感悟,如有不妥之处希望大佬们批评指正~~ 同时如果本文对你有帮助的话,烦请点赞关注支持一波, 感激不尽~~ 目录 数据库基础知识 数据,数据…

GPT是什么,GPT-4是什么

GPT是Generative Pre-trained Transformer的缩写,是一种人工智能语言模型。为了实现自然语言生成和文本补全等功能,通过训练大规模数据集,GPT模型可以预测某个词或文本的下一个可能的词或文本。GPT是由OpenAI团队推出的,目前已经推…

如何用 GPT-4 帮你写游戏?

你知道的,GPT-4 发布了。 目前你想要用上 GPT-4,主要的渠道是 ChatGPT Plus 。作为交了订阅费的用户,你可以在对话的时候选择模型来使用。 另一种渠道,就是申请官方 API 的排队。我在申请 New Bing Chat 的时候,耐心被…

完成A轮融资,倍思如何发力场景化为品牌创造广阔未来?

凛冬过后的消费电子正在重新凝聚资本的目光。 近日,深圳市倍思科技有限公司宣布完成由深创投、中金资本联合领投,越秀产业基金、高榕资本跟投,金额数亿元人民币的A轮融资。 分析人士指出,消费电子的行业景气度在逐渐恢复&#x…

LeetCode 1376. Time Needed to Inform All Employees【自顶向下,自底向上(记忆化搜索+空间优化+迭代)】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

Java+springboot开发的医院HIS信息管理系统实现,系统部署于云端,支持多租户SaaS模式

一、项目技术框架 前端:AngularNginx 后台:JavaSpring,SpringBoot,SpringMVC,SpringSecurity,MyBatisPlus,等 数据库:MySQL MyCat 缓存:RedisJ2Cache 消息队列&…

JVM-类的加载机制

目录 一、类的生命周期二、类加载的过程三、类加载的时机四、类加载器五、双亲委派模型六、自定义类加载器 一、类的生命周期 当编写完一个 java 类之后,经过编译就能够得到一个 .class(字节码)文件,这种字节码文件需要在 JVM 中…

递归思路讲解

最近刷到了树这一模块的算法题,树相关的算法题几乎都是用递归来实现的,但递归的思路却有点抽象,每次遇到递归,都是通过递归来深度或广度地遍历树,但对于递归遍历树的遍历路线,却有点抽象难懂,不…

基于simulink使用射频模块集天线块对天线阵列的射频系统进行建模

一、前言 本 例 说明 如何 对 包括 天线 阵列 的 MIMO 接收 和 发射 RF 系统 进行 建模。该设计从单个RF链的预算分析开始,然后扩展到多个天线。RF Blockset 天线模块对天线阵列进行全波分析,支持对效应和缺陷进行高保真建模,并结合射频系统的…

2023年的深度学习入门指南(3) - 前端同学如何进行chatgpt开发

2023年的深度学习入门指南(3) - 前端同学如何进行chatgpt开发 在第二篇,我们使用openai的python库封装,搞得它有点像之前学习的PyTorch一样的库。这一节我们专门给它正下名,前端就是字面意义上的前端。 给gpt4写前端 下面我们写一个最土的…

【Web】前端框架对微软老旧浏览器的支持

零、原因 最近要做一个项目,要能在学校机房运行的,也要在手机上运行。电脑和手机,一次性开发,那最好的就是响应式前端框架了。手机和正常的电脑兼容性问题应该都不大,但是学校机房都是Win7的系统,自带的都…

【Linux内核解析-linux-5.14.10-内核源码注释】MM内存管理内核启动初始化源码解析

源码 这是Linux内核中的mm_init函数的代码,其作用是初始化内存管理相关的组件和数据结构。 static: 这是一个函数声明修饰符,表示该函数只在当前文件中可见。 void __init: 这是函数的返回类型和修饰符,表示该函数是内核初始化代码。 page…

SpringCloud详解

SpringCloud是一个基于SpringBoot的分布式系统开发框架,它能够帮助我们快速、稳定地构建分布式系统。本篇博客将对SpringCloud进行详细解析,介绍SpringCloud的主要组件和相关应用场景,同时提供代码示例以帮助读者更好地掌握SpringCloud的实际…

nodejs+vue学生考勤请假管理系统java python php

用户登录模块:用来区分二种用户,学生、管理员。 个人信息管理:用户登录后可以修改用户表中的个人信息。 主页模块:在信息表中读取信息并按照一定模板显示在首页。 信息搜索模块:将信息表中所有信息的标题或内容关键字与…

析构函数/拷贝构造/赋值重载

析构函数: // 析构函数~Stack(){_top 0;_capacity 0;free(_a);_a nullptr;} 1 、2两点与构造函数类似。 3、当我们未显示定义时,编译器会自动生成默认的析构函数。C中,对于内置类型不进行任何处理,对于自定义类型&#xff0…

【SAS应用统计分析】方差分析

声明:本文知识参考内容来自网络,如有侵权请联系删除。 目录 【anova过程】 1.anova过程的语句格式 2.语句说明 【glm过程】 1.glm过程的语句格式 2.语句说明 【实例分析】 【实验步骤】 总结 【anova过程】 SAS系统的START软件提供了anova过程…

TensorRT:自定义插件学习与实践 001

文章简述 本文简单列出了编写Tensorrt插件所需要的关键方法,分为两个部分,一是插件类的具体实现方法,另外是插件工厂的调用方法,插件类最终将编译为.so文件,使用时在c或python中调用,所以插件类的方法调用在其他部分,在本文中难以直观的体现调…

PyQt5

最近在学习pyqt5, 使用pyqt5的时候出现了一些莫名奇妙的问题,解决之后决定把它记录下来,方面pyqt5的初学者使用。 每个问题会按照如下方式进行描述 1、问题描述: 2、解决方法: 问题1: 使用pyinstaller打…

计算机网络笔记:TCP三次握手和四次挥手过程

TCP是面向连接的协议,连接的建立和释放是每一次面向连接的通信中必不可少的过程。TCP连接的管理就是使连接的建立和释放都能正常地进行。 三次握手 TCP连接的建立—三次握手建立TCP连接 ① 若主机A中运行了一个客户进程,当它需要主机B的服务时&#xff0…

迁移学习

迁移学习 什么是迁移学习 迁移学习【斯坦福21秋季:实用机器学习中文版】 迁移学习(Transfer Learning)是一种机器学习方法,它通过将一个领域中的知识和经验迁移到另一个相关领域中,来加速和改进新领域的学习和解决问…