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 值

 

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

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

相关文章

Llama 3 ——开源大模型Llama 3从概念到使用

概述 Meta公司自豪地宣布推出其最新的开源大型语言模型——Llama 3&#xff0c;这是一款专为未来AI挑战而设计的先进工具。Llama 3包含两个不同参数规模的版本&#xff0c;以满足多样化的计算需求&#xff1a; 8B版本&#xff1a;优化了在消费级GPU上的部署和开发流程&#xf…

【设计模式】抽象工厂模式(Abstract Factory Pattern)

目录标题 抽象工厂设计模式详解1. 介绍2. 结构3. 实现步骤3.1 创建抽象产品接口3.2 创建具体产品类3.3 创建抽象工厂接口3.4 创建具体工厂类 4. 好处与优点5. 坏处与缺点6. 适用场景7. 总结 抽象工厂设计模式详解 1. 介绍 抽象工厂模式是一种创建型设计模式&#xff0c;它提供…

学生管理系统[Python语言]

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 学生管理系统是计算机专业最基础的一个作业&#…

算法设计优化——起泡排序

文章目录 0.概述1 起泡排序&#xff08;基础版&#xff09;1.1 算法分析1.2 算法实现1.3 重复元素与稳定性1.4 复杂度分析 2 起泡排序&#xff08;改进版&#xff09;2.1 目标2.2 改进思路2.3 实现2.4 复杂度分析 3 起泡排序&#xff08;改进版2&#xff09;3.1 目标3.1 改进思…

edge 入门基础了解使用

随着Windows 11的发布&#xff0c;Microsoft Edge也迎来了新的更新和改进。作为一名长期使用Edge的用户&#xff0c;我不仅注意到了这些表面的变化&#xff0c;还深入研究了Edge在Windows 11上的新特性和潜在优势。 快捷方式 查找框 在Microsoft Edge浏览器中&#xff0c;按…

智能穿戴终端设备安卓主板方案_MTK平台智能手表PCBA定制开发

新移科技智能手表方案兼容WiFi、BLE、2~5G等多种通信能力。支持多个功能模块&#xff0c;包括&#xff1a;通话、计步、定位、睡眠监测、心率监测、血氧监测等。智能手表通过滑动与功能性按键提供高度直观的体验感受&#xff0c;从腕间即可掌控日常生活。形态支持定制包括&…

MySQL从入门到高级 --- 4.约束

文章目录 第四章&#xff1a;4.MySQL约束4.1 主键约束4.1.1 添加单列主键4.1.2 添加多列主键(联合主键)4.1.3 通过修改表结构添加主键4.1.4 删除主键约束4.1.5 自增长约束特点 4.1.6 指定自增字段初始值 - 创建表时指定4.1.7 指定自增字段初始值 - 创建表之后4.1.8 delete与tru…

洞察未来:数据治理中的数据架构新思维

随着大数据时代的来临&#xff0c;数据已经成为企业运营和社会发展的重要资产。然而&#xff0c;数据的复杂性和快速增长给企业带来了前所未有的挑战。在这样的背景下&#xff0c;数据治理成为了企业不可或缺的一环。数据治理不仅涉及数据的管理、安全和隐私保护&#xff0c;更…

ubuntu部署sonar与windows下使用sonar-scanner

ubuntu部署sonar与windows下使用sonar-scanner sonar部署java安装mysql安装配置sonarqube 插件安装sonar-scanner使用简单使用 sonar部署 使用的是sonarqube-7.5&#xff0c;支持的java环境是jdk8&#xff0c;且MySQL版本 >5.6 && <8.0 java安装 打开终端&…

Jackson-自定义注解及实现数据脱敏、枚举转换

Hi,大家好&#xff0c;我是抢老婆酸奶的小肥仔。 上一章&#xff0c;我们介绍了下Jackson及相关的注解&#xff0c;其实我们可以通过仿照一些注解来实现自定义以满足我们自己的业务需求&#xff0c;这一章&#xff0c;我们来说说jackson提供的自定义注解及一些应用吧。 废话不…

Virtualbox7.0.10--创建虚拟机

