UPLOAD LABS | PASS 10 - 黑名单绕过(Windows . 绕过 - 变体)

关注这个靶场的其它相关笔记:UPLOAD LABS —— 靶场笔记合集-CSDN博客

0x01:过关流程

本关的目标是上传一个 WebShell 到目标服务器上,并成功访问:

通过查看源码,可以发现,本关在之前所有关卡的基础上做了过滤,过滤的还是比较全面的:

但是仔细分析一下代码,“删除文件末尾的点” 这一段会不会存在 Bug?带入一下开发者视角,我为什么要删除文件末尾的点?以及我如何删除文件末尾的点?

开发者视角:我为什么要删除文件末尾的点?

因为 Windows 系统特性,其会将文件末尾的点自动去除。攻击者可能会利用此特性构造诸如 muma.php.muma.php... 这样的文件进行绕过。

开发者视角:我如何删除文件末尾的点?

首先想到 . 后一般会跟文件的扩展名,如 .php。而攻击者通过 . 进行绕过,一般点都在末尾,且其后一般不会跟东西,比如像这种:muma.php.

那么我们就可以从后往前,按位删,碰到单独的 . 就往前删一个,如果碰到的字符不是 . 就停止删除,最终将 muma.php.... 变为 muma.php 后再进行后续的操作。

一切的安全都是基于假设,如果假设前提错误,那么安全也就成了泡影。在上面的头脑风暴中,开发者知道 Windows . 的特性,所以针对该特性进行了防御。但也仅仅针对了该特性进行防御。

我们在前面几关中知道了 Windows 文件名末尾的空格特性,即你在 Windows 文件后追加空格也会被系统自动去除。

那么联动一下这两个特性,就可以让开发者的防御荡然无存。开发者认为攻击者利用 . 绕过,所以过滤了文件名末尾是连续的点,但是倘若我在这多个点之间加个空格,是不是就变得不一样了。它的过滤方式就失效了。

下面开始进行攻击,首先上传一个.php 文件,并使用 BurpSuite 进行抓包:

重放请求包,往文件名后添加 . .(点 - 空格 - 点)进行绕过:

如上,成功上传 muma.php. . 文件,下面我们使用 ”中国蚁剑“ 来连接一下木马,看看能否 Get Shell(如下,Get Shell 成功,本关结束):

0x02:源码分析

