pikachu靶场-Unsafe Filedownload

news/2024/12/2 12:59:10/

不安全的文件下载

文件下载功能在很多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.ppmy.cn/news/59210.html

相关文章

2 行代码开启 SAST,将代码漏洞定位到具体行数

💡 如何在流水线中集成与应用 SAST,实现自动化代码安全扫描 ? 近日,在「DevSecOps软件安全开发实践」课程上,极狐(GitLab) 高级专业服务交付工程师欧阳希、极狐(GitLab) 后端工程师黄松,分享了静态安全扫描…

Android - 动画

一、概念 属性动画PeopertyAnimation:view的属性根据执行的动画发生真实的改变。通过不断设置 View 的属性实现。补间动画 ViewAnimation(Tween):不改变view的位置和属性。基于 Framework的绘制转变。帧动画 DrawableAnimation&a…

【网络原理】TCP/IP协议

目录 1.应用层 2.传输层(核心问题) 2.1 UDP协议 2.1.2 UDP的特点 2.1.3 基于UDP的应用层协议 2.2 TCP协议(重点内容) 2.2.1 TCP/IP 协议含义 2.2.2 TCP协议端格式: 2.2.3 TCP的特点 2.3 TCP原理 2.4 确认应…

Vue3中双向数据绑定与Pinia实践+JS数据引用的循环修改问题

Vue3 Pinia VUE3虽然出了很久了,但是很少深入研究,目前项目上遇到了一些问题,所以做个Note解决一下疑问: v-bind/v-model怎么与Pinia进行结合Object/Array数据大量处理时,为何有的修改不生效组合API与选项API选择 (…

在Android应用中集成使用traceroute工具

背景知识 traceroute是一个常用于Linux系统的网络工具,它可显示数据包在IP网络中所经过路由的IP地址,理想状态下可探测本机和目标地址之间的所有路由节点。 其他操作系统中也有类似的替代品,实现都大同小异。一般用法如下: 终端…

极简爬虫通用模板

网络爬虫的一般步骤如下: 1、确定爬取目标:确定需要爬取的数据类型和来源网站。 2、制定爬取策略:确定爬取哪些网页、如何爬取和频率等。 3、构建爬虫程序:使用编程语言(如Python)实现爬虫程序&#xff…

Spark概述

1.Spark用来干啥的? Spark是一个开源的大数据处理框架,主要用于分布式计算和数据处理。Spark可以处理大量的数据,并且可以在分布式计算中进行数据处理和分析,具有高效性和可扩展性。Spark支持多种编程语言,并且可以与…

SpringCloud学习(七)——统一网关Gateway

文章目录 1. 网关介绍2. 网关搭建2.1 引入依赖2.2 创建启动类2.3 编写配置2.4 测试 3. 路由断言工厂4. 路由过滤器4.1 过滤器配置4.2 全局过滤器4.3 过滤器执行顺序 5. 跨域问题处理 1. 网关介绍 到现在,我们可以使用Nacos对不同的微服务进行注册并管理配置文件&am…