Upload-labs 靶场通关解析(上)

前言

文件上传漏洞是一种常见的网络安全漏洞,存在于许多Web应用程序中。攻击者利用这个漏洞可以上传恶意文件到目标服务器,从而执行各种恶意操作,如执行恶意代码、获取敏感信息、控制服务器等。

文件上传漏洞的原理是,Web应用程序没有对用户上传的文件进行充分的验证和过滤。攻击者可以通过构造特定的文件内容和文件名,绕过应用程序的验证机制,将恶意文件上传到服务器上。

文件上传漏洞可以通过以下方式来利用:

1. 上传恶意脚本文件:攻击者可以上传包含恶意代码的脚本文件,如PHP、ASP、JSP等。一旦服务器执行这些恶意脚本,攻击者就可以执行任意代码,包括执行系统命令、访问数据库等。

2. 上传恶意文件类型:攻击者可以上传具有危险扩展名的文件,如可执行文件、Webshell、恶意软件等。这些文件可能会被服务器执行或以某种方式被访问,从而危害服务器和用户的安全。

3. 绕过文件类型验证:应用程序通常会验证上传文件的类型,但攻击者可以通过修改文件的内容、伪造文件头等方式绕过这个验证机制,上传被禁止的文件类型。

为了防止文件上传漏洞,开发者可以采取以下措施:

1. 文件类型验证:应用程序应该对上传的文件进行类型验证,只允许特定的文件类型上传。这可以通过检查文件的扩展名或文件的内容进行验证。

2. 文件名验证:应用程序应该对上传的文件名进行验证,防止攻击者使用特殊字符或路径遍历等方式绕过文件名验证。

3. 文件内容检查:应用程序应该对上传的文件内容进行检查,确保文件不包含恶意代码或危险的内容。

4. 文件存储位置:应该将上传的文件存储在非Web可访问的目录下,确保攻击者无法直接访问上传的文件。

5. 权限控制:应该为上传文件设置适当的权限,以防止非授权用户访问或执行上传的文件。

总的来说,为了防止文件上传漏洞,开发者需要在应用程序中实施适当的安全措施,如文件类型验证、文件名验证、文件内容检查、文件存储位置和权限控制等。同时,定期更新和维护应用程序,以修复已知的漏洞和安全问题。用户也应保持浏览器和操作系统的更新,并警惕点击未知或可疑的链接。

一、介绍

upload-labs是一个专门用于学习文件上传漏洞的开源实验平台。它由Web安全研究人员余弦(knownsec)团队开发和维护,旨在帮助安全爱好者深入理解文件上传漏洞的原理和防护措施。

upload-labs提供了一系列的漏洞场景,每个场景都模拟了不同类型的文件上传漏洞。通过这些场景,用户可以学习如何发现、利用和修复文件上传漏洞。

在upload-labs中,用户可以通过上传文件表单与服务器进行交互。每个场景都有特定的漏洞点,用户需要通过尝试不同的上传方式和绕过技巧,成功上传恶意文件或绕过文件类型限制。

upload-labs提供了详细的解题指南,包括漏洞的原理、攻击方法、防护措施等。用户可以通过实际操作来加深对文件上传漏洞的理解,并提升自己的安全技能。

upload-labs是一个开源项目,源代码和相关文档都可以在GitHub上找到。这使得用户可以自由地学习、修改和分享这个实验平台。

总的来说,upload-labs是一个用于学习文件上传漏洞的实验平台,提供了一系列的漏洞场景和解题指南。通过实际操作,用户可以深入了解文件上传漏洞的原理和防护措施,并提升自己的安全技能。

二、Pass-01(禁用 JS)

上传 PHP 文件提示不允许上传,根据提示框猜测在前端做了验证

F12 查看源代码发现是在前端做的验证

设置中直接禁用 JS

上传文件后即可发现图片地址为 PHP 木马表示成功

三、Pass-02(修改 Content-Type)

提示对 Content-Type 检查

使用 BurpSuite 开启拦截抓包

上传 PHP 文件拦截数据包

将 Content-Type 修改为允许上传的类型(image/jpeg、image/png、image/gif)三选一,然后点击放行

上传成功!!

四、Pass-03(修改 filename)

这一关禁止了一些后缀名上传

使用 BurpSuite 开启拦截抓包,修改 filename 值即可

上传成功

五、Pass-04(上传 .htaccess)

禁止了大量文件后缀名但是缺少 .htaccess 文件

htaccess文件(“分布式配置文件”)提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令将受到限制。管理员可以通过Apache的AllowOverride指令来设置。

概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能

原理:上传覆盖.htaccess文件,重写解析规则,将上传的图片马以脚本方式解析

<FilesMatch "webshell">
SetHandler application/x-httpd-php
</FilesMatch>

上传.htaccess文件设置的关键字的文件名,即上传一个黑名单没有过滤的随意后缀名文件,但文件名中一定要包含 webshell,如"webshell.jpg",内容为一句话木马。此时"webshell.jpg"会被Apache当作php解析