下面是本关 WAF 源码,其在前几关的基础上做了比较完善的过滤,但是由于其开发者假设错误,导致攻击者可以利用多个 Windows 特性进行组合攻击,下面对着代码笔者分析一下 muma.php. . 的绕过流程:

 $is_upload = false;$msg = null;if (isset($_POST['submit'])) {if (file_exists(UPLOAD_PATH)) {$deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess",".ini");// $file_name = "muma.php. ."$file_name = trim($_FILES['upload_file']['name']);// $file_name = "muma.php. "  # 删除文件名末尾的点,碰倒空格就结束逻辑了$file_name = deldot($file_name);//删除文件名末尾的点// $file_ext = ". " # 系统获取 . 最后出现的位置到结束的字符,结果取了个 .空格$file_ext = strrchr($file_name, '.');// 下面的逻辑都是针对 ". " 进行过滤,没有意义$file_ext = strtolower($file_ext); //转换为小写$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA$file_ext = trim($file_ext); //首尾去空​// 扩展名 ". " 肯定不在黑名单中,所以执行上传逻辑if (!in_array($file_ext, $deny_ext)) {$temp_file = $_FILES['upload_file']['tmp_name'];// 这里拼接后的路径为 "UPLOAD_PATH/muma.php. " => 后面就交给 Windows 系统特性帮你删除文件末尾的点和空格了$img_path = UPLOAD_PATH.'/'.$file_name;if (move_uploaded_file($temp_file, $img_path)) {$is_upload = true;} else {$msg = '上传出错!';}} else {$msg = '此文件类型不允许上传!';}} else {$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';}}

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

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

相关文章

【Elasticsearch】实现分布式系统日志高效追踪

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…

FoldX(FoldX5)的安装流程

下载地址:官网 https://foldxsuite.crg.eu/] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] zip解压yasaraPlugin.zip 我将foldx_20241231改为foldx vim ~/.bashrc 将foldx文件所在路径写进PATH vim ~/.bashrc我的…

利用红黑树封装map,和set,实现主要功能

如果不知道红黑树是什么的时候可以去看看这个红黑树 思路 首先我们可以把封装分为两个层面理解,上层代码就是set,和map,底层就是红黑树 就相当于根据红黑树上面套了两个map,set的壳子,像下面这张图一样 对于map和set,map里面存…

分类算法中的样本不平衡问题及其解决方案

一、样本不平衡问题概述 在机器学习的分类任务中,样本不平衡是指不同类别训练样本数量存在显著差异的现象。这一差异会给模型训练和性能评估带来挑战,尤其在处理少数类样本时,模型可能难以有效学习其特征。 以二分类为例,理想情况…

通过HTML Canvas 在图片上绘制文字

目录 前言 一、HTML Canvas 简介 二、准备工作 三、绘制图片 四、绘制文字 五、完整代码 效果演示: 前言 HTML canvas 为我们提供了无限的创意可能性。今天,我们就来探索一下如何通过 HTML canvas 将图片和文字绘制到图片上,创造出独特…

MBox20边缘计算网关:氢能车间数据采集的智慧引擎

氢能作为未来能源体系的重要组成部分,其安全、高效、环保的特性备受瞩目。在氢能车间的日常运营中,数据采集是确保生产流程优化、设备稳定运行及能效提升的关键环节。然而,面对氢能车间复杂多变的生产环境和海量数据,如何实现高效…

linux环境GitLab服务部署安装及使用

一、GitLab介绍 GitLab是利用Ruby onRails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。 二、GitLab安装 1、先安装相关依赖 yum -y install policycoreutils openssh-server openssh-clients postf…

Gartner报告解读(四)| 如何运用上升期的基础设施自动化(IA)为企业数字化转型赋能?

近期,Gartner发布的《2024年中国基础设施战略技术成熟度曲线》显示,未来5-10年,大量具有颠覆性或较高影响力的创新技术可能会实现主流采用,其中就包括基础设施自动化(IA)。 基础设施自动化Gartner评估情况 …

请求响应:常见参数接收及封装(Json参数及路径参数)

Json参数 Json格式的数据具有轻量级、易于阅读和编写、易于解析等诸多优点。在前后端交互时,大部分情况下请求体中的数据会以JSON格式进行传递。前端的请求在请求体中携带了Json格式数据,后端程序需要对其进行解析并封装使用,而接收Json参数…

大舍传媒-关于海外媒体宣发的探讨

关于海外媒体宣发的探讨 一、海外媒体宣发的重要性 在当今全球化的时代,海外媒体宣发对于企业、组织和个人来说具有至关重要的意义。通过有效的海外媒体宣发,可以提升品牌知名度,拓展国际市场,增强影响力,吸引更多的潜…

项目开发之Jenkins

文章目录 思考基础概述JenkinsMavenGit集成开发部署GitLab服务 实战1 新建任务需要的配置pipeline最后 思考 jenkis怎么连接github仓库? jenkis的作用是什么?基础 概述 定义:Jenkins是一款开源的持续集成(Continuous Integration&#xff…

在VSCode中搭建Python开发环境

在VSCode中搭建Python开发环境 1、安装 首先确保电脑已经安装好Python和VSCode。 2、安装VSCode的Python插件 3、选择python解释器 ctrlshiftP打开VSCode的命令行,输入python: select Interpreter选择合适的python版本。 4、运行代码 在windows下你可以直接使用…

Windows 11 如何配置node.js

一,官网下载 官网首页 下载最新LTS版本,比较稳定,如果想探索更新的版本去探索新的nodejs功能。 1. 下载完成后,双击运行程序,点击next 2. 勾选接受协议,点击next 3. 选择自己的安装路径(默认是…

1-12 GD32基于定时器输入捕获

前言: 基于本人对相关知识回顾与思考,仅供学习参考 目录 前言: 1.0 输入捕获 2.0 信号周期 3.0 定时器配置 4.0 定时器配置 5.0 定时器中断 后记: 1.0 输入捕获 2.0 信号周期 获取信号周期的方法,在第一次捕获与…

大数据新视界 -- Hive 元数据管理:核心元数据的深度解析(上)(27 / 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

合合信息智能图像处理技术,让你的设备更智能

目录 图像增强技术主要包括以下几个方面: 最近和一位朋友聊天,听到一些关于打印机的吐槽。 从20年开始,部分或者全部远程办公的企业渐渐多起来,wfh的打工人也在家添置了简易的必要办公设备,比如打印机。 在家用&…

基于Transformer的编码器-解码器图像描述模型在AMD GPU上的应用

Transformer based Encoder-Decoder models for image-captioning on AMD GPUs — ROCm Blogs 图像描述,即基于生成式人工智能(GenAI)自动生成简洁的图像文本描述,在现实世界中有着非常重要的应用。例如,图像描述可以为…

【从0带做】基于Springboot3+Vue3的场馆预约系统

大家好,我是武哥,最近给大家手撸了一个基于SpringBoot3Vue3的场馆预约系统,可用于毕业设计、课程设计、练手学习,系统全部原创,如有遇到网上抄袭站长的,欢迎联系博主~ 项目演示视频和教程视频 https://ww…

unity与android拓展

一.AndroidStudio打包 1.通过Unity导出Android Studio能够打开的工程 步骤 1.设置导出基本信息:公司名、游戏名、图标、包名等关键信息 2.在File——>Build Settings中,勾选 Export Project 选项 3.点击Export 导出按钮 2.在Android Studio中打开Un…

计算机网络期末复习-part1-概述

1、互联网的组成 互联网由两大块组成。 1、边沿部分:由所有连接在互联网上的主机组成,是用户直接使用的部分。 2、核心部分,由大量网络和路由器组成,为边缘部分提供服务。 2、数据传送阶段的三种交换方式的主要特点 1、电路交…