Pikachu靶场——不安全的文件下载(Unsafe Filedownload)

文章目录

  • 1. Unsafe Filedownload
    • 1.1 Unsafe Filedownload
      • 1.1.1 源代码分析
      • 1.1.2 漏洞防御
    • 1.2 不安全的文件下载防御措施

1. Unsafe Filedownload

不安全的文件下载概述

文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。如果后台在收到请求的文件名后,将其直接拼接到下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞。

此时如果攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(比如…/…/…/etc/passwd),则很有可能会直接将该指定的文件下载下来。 从而导致后台敏感信息(密码文件、源代码等)被下载。

漏洞原理

给用户提供了一个下载的功能,并能接收相关的参数变量,开发时候,使用了读去文件的相关函数,对前端用户读取文件请求,没有进行相应的控制或控制不严(限制、校验),能输出请求文件的内容,提供给前端下载。

漏洞危害

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

  • 获得网站web源码,再对代码进行审计,以获得更多的漏洞
  • 获得网站、服务器、系统、数据库等中间件配置文件
  • 获得应用于系统配置文件
  • 对内网的信息进行一个探测
  • 下载各种.log文件,并寻找后台地址、文件上传点等地方

漏洞发现

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

  • 也可通过判断网站语言,并根据其url中部分提供的参数,进行构造相关的路径信息。

1.1 Unsafe Filedownload

点击球员下面的名字,然后图片就下载下来了。

在这里插入图片描述

image-20230827181205510

复制图片的下载路径

http://127.0.0.1/pikachu/vul/unsafedownload/execdownload.php?filename=kb.png

先构造一个假的管理员文件

image-20230827181305939

然后构造playload

http://127.0.0.1/pikachu/vul/unsafedownload/execdownload.php?filename=../../../../admin.txt

一个../就是跳出一级目录到上一级目录下,../../../../表示向上跳三级目录。

在浏览器页面中输入该路径,admin.txt文件就被下载下来了

image-20230827181058479

注意:如果用绝对路径,例如 :http://192.168.188.183/pikachu/vul/unsafedownload/execdownload.php?filename=C:\Windows\System32\drivers\etc\hosts无法成功。

1.1.1 源代码分析

image-20230923113649755

发现在第10行的位置上,传递的参数前面拼接了download目录,这样就导致我们在输入绝对路径的时候无法进行下载文件了。

如果将前面拼接的download目录去掉,绝对路径就可以成功。

image-20230923114130413

hosts文件下载成功。

image-20230923114030776

不安全的文件下载漏洞的原因是,服务器代码没有对输入的filename进行过滤,只是检查了以下文件是否存在,如果存在就下载了。

1.1.2 漏洞防御

添加一个白名单过滤,让其只允许下载download文件夹下的图片资源。

修改源码

由于图片太多,这里选用一个图片做实例。

if(!file_exists($file_path) || $file_path != "download/ai.png"){skip("你要下载的文件不存在,请重新下载", 'unsafe_down.php');return ;
}

image-20230923120536265

输入之前构造的payload

http://127.0.0.1/pikachu/vul/unsafedownload/execdownload.php?filename=../../../../admin.txt

发现下载失败,成功防御

image-20230923120513875

1.2 不安全的文件下载防御措施

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

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

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

相关文章

【正点原子】无法打开 源 文件 “linux/time_types.h“ (dependency of “linux/ide.h“)

问题描述 在VS code中些驱动代码时显示: 检测到 #include 错误。请更新 includePath。已为此翻译单元(/home/alientek/linux/atk-mp1/Linux_Drivers/2_LED/led.c)禁用波形曲线。C/C(1696) 无法打开 源 文件 "linux/time_types.h" (dependency of "…

性格敏感怎么办?改变性格敏感的方法有哪些?

有这么一群人,他们的情绪很容易受到外界的影响,就像一汪宁静的湖水,被风轻易地吹出皱纹。他们有着高度敏感的神经,外界稍微一点风吹草动,就会牵动他们紧张的情绪。 他们的思维就像脱缰的野马,生活中任何一…

第15届蓝桥STEMA测评真题剖析-2023年8月20日Scratch编程中级组

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第155讲。 第15届蓝桥第1次STEMA测评,这是2023年8月20日举办的STEMA,比赛仍然采取线上形式。这…

UWB高精度定位系统:引领精准定位技术的新纪元

在现代社会中,精准定位技术对于各行各业都至关重要。为了满足对高精度定位的需求,超宽带(Ultra-Wideband, UWB)技术应运而生。UWB高精度定位系统以其出色的定位精度和多样化的应用领域而备受关注。本文将深入探讨UWB高精度定位系统…

协议约定问题

和 SOAP 不一样,REST 不是一种严格规定的标准,它其实是一种设计风格。如果按这种风格进行设计,RESTful 接口和 SOAP 接口都能做到,只不过后面的架构是 REST 倡导的,而 SOAP 相对比较关注前面的接口。而且由于能够通过 …

MAC手动修复『已损坏』问题 终端运行命令报错处理

安装一些第三方软件会出现已损坏的报错提醒,需要用命令sudo xattr -rd com.apple.quarantine进行修复,但是终端提示命令错误,怎么版 错误有几种: No module named ‘pkg_resources’ 这是mac电脑上python2,python3并…

分布式操作系统