六、Pass-05(上传 .user.ini)

这一关过滤了 .htaccess 文件,查看提示说目录下存在一个 readme.php 文件

可以利用 user.ini 漏洞,这里简要说明下

.user.ini 文件是 PHP 中用于配置特定目录的设置的特殊文件。它类似于 Apache 服务器中的 .htaccess 文件,但仅适用于 PHP。.user.ini 文件允许用户为特定目录定义 PHP 配置指令,这些配置指令将在该目录及其所有子目录中的 PHP 脚本执行时生效。

.user.ini 文件的主要目的是为了允许非管理员用户自定义某些 PHP 配置选项,而不需要访问主 php.ini 文件。这样,不同的应用程序或用户可以在自己的目录中设置特定的 PHP 配置,而不影响整个服务器的配置。

在PHP环境中,.user.ini 文件与 .htaccess 文件类似,可以用来配置某些 PHP 环境 settings。当PHP.ini中的 user_ini.filename 和 user_ini.cache_ttl 被启用时,PHP会尝试在每个目录下查找并解析.user.ini文件。如果攻击者能够上传一个恶意的.user.ini文件到 PHP 服务器上,他们可能会利用这个文件来改变服务器的配置,例如修改auto_prepend_file或者auto_append_file设置,从而在服务器执行任意代码

例如,攻击者可能会在一个上传目录中放置一个.user.ini文件,内容如下:

auto_prepend_file=webshell.png    //其中 webshell.png 需要与你上传的文件名相同

.user.ini 文件里的意思是:所有的php文件都自动包含 webshell.png 文件

所以先上传 .user.ini 文件,然后上传 webshell.png 文件 

七、Pass-06(大小写混淆)

打开提示发现黑名单对于大小写的过滤不全

可以将扩展名修改为 PhP

上传成功

八、Pass-07(双写绕过) 

从这关之后就得看源码了,发现过滤了有点全,但从扩展名这可以尝试双写绕过

打开 BurpSuite 拦截数据包,修改 filename 值

上传成功 

九、Pass-08(双点绕过) 

审计源码发现没有过滤双点(单点过滤了)

打开 BurpSuite 拦截数据包,修改 filename 值

上传成功

十、Pass-09(::DATA) 

查看源码发现没有过滤 " ::DATA “

在window的时候如果 文件名+"::$DATA" 会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名

打开 BurpSuite 拦截数据包,修改 filename 值

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(✌)粤嵌—2024/5/7—除自身以外数组的乘积

代码实现&#xff1a; /*** Note: The returned array must be malloced, assume caller calls free().*/ int* productExceptSelf(int *nums, int numsSize, int *returnSize) {// 左乘积int l[numsSize];l[0] 1;for (int i 1; i < numsSize; i) {l[i] l[i - 1] * nums[…

PyQt6--Python桌面开发(1.安装配置环境)

一.PyQt6简介 PyQt&#xff1a;PyQt是一个功能强大且成熟的GUI框架&#xff0c;基于Qt库。它提供了丰富的组件、布局和主题选项&#xff0c;以及强大的功能和灵活性。PyQt的优点是它具有现代化的外观和丰富的功能&#xff0c;适用于复杂的GUI应用程序。然而&#xff0c;由于Py…

VMware导入ova/ovf虚拟机文件

1.文件-打开-ova文件 2.为新虚拟机起名称 3.等待导入 4.导入完成&#xff0c;可以开始使用 参考链接&#xff1a;VMware导入ova/ovf虚拟机文件

数仓分层——ODS、DW、ADS

一、什么是数仓分层 数据仓库分层是一种组织和管理数据仓库的结构化方法&#xff0c;它将数据仓库划分为不同的层次或级别&#xff0c;每个层次具有特定的功能和目的。这种分层方法有助于管理数据仓库中的数据流程、数据处理和数据访问&#xff0c;并提供一种清晰的结构来支持…

ArrayList线程安全问题解决方案

jdk8 Stream API的出现大大简化了我们对于集合元素的处理代码&#xff0c;对于串行流来说&#xff0c;无需考虑线程安全问题&#xff1b;但是&#xff0c;对于并行流来说&#xff0c;由于它是以多线程的方式并行处理同一个集合中的数据元素的&#xff0c;因此&#xff0c;存在着…

[Android]国内流行的应用市场

国内应用市场的特点 由于Google Play商店服务国内不可用&#xff0c;有许多其它的应用商店充当Android应用的分发渠道。这些商店通常由中国的主要科技公司运营&#xff0c;每个商店都有自己的运营策略和用户基础。 全球移动供应商市场份额&#xff1a;https://gs.statcounter…

我独自升级崛起PC下载安装教程 我独自升级崛起PC下载教程

