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.rhkb.cn/news/317992.html

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

相关文章

【精选文献】JAG|基于时序Sentinel-1 SAR影像小农耕作区烟草空间分布制图

目录 文章简介 01 文章摘要 02 研究背景、目标及创新点 03 研究区域与数据集 04 研究方法 05 研究结果 06 研究讨论 07 研究结论 08 文章引用 文章简介 论文名称&#xff1a;Mapping tobacco planting areas in smallholder farmlands using Phenological-Spatial-Te…

jenkins汉化不完全问题解决

jenkins安装完Localization:Chinese(Simplified)中文语言包后&#xff0c;发现是出现汉化不完全或者部分汉化的情况&#xff0c;如下图&#xff1a; 解决方法&#xff1a; 启动命令中指定语言 -Duser.languageen_US.UTF-8 或者 -Duser.languageC.UTF-8原因分析&#xff1a;安…

HarmonyOS Next从入门到精通实战精品课

第一阶段&#xff1a;HarmonyOS Next星河版从入门到精通该阶段由HarmonyOS Next星河版本出发&#xff0c;介绍HarmonyOS Next版本应用开发基础概念&#xff0c;辅助学员快速上手新版本开发范式&#xff0c;共计42课时 第一天鸿蒙NEXT Mac版、Windows版【编辑器】和【模拟器】&a…

限流--4种经典限流算法讲解--单机限流和分布式限流的实现

为什么需要限流 系统的维护使用是需要成本的&#xff0c;用户可能使用科技疯狂刷量&#xff0c;消耗系统资源&#xff0c;出现额外的经济开销问题&#xff1a; 控制成本>限制用户的调用次数用户在短时间内疯狂使用&#xff0c;导致服务器资源被占满&#xff0c;其他用户无…

【Python的魅力】:利用Pygame实现游戏坦克大战——含完整源码

文章目录 一、游戏运行效果二、代码实现2.1 项目搭建2.2 加载我方坦克2.3 加载敌方坦克2.4 添加爆炸效果2.5 坦克大战之音效处理 三、完整代码 一、游戏运行效果 二、代码实现 坦克大战游戏 2.1 项目搭建 本游戏主要分为两个对象&#xff0c;分别是我方坦克和敌方坦克。用户可…

【大模型系列】大模型的上下文长度解释与拓展

文章目录 1 什么是大模型的上下文长度&#xff1f;2 拓展大模型上下文长度的方式参考资料 1 什么是大模型的上下文长度&#xff1f; 大模型的上下文长度&#xff08;Context Length&#xff09;是指在自然语言处理&#xff08;NLP&#xff09;的大型语言模型&#xff08;Large…

Qt Creator导入第三方so库和jar包——Qt For Android

前言 之前了解了在Android Studio下导入so库和jar包&#xff0c;现在实现如何在Qt上导入so库和jar包。 实现 下面是我安卓开发&#xff08;需调用安卓接口的代码&#xff09;的目录&#xff08;图1&#xff09;&#xff0c;此目录结构和原生态环境&#xff08;Android Studi…

15.Blender Eevee和Cycles渲染引擎对比

初步介绍 Eevee是实时渲染的引擎&#xff0c;会省略一些解算方式&#xff0c;尤其对光线和阴影 Cycles会考虑这些因素&#xff0c;所以会对光线和阴影的表达更加真实&#xff0c;有一个实时光线追踪的功能 Cycles渲染完之后&#xff0c;每移动一次画面&#xff0c;都会重新渲染…

AI大模型探索之路-训练篇10:大语言模型Transformer库-Tokenizer组件实践

系列篇章&#x1f4a5; AI大模型探索之路-训练篇1&#xff1a;大语言模型微调基础认知 AI大模型探索之路-训练篇2&#xff1a;大语言模型预训练基础认知 AI大模型探索之路-训练篇3&#xff1a;大语言模型全景解读 AI大模型探索之路-训练篇4&#xff1a;大语言模型训练数据集概…

Android 设置头像 - 裁剪及圆形头像

书接上文 Android 设置头像 - 相册拍照&#xff0c;通过相册和照片的设置就可以获取到需要的头像信息&#xff0c;但是在通常情况下&#xff0c;我们还想要实现针对头像的裁剪功能和圆形头像功能。 先上截图&#xff1a; 图像裁剪 通常裁剪可以分为程序自动裁剪和用户选择裁剪…

