零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容

本期用到的软件:yakit(因为经过之前好多期的学习,我相信大家已经足够了解yakit,哪怕不熟悉,至少也知道各个模块有什么用)

我们先来翻译一下这个单词组合是什么意思(不安全的文件上传),和之前我们学到的RCE,File inclusion有一点相似,但是希望大家仔细观察,不要搞混

介绍

不安全的文件上传漏洞概述

文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击者可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。

所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:
--验证文件类型、后缀名、大小;
--验证文件的上传方式;
--对文件进行一定复杂的重命名;
--不要暴露文件上传后的路径;
--等等...

你可以通过“Unsafe file upload”对应的测试栏目,来进一步的了解该漏洞。

个人评价:会用到非常多的"米奇妙妙工具",只要有一定的开发基础理解起来会非常容易(没有的也别担心,会一一解释的,只是领悟的时间问题而已)

适用场景:有文件上传功能的网站都可以

实际反馈:用起来很简单,但是很多大厂会有过滤,而且没有长时间的后端了解,盲目进行"米奇妙妙工具"的开发会非常艰难,甚至耗费大量时间,结果没用(在此也强调,如果你幸运的拥有大佬们发出来的"米奇妙妙工具",请你使用时关掉杀软或者断网进行测试,不要乱传,不仅可能会锒铛入狱,还会让大佬们分享出来的东西被彻底分析透,导致工具失效

一,client check

原理

它一般指检查客户端输入的安全性。当用户上传文件时,系统会验证文件的扩展名是否符合要求,防止恶意文件被上传。比如,检查上传的文件是否是图片(如.jpg、.png)而不是可执行文件或其他潜在危险的文件。

就好像一个高中的保安一样,通过识别学生的胸牌和校服来决定他是否可以进入校园

但是同样的,找个看起来很年轻的人,让他穿校服,然后伪造一个胸牌,他也可以进入

实践

有了前几期的了解,我们会知道,前端的很多防护形同虚设,有了自由上传的环境后,就到了我们大展拳脚的时候

因此,我就有了第一个最简单的方法进行攻击

也就是禁止JavaScript

这个在之前的暴力破解模块中就有说到,通过禁止JavaScript可以使他简单的前端防护失效

不过在此之前,我们需要先构建一个木马(这个木马是针对服务器的)(为了防止大家迷惑,所以关于木马的知识我会之后单独出一期的,大家先了解本期的理论内容)


<?php  @eval($_POST['shell']); ?>

当然了,知己知彼,方能百战百胜,我们先来分析一下这是什么东西

该代码的主要功能是执行客户端通过 POST 请求发送的 'shell' 参数中的 PHP 代码。黑客可以将恶意 PHP 代码放入 'shell' 参数,服务器端接收到后会直接执行,从而实现远程代码执行,对服务器进行控制、窃取数据、发起攻击等恶意操作。

<?php 和 ?>这是PHP代码的开始和结束标签,用于包裹PHP脚本代码。
@这是PHP的错误抑制运算符,它会关闭错误报告,即使代码执行失败,也不会输出任何错误信息。这是一种隐藏恶意行为手段,使得代码执行中的错误不会被发现。
eval()这是一个PHP函数,它会将传入的字符串作为PHP代码来执行。它是这段代码的核心危险所在。
任何通过$_POST['shell']传递的字符串都会被当作PHP代码执行。
$_POST['shell']这是PHP的超全局变量,用于接收通过POST方法发送的数据。
shell是一个键名,攻击者可以通过构造特定的POST请求,将恶意代码传递到这个键中。

不了解的朋友可能看不懂,但是别担心,努力学习,都会明白的,毕竟我可以把理论说的通俗一点,但是专用性的内容真的没办法

我们来试一下,木马后缀改为php(切记放入杀毒软件的白名单里,不然刚做出来就被杀了)

可以看到,成功了

同样在打开F12后我们可以看到他的前端防护暴露出来了


onchange="checkFileExt(this.value)"

删掉就没问题了

上传之后我们可以通过各类连接方面的"米奇妙妙工具"来进行更大的破坏,我之后会同关于木马的讲解一起发出来的,因为我们首先要了解的是理论基础

至此,client check完成

二,MIME type

原理

首先,翻译一下什么是MIME 和MIME type

MIME(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展)类型,最初设计用于在电子邮件传输中标识内容格式,现广泛应用于互联网,向服务器和客户端提供文件信息,帮助它们知道如何处理文件。

组成结构 :由两部分组成,即类型(Type)和子类型(Subtype)。类型表示文件的通用类别,如文本、图像、音频、视频等;子类型则进一步细化,具体说明文件的格式,如纯文本、HTML 文档、JPEG 图像等。

作用机制 :当客户端向服务器请求文件时,服务器会根据文件的 MIME type 来确定如何处理和传输文件。客户端接收到文件和对应的 MIME type 后,根据已知的类型和子类型,判断如何显示或处理文件,比如用特定的程序打开、在浏览器中直接渲染等。

就好像超市进行商品分区一样,哪怕你是从大山里刚被现代人类带回来,只要认识中文后,进入商城后看分区牌子就知道这是干什么的,大概就是类似于日常生活中"标签"这个概念

实践

直接发送我们可以看到不行,但是我们现在知道MIME的概念了

我们还是用熟悉的yakit抓个包

我们直接换格式(也就是我们原理中谈到的MIME这个东西的使用)

换成他要的格式(这里以image/jpg格式为例,别的格式可以自己尝试比如image/jpeg)

发送,成功

三,getimagesize

原理

同样,我们先来分析,解释这是什么意思

getimagesize() 是一个 PHP 函数,主要用于获取图像文件的尺寸信息(例如宽度和高度)以及其他相关信息,比如图像的类型(格式)和 MIME 类型。如果函数感知不到是图像类型就没用

假设你有一堆照片,每张照片的背面都贴着一个小标签(MIME),上面写着这张照片的尺寸、照片的样式(比如纸质打印的那种和正式的红底,蓝底,白底照片)和其他一些信息(比如拍摄日期)

检查照片:想象你正拿着一张照片,首先确认这张照片是真的,而不是一张废纸。

查看标签:你在照片背面找到那个标签,上面有它的尺寸信息,拍摄时间

读取信息:你仔细看标签上的内容,比如是2025年拍摄的,它是一张彩色的全家福。getimagesize() 函数做的也是类似的事情,它读取图像文件中的标签信息。

整理信息:你把这张照片的尺寸、格式等信息记录下来,方便之后使用。getimagesize() 也会把这些信息整理成一个数组,让你可以方便地使用这些数据。

实践

其实很简单,既然他的函数要识别的到,那我们就给他图片,但是后面加上东西(类似于上面说过的扮演成高中生的社会人士,因为穿了校服,保安就不容易发现)

由此我们就有了攻击思路

也就是把图片和木马内容整合在一起

我们先用记事本打开一个图片(记住要符合他的传送内容的要求)

在这里也解释一下为什么图片用记事本打开会是乱码

为了更好理解我们就用简单的方式来说,如果有朋友想要详细了解,可以自己查找,在此不过多赘述:图片用记事本打开就好像用勺子吃牛排,牛排做的再好,用勺子你也吃不好

然后把木马内容放在结尾(放在结尾是因为函数通常是通过文件特征来识别是什么格式的,放在末尾更安全)

当然用yakit也是可以的,也是将木马内容放在末尾就好,再次便不再赘述

至于之后如何启用连接的话,也会同之后的木马内容一并发出来

至此Unsafe Fileupload模块完成

通过本期内容,我们了解了一下关于木马的知识点,也学会了如何制造一个简单的木马,虽然简单,但是需要大家进行自主尝试,比如这次是要图片格式的,那以后用其他文件格式的应该怎么搞,需要举一反三

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

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

相关文章

生信服务器 | 做生信为什么推荐使用Linux服务器?

原文链接&#xff1a;生信服务器 | 做生信为什么推荐使用Linux服务器&#xff1f; 原文链接&#xff1a;生信服务器 | 做生信为什么推荐使用Linux服务器&#xff1f; ---- 原文链接&#xff1a;生信服务器 | 做生信为什么推荐使用Linux服务器&#xff1f; ---- 原文链…

OpenCV 图像色彩空间转换与抠图

一、知识点: 1、色彩空间转换函数 (1)、void cvtColor( InputArray src, OutputArray dst, int code, int dstCn 0, AlgorithmHint hint cv::ALGO_HINT_DEFAULT ); (2)、将图像从一种颜色空间转换为另一种。 (3)、参数说明: src: 输入图像&#xff0c;即要进行颜…

高斯列主元消去法——python实现

高斯列主元消去法 1. 高斯消去法 高斯消去法是一种求解线性方程组 A x b A\mathbf{x} \mathbf{b} Axb 的方法&#xff0c;通过逐步化简增广矩阵&#xff0c;将其变为上三角矩阵&#xff0c;从而方便求解未知数。 线性方程组的一般形式为&#xff1a; { a 11 x 1 a 12 x…

linux下安装elasticsearch及ik分词器

linux下安装elasticsearch及ik分词器 安装版本 linux版本&#xff1a;centos7.5 es版本&#xff1a;elasticsearch-7.14.0-linux-x86_64.tar.gz 下载地址&#xff1a;https://www.elastic.co/downloads/past-releases#elasticsearch Ik版本&#xff1a;elasticsearch-analysi…

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…

【配置篇】告别硬编码:多环境配置、@ConfigurationProperties与配置中心初探

摘要 本文是《Spring Boot 实战派》系列的第五篇&#xff0c;聚焦于企业级应用开发中至关重要的配置管理。文章将首先解决开发、测试、生产环境配置不同的痛点&#xff0c;详细介绍 Spring Boot 的 Profile&#xff08;多环境配置&#xff09; 机制。接着&#xff0c;我们将深…

代码随想录算法训练营第60期第六十三天打卡

大家好&#xff0c;我们昨天讲解的是拓扑排序与Dijkstra算法的朴素版&#xff0c;其实我们大致了解了两种算法的代码实现&#xff0c;我们通过上次博客了解到拓扑排序其实是可以判断图里是否存在环&#xff0c;而Dijkstra算法则使用于非负边权最短路的求解&#xff0c;今天我们…

linux中如何在日志里面检索nowStage不等于1的数据的指令

你想在 Linux 中查找日志文件中 nowStage 不等于 1 的所有 JSON 行&#xff0c;当前你已经使用了&#xff1a; Bash 深色版本 grep -rn "nowStage" ./ 这个命令可以找到包含 "nowStage" 字样的所有行及其所在的文件名和行号&#xff0c;但还不能筛选出 no…

【习题】DevEco Studio的使用

判断题 1. 如果代码中涉及到一些网络、数据库、传感器等功能的开发&#xff0c;均可使用预览器进行预览。 正确(True) 错误(False) 正确答案: 错误(False) 知识点 预览器的使用。解析&#xff1a;预览器只支持对页面的预览&#xff0c;如果代码中涉及到一些网络、数据库、…

SpringBoot实现简易直播

当下直播技术已经成为各类应用不可或缺的一部分&#xff0c;从社交媒体到在线教育&#xff0c;再到电子商务和游戏领域&#xff0c;直播功能正在被广泛应用。 本文将介绍如何使用SpringBoot框架构建一个直播流推拉系统。 一、直播技术基础 1.1 推流与拉流概念 直播系统的核心…

xcode 各版本真机调试包下载

下载地址 https://github.com/filsv/iOSDeviceSupport 使用方法&#xff1a; 添加到下面路径中&#xff0c;然后退出重启xcode /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

DL00871-基于深度学习YOLOv11的盲人障碍物目标检测含完整数据集

基于深度学习YOLOv11的盲人障碍物目标检测&#xff1a;开启盲人出行新纪元 在全球范围内&#xff0c;盲人及视觉障碍者的出行问题一直是社会关注的重点。尽管技术不断进步&#xff0c;许多城市的无障碍设施依然未能满足盲人出行的实际需求。尤其是在复杂的城市环境中&#xff…

Python 训练 day46

知识点回顾&#xff1a; 不同CNN层的特征图&#xff1a;不同通道的特征图什么是注意力&#xff1a;注意力家族&#xff0c;类似于动物园&#xff0c;都是不同的模块&#xff0c;好不好试了才知道。通道注意力&#xff1a;模型的定义和插入的位置通道注意力后的特征图和热力图 作…

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…

Qwen系列之Qwen3解读:最强开源模型的细节拆解

文章目录 1.1分钟快览2.模型架构2.1.Dense模型2.2.MoE模型 3.预训练阶段3.1.数据3.2.训练3.3.评估 4.后训练阶段S1: 长链思维冷启动S2: 推理强化学习S3: 思考模式融合S4: 通用强化学习 5.全家桶中的小模型训练评估评估数据集评估细节评估效果弱智评估和民间Arena 分析展望 如果…

yolo模型精度提升策略

总结与行动建议 立即行动&#xff1a; 显著增加6种相似BGA的高质量、多样化训练数据&#xff08;2倍以上是合理起点&#xff09;。 实施针对性数据增强&#xff1a; 设计模拟BGA实际成像挑战&#xff08;反光、模糊、视角变化&#xff09;的增强方案。 升级模型与损失函数&am…

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …

使用Docker部署MySQLRedis容器与常见命令

目录 1. 检查WSL配置2. 设置WSL版本3. 拉取MySQL镜像4. 验证镜像5. 运行MySQL容器在WSL环境中使用以下命令启动MySQL容器查看容器/镜像的完整信息显式指定宿主机挂载路径可选&#xff1a;在Windows的cmd中使用以下命令启动MySQL容器 6. 管理容器启动已创建的容器查看运行中的容…

01__C++入门

一、C的语法框架 首先学习一门语言&#xff0c;我们需要了解语言的基本框架&#xff0c;这一小节&#xff0c;我们学习C的历史应用&#xff0c;c和c的区别和c的标准 二、认识C 1、C的历史 所有的主流C编译器都支持这个版本的C&#xff08;1998年的版本&#xff09;。 2、C的应…

2024 CKA题库+详尽解析| 15、备份还原Etcd

目录 免费获取题库配套 CKA_v1.31_模拟系统 15、 备份还原Etcd 题目&#xff1a; 开始操作: 1&#xff09;、切换集群 2&#xff09;、登录master并提权 3&#xff09;、备份Etcd现有数据 4&#xff09;、验证备份数据快照 5&#xff09;、查看节点和Pod状态 6&am…