Web渗透:任意文件下载

任意文件下载漏洞(Arbitrary File Download Vulnerability)是一种常见的Web安全漏洞,它允许攻击者通过修改输入参数,从服务器下载任意文件,而不仅仅是预期的文件;通常这种漏洞出现在处理用户输入的地方,尤其是文件下载功能中。

漏洞出现场景

1.文件共享和管理系统:在企业内部的文件共享系统中,用户可能需要下载各类文件。如果系统没有妥善地处理文件路径和名称,攻击者可以通过修改请求参数来下载不应公开的文件。

2.内容管理系统(CMS):许多CMS平台允许管理员和用户上传和下载文件。如果CMS没有对下载请求进行严格的验证和限制,攻击者可能利用该漏洞访问敏感文件。

3.电子商务网站:在电子商务网站中,用户可能需要下载发票、收据或其他交易相关的文件。如果这些下载请求没有正确的权限控制和路径验证,攻击者可以利用该漏洞下载其他用户的私人信息或系统文件。

4.在线教育平台:在线教育平台上,用户通常可以下载课程材料、作业和考试文件。如果文件下载功能存在漏洞,攻击者可能会下载其他用户的私人信息或平台的敏感数据。

老规矩,我们通过pikachu靶场来演示,并阐述漏洞产生的原理和利用方式。

示例:

1.打开任意文件下载对应的页面,发现此时页面中有多张球星图片,此时点击对应的链接就能够将图片下载至本地。

2.此时我们通过F12进行检查,找到任意一个链接的标签:可以看到此时链接中含有对应的下载地址(只是不完整)。

此时我们将URL进行拼接就可以得到下载图片所使用的url;

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

在新页面中访问则下载一张图片:

这个时候我们可以进行测试,该下载的链接是否对用户下载的请求进行安全过滤,若这个时候我要下载pikachu靶场首页,也就是index.php这个文件:

http://127.0.0.1/pikachu/index.php

那么此时我们就可以构造下载的url:指定文件的相对路径

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

可以发现此时首页源码已经被下载下来,同理我们可以通过这种方式去下载其他php源码,在实际环境中若出现这种漏洞则可以读取系统中的文件(如Linux的/etc/passwd)或者想本例中的源码用作后续白盒测试代码审计。

同样的,这边我们还是来通过源码来分析一下该漏洞产生的原理:

$file_path="download/{$_GET['filename']}";
//用以解决中文不能显示出来的问题
$file_path=iconv("utf-8","gb2312",$file_path);
​
//首先要判断给定的文件存在与否
if(!file_exists($file_path)){skip("你要下载的文件不存在,请重新下载", 'unsafe_down.php');return ;
}
$fp=fopen($file_path,"rb");
$file_size=filesize($file_path);
//下载文件需要用到的头
ob_clean();//输出前一定要clean一下,否则图片打不开
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length:".$file_size);
Header("Content-Disposition: attachment; filename=".basename($file_path));
$buffer=1024;
$file_count=0;
//向浏览器返回数据
​
//循环读取文件流,然后返回到浏览器feof确认是否到EOF
while(!feof($fp) && $file_count<$file_size){
​$file_con=fread($fp,$buffer);$file_count+=$buffer;
​echo $file_con;
}
fclose($fp);

检查文件是否存在:使用file_exists函数检查指定路径的文件是否存在。如果文件不存在,调用skip函数(假设是自定义函数,用于跳转和显示错误消息),并终止脚本执行。

使用ob_clean清除输出缓冲区,以确保没有其他输出干扰文件下载。

设置Content-type头为application/octet-stream,表示下载的文件是二进制流。

设置Accept-Ranges头为bytes,表示支持断点续传。

设置Accept-Length头为文件大小。

Header("Content-Disposition: attachment; filename=".basename($file_path));设置Content-Disposition头,指示浏览器以附件形式下载文件,并指定下载的文件名。

循环读取文件并输出到浏览器

  • 使用feof函数检查文件指针是否到达文件末尾。

  • 使用fread函数按缓冲区大小读取文件内容,并增加文件计数器。

  • 使用echo函数输出读取的文件内容到浏览器。

可以看到当前程序对于客户端请求下载的文件并没有做过多的安全检查,仅仅检查了文件是否存在,而没有检查客户端要下载的文件是否在指定的文件夹中(是否为指定的文件范围)。

改进建议

为了增强安全性,可以做以下改进:

  • 严格验证和过滤输入:只允许预定义目录中的特定文件下载。

  • 防止路径遍历:移除路径操作符或使用安全的文件路径。

  • 权限控制:确保只有有权限的用户可以下载特定文件。

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

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

相关文章

python CSSE7030

1 Introduction In this assignment, you will implement a (heavily) simplified version of the video game ”Into The Breach”. In this game players defend a set of civilian buildings from giant monsters. In order to achieve this goal, the player commands a s…

AI进阶指南第四课,大模型优缺点研究?

在上一篇文章中&#xff0c;我主要探讨了LM模型与企业级模型的融合。 但是&#xff0c;在文末对于具体的大模型优缺点只是简单地说明了一下&#xff0c;并不细致。 因此&#xff0c;在这一节&#xff0c;我将更为细致地说明一下大模型的优缺点。 一&#xff0c;隐私安全 将L…

2018年全国大学生数学建模竞赛A题高温服装设计(含word论文和源代码资源)

文章目录 一、部分题目二、部分论文三、部分Matlab源代码问题11 求解h1h22 已知h1h2求解温度分布 问题21 求解第二层最佳厚度 四、完整word版论文和源代码&#xff08;两种获取方式&#xff09; 一、部分题目 2018 年高教社杯全国大学生数学建模竞赛题目 A 题 高温作业专用服…