分布式操作系统属于多机操作系统,能够统一一套计算机集群,相比单机系统,分布式操作系统在管理计算机集群方面要简单很多。各种分布式的基础功能,都集中到分布式操作系统来实现,而不是单机系统的应用软件来实现&#xf…

2023最新简易ChatGPT3.5小程序全开源源码+全新UI首发+实测可用可二开(带部署教程)

源码简介: 2023最新简易ChatGPT3.5小程序全开源源码全新UI首发,实测可以用,而且可以二次开发。这个是最新ChatGPT智能AI机器人微信小程序源码,同时也带部署教程。 这个全新版本的小界面设计相当漂亮,简单大方&#x…

springboot 简单配置mongodb多数据源

准备工作&#xff1a; 本地mongodb一个创建两个数据库 student 和 student-two 所需jar包&#xff1a; # springboot基于的版本 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>&l…

Facebook Delos 中的虚拟共识协议

背景 Facebook 的软件系统栈一般包括两层&#xff1a;上层是数据平面&#xff0c; 下层是控制平面。 facebook software stack 数据平面包括大量的服务&#xff0c;他们需要存储和处理海量数据。控制平面用来支撑数据平面&#xff0c;起到一些控制作用&#xff1a;调度、配置…

【React】组件实例三大属性state、props、refs

state React 把组件看成是一个状态机&#xff08;State Machines&#xff09;。通过与用户的交互&#xff0c;实现不同状态&#xff0c;然后渲染 UI&#xff0c;让用户界面和数据保持一致。 React 里&#xff0c;只需更新组件的 state&#xff0c;然后根据新的 state 重新渲染用…

Linux实用操作(固定IP、进程控制、监控、文件解压缩)

目录 一、快捷键 1、ctrl c强制停止 2、ctrl d退出或登出 3、历史命令搜索history 4、光标移动快捷键 5、清屏 二、软件安装 1、CentOS的yum命令 2、Ubantu的apt命令 三、systemctl命令 四、软连接 五、日期、时区 1、date命令 2、修改Linux时区为东八区 3、nt…

车牌文本检测与识别:License Plate Recognition Based On Multi-Angle View Model

论文作者&#xff1a;Dat Tran-Anh,Khanh Linh Tran,Hoai-Nam Vu 作者单位&#xff1a;Thuyloi University;Posts and Telecommunications Institute of Technology 论文链接&#xff1a;http://arxiv.org/abs/2309.12972v1 内容简介&#xff1a; 1&#xff09;方向&#x…

2023蓝帽杯半决赛电子取证+CTF部分题解

文章目录 电子取证123456789101112131415 CTFWeb | MyLinuxBotWeb | AirticleShareCrypto | ezrsaPwn | AdminPwn | uafmisc|排排坐吃吃果果 电子取证 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 CTF Web | MyLinuxBot Web | AirticleShare import requests import times reques…

Java中处理千万级数据的最佳实践:性能优化指南

在今天的数字化时代&#xff0c;处理大规模数据已经成为许多Java应用程序的核心任务。无论您是构建数据分析工具、实现实时监控系统&#xff0c;还是处理大规模日志文件&#xff0c;性能优化都是确保应用程序能够高效运行的关键因素。本指南将介绍一系列最佳实践&#xff0c;帮…

TinyWebServer学习笔记-互斥锁、信号量、条件变量

为什么要使用锁、信号量、条件变量&#xff1f; 网站不可能是单线程的&#xff0c;否则网站的性能和响应都会收到严重的影响。因此&#xff0c;这个项目一定是运行在多线程条件下的。而在多线程条件下&#xff0c;对共享资源的互斥访问就极其重要。 为什么要将资源封装成类&a…

IDEA中的神仙插件——Smart Input (自动切换输入法)

推荐专栏&#xff1a;开发环境配置攻略 致力于记录学习过程中各种软件的安装及环境配置操作&#xff0c;并提供详细的步骤说明和丰富的配图。涵盖了 Java、Python、IntelliJ IDEA、Tomcat、MySQL 等常见开发工具和服务器组件的配置&#xff0c;为初学者提供一个实用、全面的配置…

Pandas进阶修炼120题-第五期(一些补充,101-120题)

目录 往期内容&#xff1a;第一期&#xff1a;Pandas基础&#xff08;1-20题&#xff09;第二期&#xff1a;Pandas数据处理&#xff08;21-50题&#xff09;第三期&#xff1a;Pandas金融数据处理&#xff08;51-80题&#xff09;第四期&#xff1a;当Pandas遇上NumPy&#xf…

Vue2 第一次学习

本章为超级浓缩版,文章过于短,方便复习使用哦~ 文章目录 1. 简单引入 vue.js2. 指令2.1 事件绑定指令 v-on (简写 )2.2 内容渲染指令2.3 双向绑定指令 v-model2.4 属性绑定指令 v-bind (简写 : )2.5 条件渲染指令2.6 循环指令 v-for 3. vue 其他知识3.1 侦听器 watch3.2 计算属…

WOL唤醒配置(以太网、PHY、MAC)

目录 wol 以太网 MAC PHY RMII 通信配置 总结 wol Wake-on-LAN简称WOL&#xff0c;WOL&#xff08;网络唤醒&#xff09; 是一种标准网络协议&#xff0c;它的功效在于让已经进入休眠状态或关机状态的计算机&#xff0c;透过局域网&#xff08;多半为以太网&#xff…