《我独自升级&#xff1a;崛起》这款游戏灵感源自热门网络漫画《我独自升级》&#xff0c;是一款深度浸入式RPG游戏。它不仅呈献给玩家一个情节错综复杂、引人入胜的故事线&#xff0c;让玩家能紧随主角步伐&#xff0c;亲历其成长的点点滴滴&#xff0c;还自豪地展示了琳琅满目…

geojson文件规格

geojson文件示例&#xff0c; {"type": "FeatureCollection","features": [{"type": "Feature","geometry": {"type": "Point","coordinates": [102.0, 0.5]},"properties&q…

RT-DETR-20240507周更说明|更新Inner-IoU、Focal-IoU、Focaler-IoU等数十种IoU计算方式

RT-DETR改进专栏|包含主干、模块、注意力、损失函数等改进 专栏介绍 本专栏包含模块、卷积、检测头、损失等深度学习前沿改进,目前已有改进点70&#xff01;每周更新。 20240507更新说明&#xff1a; ⭐⭐ 更新CIoU、DIoU、MDPIoU、GIoU、EIoU、SIoU、ShapeIou、PowerfulIoU、…

聚乙烯醇(PVA)纳米纤维膜的性能介绍

聚乙烯醇&#xff08;PVA&#xff09;纳米纤维膜是一种由聚乙烯醇&#xff08;PVA&#xff09;分子组成的纳米级薄膜。这种材料具有许多优良的性能和应用前景&#xff0c;具体如下&#xff1a; 制备工艺&#xff1a;聚乙烯醇纳米纤维膜可以通过静电纺丝等方法制备。具体步骤包括…

网络知识点之—QoS

QoS&#xff08;Quality of Service&#xff0c;服务质量&#xff09;指一个网络能够利用各种基础技术&#xff0c;为指定的网络通信提供更好的服务能力&#xff0c;是网络的一种安全机制&#xff0c; 是用来解决网络延迟和阻塞等问题的一种技术。QoS的保证对于容量有限的网络来…

5000A信号发生器使用方法

背景 gnss工作需要使用的5000A&#xff0c;所以做成文档&#xff0c;用于其他员工学习。 下载星历数据 https://cddis.nasa.gov/archive/gnss/data/daily/2024/brdc/ 修改daily中的年份&#xff0c;就可以获取相关截至时间的星历数据 brcd数据格式 第一行记录了卫星的PRN号&a…

科创板门槛升级!解析中国量子企业的上市之路与国际比拼

4月30日晚&#xff0c;中国证监会于发布了修订后的《科创属性评价指引&#xff08;试行&#xff09;》&#xff08;以下简称“新指引”&#xff09;&#xff0c;该指引自发布日起正式生效。本次修订对原有指引中的部分标准进行了调整&#xff0c;具体如下&#xff1a; 1&#x…

远程桌面连接不上,远程桌面连接不上的专业解决策略

在信息技术领域&#xff0c;远程桌面连接是一种非常重要的工具&#xff0c;它允许用户从任何地点、任何时间访问和操作远程计算机。然而&#xff0c;当远程桌面连接出现问题时&#xff0c;可能会严重影响工作效率。以下是一些可能导致远程桌面连接不上的原因以及相应的解决方案…

干货分享-策划人都在用的活动策划网站

职场上&#xff0c;学会借力&#xff0c;学会‘抄’&#xff0c;比辛辛苦苦做老黄牛&#xff0c;更能事倍功半&#xff0c;不仅自己省事省力&#xff0c;还能获得更多升职加薪的机会。 那么&#xff0c;职场新人如何快速的写出一份领导满意的方案&#xff1f; 今天分享的‘抄…

深度学习之基于Vgg19预训练卷积神经网络图像风格迁移系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 在数字艺术和图像处理领域&#xff0c;图像风格迁移技术一直备受关注。该技术可以将一幅图像的内容和…

动态内存开辟(下)

前言 动态内存开辟以及柔性数组的介绍 一、 几个经典的笔试题 1. 题目一 void Getmemory(char*p) {p (char*)malloc(100); } int main() {char* str NULL;Getmemory(str);strcpy(str, "hello world");printf(str);return 0; } 这段代码我们可以发现两个很明显…

解决VScode -正在本地下载 VS Code 服务器

不知道怎么回事再次连接服务器的时候一直卡在这里了&#xff0c;查看输出信息发现一直卡在下载处&#xff0c;报错信息如图1&#xff0c;输出信息如图2。 1.报错信息 图1 报错信息 图2 输出信息 2.尝试 【已解决】设置SSH主机&#xff1a;VS Code-正在本地下载 VS Code 服务器…

Linux 第二十二章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

为何大学计算机专业以C语言入门?探究C语言入门的好处

为何大学计算机专业以C语言入门&#xff1f;探究C语言入门的好处 在大学计算机专业中&#xff0c;C语言常作为入门语言&#xff0c;这并非偶然。C语言具有一些独特的优势&#xff0c;使其成为计算机科学教育中的理想选择。本文将探讨为何大学计算机专业选择以C语言入门&#xf…