前言 下载Virtualbox7.0.10&#xff0c;可参考《Virtualbox–下载指定版本》 Virtualbox7.0.10具体安装步骤&#xff0c;可参考《Virtualbox7.0.10的安装步骤》 Virtualbox7.0.10创建虚拟机&#xff0c;可参考《Virtualbox7.0.10–创建虚拟机》 Virtualbox7.0.10安装Ubuntu20.0…

后端如何处理接口的重复调用

首先是&#xff0c;原理在请求接口之前&#xff0c;使用过滤器拦截数据&#xff0c;来进行判断两次数据是否一致。 1.自定义注解 2.创建一个Handler处理器 3.RepeatSubmitInterceptor的实现类 4.过滤器的配置

大型企业总分支多区域数据传输,效率为先还是安全为先?

大型企业为了业务拓展需要&#xff0c;会在全国乃至全球各地设立分公司和办事机构&#xff0c;以便更好地处理当地事务&#xff0c;并进行市场的开拓和客户维护&#xff0c;此时&#xff0c;企业内部就衍生出了新的业务需求&#xff0c;即多区域数据传输。 多区域很难准确定义&…

[C++][算法基础]最大不相交区间数量(贪心 + 区间问题2)

给定 &#x1d441; 个闭区间 [&#x1d44e;&#x1d456;,&#x1d44f;&#x1d456;]&#xff0c;请你在数轴上选择若干区间&#xff0c;使得选中的区间之间互不相交&#xff08;包括端点&#xff09;。 输出可选取区间的最大数量。 输入格式 第一行包含整数 &#x1d4…

Aiseesoft Data Recovery for Mac:专业数据恢复软件

Aiseesoft Data Recovery for Mac是一款高效且专业的数据恢复软件&#xff0c;专为Mac用户量身打造。 Aiseesoft Data Recovery for Mac v1.8.22激活版下载 无论是由于误删、格式化还是系统崩溃等原因导致的数据丢失&#xff0c;Aiseesoft都能帮助您快速找回。 它采用先进的扫描…

IDEA插件-通义灵码 VS ChatGPT-EasyCode

智能编码助手新时代&#xff1a;通义灵码 vs ChatGPT-EasyCode 随着人工智能技术的飞速发展&#xff0c;智能编码助手逐渐成为程序员的必备工具。它们可以帮助程序员提高编码效率&#xff0c;降低代码缺陷率&#xff0c;并解放创造力。 目前市场上涌现出了众多智能编码助手&a…

Golang | Leetcode Golang题解之第60题排列序列

题目&#xff1a; 题解&#xff1a; func getPermutation(n int, k int) string {factorial : make([]int, n)factorial[0] 1for i : 1; i < n; i {factorial[i] factorial[i - 1] * i}k--ans : ""valid : make([]int, n 1)for i : 0; i < len(valid); i {…

【哈希】Leetcode 217. 存在重复元素

题目讲解 217. 存在重复元素 算法讲解 使用set集合完成元素的存储&#xff0c;当我们将当前元素插入到集合单中&#xff0c;如果insert的返回值的pair.second等于false说明当前元素已经存在&#xff0c;反之元素在集合中存在 class Solution { public:bool containsDuplica…

开放式耳机哪个牌子好?五大爆款机型大盘点

开放式耳机采用挂耳设计&#xff0c;体积小巧&#xff0c;携带方便&#xff0c;并且更加通风透气&#xff0c;避免了耳朵过热和出汗导致的问题&#xff1b;更轻的重量能有效减少长期佩戴对耳朵带来的压力&#xff0c;佩戴时舒适度直接爆表&#xff0c;在跑步、爬山、打球等户外…

ip ssl证书无限端口

IP SSL证书是由CA认证机构颁发的一种特殊数字证书。大部分SSL数字证书都需要用户使用域名进行申请&#xff0c;想要对公网IP地址加密实现https访问就需要申请IP SSL证书。IP SSL证书采用了强大的加密算法&#xff0c;可以有效地防止数据在传输过程中被窃取或篡改&#xff0c;具…