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

news2024/12/28 19:29:12

文章目录

  • 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.coloradmin.cn/o/1059356.html

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

相关文章

认知智能最新研究成果

声明:以下内容仅代表个人对现象和本质探索,不代表对学术成果评价。曾有幸和马文明斯基的学生段老师和方老师一起讨论过人工智能问题。随着自己对问题进一步理解,刚好18年左右开始接触认知智能理论核心认知计算部分。 第一:算法是一…

MySQL5.7版本与8.0版本在Ubuntu(WSL环境)系统安装

目录 前提条件 1. MySQL5.7版本在Ubuntu(WSL环境)系统安装 1. 1 下载apt仓库文件 1.2 配置apt仓库 1.3 更新apt仓库的信息 1.4 检查是否成功配置MySQL5.7的仓库 5. 安装MySQL5.7 1.6 启动MySQL 1.7 对MySQL进行初始化 1.7.1 输入密码 …

IDM(Internet Download Manager)2024中文版下载工具软件

IDM(Internet Download Manager):功能强大,下载速度快,支持多线程下载,下载过程中遇到突然断电等情况,可以进行断点续传,很多人因此而首选IDM。 优点: (1&a…

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

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

多源最短路径的原理及C++实现

时间复杂度 O(n3),n是端点数。 核心代码 template<class T, T INF 1000 * 1000 * 1000> class CNeiBoMat { public: CNeiBoMat(int n, const vector<vector<int>>& edges,bool bDirectfalse,bool b1Base false) { m_vMat.assign(n, vector<…

_pickle.UnpicklingError: STACK_GLOBAL requires str

问题详情 Scaled weight_decay 0.0005 Optimizer groups: 95 .bias, 95 conv.weight, 98 other Traceback (most recent call last):File "E:\yolov7-main\train.py", line 616, in <module>train(hyp, opt, device, tb_writer)File "E:\yolov7-main\tra…

Python开发入门

Life is short, use Python. Life’s pathetic, let’s pythonic. 一、Python简介 1.1 Python语言起源 Python的创始人是吉多范罗苏姆(Guido van Rossum)&#xff0c;1989年的圣诞节&#xff0c;吉多为了打发时间&#xff0c;决定开发一个新型的基于互联网社区的脚本解释程…

留住时光、固化时间、让一瞬成为永恒——全新的真人手办定制模式,就选易模小程序制作。

如何能永远留住一瞬间&#xff1f; 有人说我可以拍摄一张照片&#xff0c;照片的问世确实给生活中许多美好的瞬间留下了可以记录的工具。但是随着时间的流逝&#xff0c;照片终究也会泛黄&#xff0c;似乎有一些记忆的温度&#xff0c;有一些岁月的棱角&#xff0c;也是照片所给…

怒刷LeetCode的第23天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一&#xff1a;贪心算法 方法二&#xff1a;动态规划 方法三&#xff1a;回溯算法 方法四&#xff1a;并查集 第二题 题目来源 题目内容 解决方法 方法一&#xff1a;排序和遍历 方法二&#xff1a;扫描线算法 方法…

Linux进程概念(上)

冯诺依曼体系结构 这里谈论的体系结构指的是计算机组成 常见的计算机&#xff0c;如笔记本&#xff0c;不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系 计算机&#xff0c;都由一个个的硬件组件组成 输入单元&#xff1a;如键盘&#xff0c;…

如何在IIS7里设置实现访问.txt文件是下载模式

如何在IIS7里设置实现访问.txt文件是下载模式 1、打开iis管理器--在网站中点击需要调整的站点&#xff0c;然后在如下图位置点击MIME类型 2、添加一个新的MIME类型&#xff0c;文件扩展名填写 .txt&#xff0c;MIME类型填写application/octet-stream&#xff0c;如下图&#x…

图神经网络 GNN

之前经常看到图神经网络的内容&#xff0c;但是一直都觉得很难&#xff0c;就没有继续了解&#xff0c;现在抽空学习了一下&#xff0c;简单了解GNN是个什么东西&#xff0c;还没有进行代码实践&#xff0c;随着后续的学习&#xff0c;会继续更新代码的内容&#xff0c;这里先记…

Autosar诊断实战系列20-UDS首帧数据接收及流控帧发送代码级分析

本文框架 前言1. 长帧数据的首帧接收2. 首帧数据的处理及流控帧发送2.1 首帧数据的处理2.2 流控帧数据的发送前言 在本系列笔者将结合工作中对诊断实战部分的应用经验进一步介绍常用UDS服务的进一步探讨及开发中注意事项, Dem/Dcm/CanTp/Fim模块配置开发及注意事项,诊断与Bs…

【Redis】数据过期策略和数据淘汰策略

数据过期策略和淘汰策略 过期策略 Redis所有的数据结构都可以设置过期时间&#xff0c;时间一到&#xff0c;就会自动删除。 问题&#xff1a;大家都知道&#xff0c;Redis是单线程的&#xff0c;如果同一时间太多key过期&#xff0c;Redis删除的时间也会占用线程的处理时间…

【C++】STL详解(九)—— set、map、multiset、multimap的介绍及使用

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C学习 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【C】STL…

订单型批发制造企业经营分析123个指标大全(ODOO15/16)

ODOO-ERP搭建完成之后&#xff0c;我们重点是帮客户建立经营分析能力&#xff0c;以下是针对订单型企业的经营分析指标&#xff0c;涵盖业务运营的监控、资产构成、利润、盈亏点计算、资产运营效率等各方面&#xff0c;并且持续完善​。 有些企业不重视&#xff0c;觉得自己企业…

基于Java的环境保护宣传管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

前端——html面试题(一)

文章目录 前言一、说说你对 html 语义化的理解。二、html的标签有哪些三、标签类型1、问题&#xff1a;请说说你对块级元素、行内元素、空元素的理解&#xff0c;它们分别都有哪些常见的标签&#xff1f; 总结 前言 说说对html语义化的理解html的标签标签类型 一、说说你对 ht…

基于YOLOv8的安全帽检测系统(3):DCNv3可形变卷积,基于DCNv2优化,助力行为检测 | CVPR2023 InternImage

目录 1.Yolov8介绍 2.安全帽数据集介绍 3.InternImage介绍 4.训练结果分析 1.Yolov8介绍 Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的&#xff08;SOTA&#xff09;模型&#xff0c;它建立在先前YOLO成功…

【C语言】汉诺塔 —— 详解

一、介绍 汉诺塔&#xff08;Tower of Hanoi&#xff09;&#xff0c;又称河内塔&#xff0c;是一个源于印度古老传说的益智玩具。大焚天创造世界的时候做了三根金刚石柱子&#xff0c;在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。 大焚天命令婆罗门把圆盘从下面开始按…