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

news2024/10/7 12:20:02

前言

文件上传漏洞是一种常见的网络安全漏洞,存在于许多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.coloradmin.cn/o/1637741.html

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

相关文章

商超物联网方案-Hotspot Service和客流分析方案概述

商超物联网方案-Hotspot Service和客流分析方案概述 场景概述 大型商场、大型综合体在相互竞争及线上消费的影响下&#xff0c;利润增长缓慢&#xff0c;迫切需要通过提供个性化服务提升顾客购物体验&#xff0c;促进利润增长。 向不同顾客推送其感兴趣的广告&#xff0c;不仅…

判断100以内的素数(筛选法)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> # include <math.h>int main() {//初始化变量值&#xff1b;int i 0;int j 0;int n 0;int a[101] { 0 };//循环填充数组a…

Qt简单离线音乐播放器

有上传本地音乐文件&#xff0c;播放&#xff0c;暂停&#xff0c;拖拉进度条等功能的播放器。 mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include <QMediaPlayer> #include <QFileDialog> #include <QTime&g…

GORM数据库连接池对接Prometheus

一、背景与介绍 Golang的database/sql包定了关于操作数据库的相关接口&#xff0c;但是没有去做对应数据库的实现。这些实现是预留给开发者或者对应厂商进行实现的。 其中让我比较关注的是Golang的sql包有没有实现连接池pool的机制呢? 毕竟Golang是静态语言&#xff0c;类似J…

【模板】二维前缀和

原题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 二维前缀和板题。 二维前缀和&#xff1a;pre[i][j]a[i][j]pre[i-1][j]pre[i][j-1]-pre[i-1][j-1]; 子矩阵 左上角为(x1,y1) 右下角(x2,y2…

计算机网络chapter1——家庭作业

文章目录 复习题1.1节&#xff08;1&#xff09; “主机”和“端系统”之间有何不同&#xff1f;列举几种不同类型的端系统。web服务器是一种端系统吗&#xff1f;&#xff08;2&#xff09;协议一词常用来用来描述外交关系&#xff0c;维基百科是如何描述外交关系的&#xff1…

038——基于STM32和I.MX6uLL实现uart控制GPS(失败者总结)