Linux C 程序 【02】创建线程

1.开发背景 上一个篇章&#xff0c;基于 RK3568 平台的基础上&#xff0c;运行了最简单的程序&#xff0c;然而我们使用了 Linux 系统&#xff0c;系统自带的多线程特性还是比较重要的&#xff0c;这个篇章主要描述线程的创建。 2.开发需求 设计实验&#xff1a; 创建一个线程…

入门JavaWeb之 JavaBean 实体类

JavaBean 有特定写法&#xff1a; 1.必须有一个无参构造 2.属性必须私有 3.必须有对应的 get/set 方法 一般用来和数据库的字段做映射 ORM&#xff1a;对象关系映射 表->类 字段->属性 行记录->对象 连接数据库 没有的话去 Settings -> Plugins 搜索 Data…

Vue-路由

路由简介 SPA单页面应用。导航区和展示区 单页Web应用整个应用只有一个完整的页面点击页面中的导航连接不会刷新页面&#xff0c;只会做页面的局部更新数据需要通过ajax请求获取 路由&#xff1a;路由就是一组映射关系&#xff0c;服务器接收到请求时&#xff0c;根据请求路…

[论文阅读笔记33] Matching Anything by Segmenting Anything (CVPR2024 highlight)

这篇文章借助SAM模型强大的泛化性&#xff0c;在任意域上进行任意的多目标跟踪&#xff0c;而无需任何额外的标注。 其核心思想就是在训练的过程中&#xff0c;利用strong augmentation对一张图片进行变换&#xff0c;然后用SAM分割出其中的对象&#xff0c;因此可以找到一组图…

k8s集群node节点加入失败

出现这种情况&#xff1a; [preflight] FYI: You can look at this config file with kubectl -n kube-system get cm kubeadm-config -o yaml [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml" [kubelet-start] Writing kub…

python 识别图片点击,设置坐标,离设置坐标越近的优先识别点击

import pyautogui import cv2 import numpy as np import mathdef find_and_click(template_path, target_x, target_y, match_threshold0.8):"""在屏幕上查找目标图片并点击。Args:template_path: 目标图片的路径。target_x: 预设的坐标 x 轴值。target_y: 预设…

OpenCV报错已解决:Vector析构异常OpencvAssert CrtlsValidHeapPointer

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 在使用OpenCV进行图像处理时&#xff0c;我们可能会遇到Vector析构异常OpencvAssert CrtlsValidHeapPointer的问题。本文将…

基于LMS自适应滤波的窄带信号宽带噪声去除(MATLAB R2021B)

数十年的研究极大的发展了自适应滤波理论&#xff0c;自适应滤波理论已经成为信号处理领域研究的热点之一。从理论上讲&#xff0c;自适应滤波问题没有唯一解。为了得到自适应滤波器及其应用系统&#xff0c;可以根据不同的优化准则推导出许多不同的自适应理论。目前该理论主要…

在eclipse中导入idea项目步骤

一、可以把其它项目的.project&#xff0c; .classpath文件拷贝过来&#xff0c;修改相应的地方则可。 1、.project文件只需要修改<name>xxx</name>这个项目名称则可 2、.classpath文件通常不用改&#xff0c; 二、右击 项目名 >选择“Properties”>选择 Re…

自动驾驶⻋辆环境感知:多传感器融合

目录 一、多传感器融合技术概述 二、基于传统方法的多传感器融合 三、基于深度学习的视觉和LiDAR的目标级融合 四、基于深度学习的视觉和LiDAR数据的前融合方法 概念介绍 同步和配准 时间同步 标定 摄像机内参标定&#xff08;使用OpenCV&#xff09; 摄像机与LiDAR外…

微软推出最新视觉基础模型Florence-2 可在浏览器运行

据微软官方消息&#xff0c;微软推出视觉基础模型Florence-2&#xff0c;该模型现已能够在支持WebGPU的浏览器中100%本地运行。Florence-2-base-ft是一个拥有2.3亿参数的视觉基础模型&#xff0c;采用基于提示的方法来处理广泛的视觉和视觉语言任务。 该模型支持多种功能&…

IDEA 插件推荐【一】

好使的插件可以让工作事倍功半。下面就推荐一些常用的IDEA插件&#xff0c;如果你有其他好使的插件&#xff0c;欢迎评论区留言分享出来~ 1.Key Promoter X Key Promoter X 插件&#xff0c;IDEA 快捷键提示工具。 在每次我们使用鼠标进行 IDEA 的某个操作&#xff0c;Key Pr…

lambda-map.merge

map.merge 结论: 1.当前传入的 key ,value biFunction 2.如果之前map不存在则直接put(当前key,当前value) 3.如果之前map已经有了,老value与 当前value 进入function处理后再 put(当前key,处理后的value)

IDEA使用Apidocx插件在RAP生成接口文档

第一步 安装插件&#xff0c;安装最新的1.1.7即可&#xff0c;插件与idea版本对照 第二步 输入对应的IP或域名&#xff0c;端口说明&#xff1a; 1. 38080&#xff1a;为后端数据 API 服务器&#xff08;rap2-delos&#xff09; 2. 3000&#xff1a;为前端静态资源服务&…

40岁学习java是否需要报班学习?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;应该不需要。各种公开免费的…

【计算机毕业设计】087基于微信小程序社区养老服务

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

AI加持,商业智能与分析软件市场释放更大潜能

根据IDC最新发布的《中国商业智能和分析软件市场跟踪报告&#xff0c;2023H2》显示&#xff0c;2023下半年&#xff0c;中国商业智能与分析软件市场规模为5.2亿美元&#xff0c;同比增长为3.7%。其中&#xff0c;本地部署收入占比为89.3%&#xff0c;同比增长1.7%&#xff1b;公…