LT6911GX HDMI2.1 至四端口 MIPI/LVDS,带音频 龙迅方案

1. 描述LT6911GX 是一款面向 VR / 显示应用的高性能 HDMI2.1 至 MIPI 或 LVDS 芯片。HDCP RX作为HDCP中继器的上游&#xff0c;可以与其他芯片的HDCP TX配合使用&#xff0c;实现中继器功能。对于 HDMI2.1 输入&#xff0c;LT6911GX 可配置为 3/4 通道。自适应均衡功能使其适合…

Redis运维篇-快速面试笔记(速成版)

文章目录 1. Redis的持久化1.1 RDB&#xff08;快照模式&#xff09;1.2 AOF 模式 2. Redis主从模型&#xff08;高可用&#xff09;2.1 Redis的主从复制2.2 Redis拓扑结构 3. Redis集群模式&#xff08;高并发&#xff09;3.1 Redis的Slots3.2 集群模式的常用命令3.3 多主多从…

全景剖析阿里云容器网络数据链路(七):Terway DataPath V2(Terway≥1.8.0)

作者&#xff1a;余凯 前言 近几年&#xff0c;企业基础设施云原生化的趋势越来越强烈&#xff0c;从最开始的IaaS化到现在的微服务化&#xff0c;客户的颗粒度精细化和可观测性的需求更加强烈。容器网络为了满足客户更高性能和更高的密度&#xff0c;也一直在高速的发展和演…

2024年五一数学建模C题完整解题思路代码

2024年第二十一届五一数学建模竞赛题目 C题 煤矿深部开采冲击地压危险预测 煤炭是中国的主要能源和重要的工业原料。然而&#xff0c;随着开采深度的增加&#xff0c;地应力增大&#xff0c;井下煤岩动力灾害风险越来越大&#xff0c;严重影响着煤矿的安全高效开采。在各类深…

MySQL之多表查询

1. 前言 多表查询&#xff0c;也称为关联查询.指两个或两个以上的表一起完成查询操作.前提条件 : 这些一起查询的表之间是有关系的(一对一/一对多).他们之间一定是有关联字段&#xff0c;这个关联字段可能建立了外键&#xff0c;也可能没有建立外键. 2. 笛卡尔积现象(交叉连接…

【Vulhub靶场】Nginx 漏洞复现

Nginx 漏洞复现 一、Nginx 文件名逻辑漏洞&#xff08;CVE-2013-4547&#xff09;1、影响版本2、漏洞原理3、漏洞复现 二、Nginx 解析漏洞1、版本信息&#xff1a;2、漏洞详情3、漏洞复现 一、Nginx 文件名逻辑漏洞&#xff08;CVE-2013-4547&#xff09; 1、影响版本 Nginx …

【数据结构】:链表的带环问题

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;数据结构 &#x1f337;追光的人&#xff0c;终会万丈光芒 前言&#xff1a; 链表的带环问题在链表中是一类比较难的问题&#xff0c;它对我们的思维有一个比较高的要求&#xff0c;但是这一类…

【数据结构】链表专题3

前言 本篇博客我们继续来讨论链表专题&#xff0c;今天的链表算法题是经典中的经典 &#x1f493; 个人主页&#xff1a;小张同学zkf ⏩ 文章专栏&#xff1a;数据结构 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 目录 1.判断链表是否…

【Scala---01】Scala『 Scala简介 | 函数式编程简介 | Scala VS Java | 安装与部署』

文章目录 1. Scala简介2. 函数式编程简介3. Scala VS Java4. 安装与部署 1. Scala简介 Scala是由于Spark的流行而兴起的。Scala是高级语言&#xff0c;Scala底层使用的是Java&#xff0c;可以看做是对Java的进一步封装&#xff0c;更加简洁&#xff0c;代码量是Java的一半。 因…

操作系统安全:Linux安全审计,Linux日志详解

「作者简介」:2022年北京冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础对安全知识体系进行总结与归纳,著作适用于快速入门的 《网络安全自学教程》,内容涵盖系统安全、信息收集等12个知识域的一百多个知识点,持续更新。 这一章节需要直到Linux…