目录 1、GPS模块简介 2、GPS数据格式 3、方案梳理 1、GPS模块简介 全球定位系统(Global Positioning System&#xff0c; GPS)是一种以空中卫星为基础的高精度无线电导航的定位系统&#xff0c;它在全球任何地方以及近地空间都能够提供准确的地理位置、车行速度及精确的时间…

项目运行到手机端

运行到真机 手机和点到连在同一个wifi网络下面点击hbuiler上面的预览得到一个&#xff0c;network的网址这个时候去在手机访问&#xff0c;那么就可以访问网页了 跨域处理 这个时候可能会访问存在跨域问题 将uniapp的H5版本运行到真机进行调试&#xff0c;主要涉及到跨域问题…

开源农场管理软件

软件介绍 Tania是一款基于Go、Vue.JS和SQLite的开源农场日记软件。该项目始于2016年11月&#xff0c;由于无法找到适合自己需求的软件&#xff0c;开发团队决定自己搭建一套适合家庭后院花园的管理系统&#xff0c;并可以随时随地进行管理。 项目功能描述 Tania是一款免费且开源…

MySQL——88张表汇总——DDL+外键

外键er图 88张表 /* Navicat MySQL Data TransferSource Server : MyList Source Server Version : 50726 Source Host : localhost:3309 Source Database : schooldbTarget Server Type : MYSQL Target Server Version : 50726 File Encoding …

YOLOV8添加SKATTENTION

修改ultralytics.nn.modules._init_.py https://zhuanlan.zhihu.com/p/474599120?utm_sourcezhihu&utm id0 https://blog.csdn.net/weixin 42878111/article/details/136060087 https://blog.csdn.net/gg 51511878/aricle/details/138002223 . 最后输出层不一样。

【学习AI-相关路程-工具使用-NVIDIA SDK MANAGER==NVIDIA-jetson刷机工具安装使用 】

【学习AI-相关路程-工具使用-NVIDIA SDK manager-NVIDIA-jetson刷机工具安装使用 】 1、前言2、环境配置3、知识点了解&#xff08;1&#xff09;jetson 系列硬件了解&#xff08;2&#xff09;以下大致罗列jetson系列1. Jetson Nano2. Jetson TX23. Jetson Xavier NX4. Jetson…

镜像部署和服务器步署的介绍和不同点

镜像部署通常指的是使用Docker容器进行部署&#xff0c;而服务器部署则是指直接在服务器的操作系统上安装依赖并运行项目。下面是两种部署方式的介绍和它们的主要不同点&#xff1a; 镜像部署&#xff08;Docker&#xff09;&#xff1a; 环境隔离&#xff1a;Docker通过容器…

基于Amazon Bedrock打造Claude3 Opus智能助理

近期&#xff0c;Anthropic 发布了其最新的大模型 Claude3。截止本文撰写时&#xff0c;Claude3 Opus、Claude3 Sonnet、Claude3 Haiku 均已在 Amazon Bedrock 可用&#xff0c;随着 Amazon Bedrock 可提供越来越多的大模型&#xff0c;您可以在您的应用场景里将其落地&#xf…

C语言:指针详解(3)

目录 一、字符指针 二、数组指针 1.数组指针的定义 2.数组指针的初始化 3. 二维数组传参的本质 三、函数指针 1.函数指针的创建 2.函数指针的使用 3.有趣的代码(1) 4.有趣的代码(2) 四、typedef关键字 1.typedef的使用方法 2.typedef和#define的区别 五、函数指针…

湖南建研信息工程质量检测系统 文件上传致RCE

漏洞描述 湖南建研信息工程质量检测系统 文件上传致RCE&#xff0c;攻击者可通过此漏洞上传恶意脚本文件&#xff0c;对服务器的正常运行造成安全威胁&#xff01; 漏洞复现 1、语法 fofa&#xff1a;https://fofa.info/ body"/Content/Theme/Standard/webSite/login.c…

PDF 正确指定页码后,挂载的书签页码对不上

这个问题与我的另一篇中方法一样 如何让一个大几千页的打开巨慢的 PDF 秒开-CSDN博客 https://blog.csdn.net/u013669912/article/details/138166922 另作一篇的原因 一篇文章附带一个与该文章主题不相关的问题时&#xff0c;不利于被遇到该问题的人快速搜索发现以解决其遇到…

理解Linux文件系统

文章目录 一、引言二、Linux文件系统概述1、文件系统的结构2、文件系统目录树的逻辑结构 二、文件系统的特性1、super block&#xff1a;文件系统的超级块2、inode&#xff1a;文件系统的索引节点3、inode table4、block&#xff1a;文件系统的数据块5、块组描述符表&#xff0…

Linux系统中搭建Mosquitto MQTT服务并实现远程访问本地消息代理进行通信

文章目录 1. Linux 搭建 Mosquitto2. Linux 安装Cpolar3. 创建MQTT服务公网连接地址4. 客户端远程连接MQTT服务5. 代码调用MQTT服务6. 固定连接TCP公网地址7. 固定地址连接测试 今天和大家分享一下如何在Linux系统中搭建Mosquitto MQTT协议消息服务端,并结合Cpolar内网穿透工具…

移植 SquareLine 导出的 UI 源码到 HMI-Board

目录 准备工具创建 HMI 工程设计 UIUI 移植板级验证更多内容 HMI-Board 为 RT-Thread 联合瑞萨推出的高性价比图形评估套件&#xff0c;取代传统的 HMI 主控板 硬件&#xff0c;一套硬件即可实现 HMI IoT 控制 的全套能力。依托于瑞萨高性能芯片 RA6M3 及 RT-Thread 软件生态…