当前位置: 首页 > news >正文

No.21 笔记 | WEB安全 - 任意文件绕过详解 part 3

 

(一)空格绕过

  1. 原理
    • Windows系统将文件名中的空格视为空,但程序检测代码无法自动删除空格,使攻击者可借此绕过黑名单限制。
  2. 基于黑名单验证的代码分析
    • 代码未对上传文件的文件名进行去空格处理,存在安全隐患。
    • 相关代码逻辑包括对文件上传的一系列判断,如检查文件路径是否存在,定义禁止上传的文件扩展名数组,获取文件名和后缀并进行处理,但缺少去空格步骤。
  3. Burpsuite绕过黑名单验证
    • 使用Burpsuite截断HTTP请求,修改文件名并添加空格,从而绕过黑名单验证实现文件上传。

(二).号绕过

  1. 原理
    • Windows系统会自动去除文件后缀名最后一个点,攻击者可利用此特性绕过黑名单。
  2. 基于黑名单验证代码分析
    • 查看代码发现缺少去除文件名最后边点的处理。
    • 代码逻辑与上述类似,在处理上传文件时,对文件名和后缀进行操作,但未考虑去除最后一个点的情况。
  3. Burpsuite绕过黑名单验证
    • 利用Burpsuite截断HTTP请求,上传文件加.绕过上传限制。

(三)特殊符号绕过

  1. 原理
    • 在Windows系统下,上传文件名中test.php::会在服务器上生成文件,且内容相同并被解析,而黑名单可能未对DATA进行过滤。
  2. 基于黑名单模糊测试
    • 分析代码发现没有对::$DATA进行过滤,存在漏洞。
    • 代码在处理上传文件时,对文件名进行了如去除末尾点、获取后缀并转换小写等操作,但未对::$DATA进行处理。
  3. Burpsuite绕过黑名单验证
    • 利用Burpsuite截断HTTP请求,修改请求为1.php::$DATA进行上传。

(四)路径拼接绕过

  1. 原理
    • 用户可自定义文件名,如1.php.+空格+.,经过deldot函数删除最后一个点(但后续处理不完善)和trim函数删除空格后变为1.php.,利用Windows自动去除最后一个点的特性成功上传。
    • 上传后的文件没有经过随机化重命名直接保存在服务器上,这为攻击者提供了绕过机会。
  2. 基于黑名单验证代码分析
    • 代码在处理上传文件时,对文件名进行了一些常规处理,如获取文件名、处理后缀等,但未进行随机化重命名。
  3. Burpsuite绕过黑名单验证
    • 利用Burpsuite截断HTTP请求,在.php后面加(点 空格 点)来绕过黑名单验证。

(五)双写绕过

  1. 原理
    • 代码编写过程中只对黑名单中的内容进行一次空替换,导致双写绕过。例如,1.phphpp可能会绕过对.php的限制。
  2. 基于黑名单代码分析
    • 介绍了str_ireplace()函数的替换规则,该函数在处理黑名单替换时存在缺陷,只替换一次且替换为空。
  3. Burpsuite绕过黑名单验证
    • 利用Burpsuite截断,直接将php文件后缀名修改为pphphp来绕过验证。

(六)00截断(白名单绕过)

GET型00截断
  1. 原理
    • 0x00是ascii码为0的字符,在一些函数处理时被当作结束符,系统读取文件名遇到0x00认为读取结束。
    • PHP5.3之后版本修复了00截断问题,且该截断受限与magic_quotes_gpc和addslashes函数。
  2. GET型00截断
    • GET型提交的内容会被自动进行URL解码,攻击者可利用00截断。
    • 示例代码展示了如何通过构造URL实现00截断上传文件。
  3. POST型00截断
    • 原理:POST请求中%00不会被自动解码,需要在16进制中进行修改00。
    • 抓包及修改示例:给出了抓包过程中涉及的请求头和文件名等信息,以及修改POST请求包的具体操作,通过在16进制中修改相关内容来实现00截断。

三、安全影响
这些绕过方法被攻击者利用后,可能导致恶意文件(如webshell)上传到服务器,攻击者可借此获取服务器控制权,从而对服务器上的数据和系统安全造成严重威胁,包括数据泄露、篡改服务器设置、执行恶意命令等。

相关文章:

No.21 笔记 | WEB安全 - 任意文件绕过详解 part 3

(一)空格绕过 原理 Windows系统将文件名中的空格视为空,但程序检测代码无法自动删除空格,使攻击者可借此绕过黑名单限制。基于黑名单验证的代码分析 代码未对上传文件的文件名进行去空格处理,存在安全隐患。相关代码逻…...

咸鱼自动发货 免费无需授权

下载:(两个都可以下,自己选择) https://pan.quark.cn/s/1e3039e322ad https://pan.xunlei.com/s/VO9ww89ZNkEg_Fq1wRr-fk9ZA1?pwd8x9s# 不是闲管家 闲鱼自动发货(PC端) 暂不支持密,免费使…...

Netty核心组件

1.Channel Channel可以理解为是socket连接,在客户端与服务端连接的时候就会建立一个Channel,它负责基本的IO操作(binf()、connect()、rad()、write()等); 1.1 Channel的作用 通过Channel可获得当前网络连接的通道状态…...

Windows中如何安装SSH

主要内容 一、参考资料二、主要过程法一:通过「设置」安装法二:使用 PowerShell进行安装在 Windows 中配置 OpenSSH 服务器过程截图 一、参考资料 Windows10 打开ssh服务,报错“The service name is invalid ” windows开启ssh服务教程 在 W…...

在linux上部署ollama+open-webu,且局域网访问教程

在linux上部署ollamaopen-webu,且局域网访问教程 运行ollamaopen-webui安装open-webui (待实现)下一期将加入内网穿透,实现外网访问功能 本文主要介绍如何在Windows系统快速部署Ollama开源大语言模型运行工具,并使用Op…...

基于大模型的招聘智能体:从创意到MVP

正在考虑下一个 SaaS 创意?以下是我在短短几个小时内从创意到 MVP 的过程。 以下是我将在这篇文章中介绍的内容概述: 为什么这个想法让我产生共鸣我是如何开始构建它的我现在的处境以及我是否会真正推出 获得 SaaS 创意并构建它并不容易。就是这样。 …...

STM32F1+HAL库+FreeTOTS学习19——软件定时器

STM32F1HAL库FreeTOTS学习19——软件定时器 1 软件定时器1.1 FreeRTOS软件定时器简介1.2 FreeRTOS软件定时器服务任务1.3 FreeRTOS软件定时器服命令队列。1.4 软件定时器的状态1.5 复位定时器1.6 软件定时器结构体 2 软件定时器配置3 软件定时器API函数3.1 xTimerCreate()和xTi…...

@RequestBody的详解和使用

RequestBody的详解和使用 提示:建议一定要看后面的RequestBody的核心逻辑源码以及六个重要结论!本文前半部分的内容都是一些基- 本知识常识,可选择性跳过。 声明:本文是基于SpringBoot,进行的演示说明。 基础知识介…...

VMware介绍及常见使用方法

VMware 是一家全球知名的虚拟化和云计算软件提供商。以下是关于 VMware 的详细介绍: 一、主要产品和功能 VMware vSphere 服务器虚拟化平台,允许将物理服务器虚拟化为多个虚拟机(VM)。提供高可用性、资源管理、动态迁移等功能,确保业务的连续性和高效性。通过集中管理控制…...

Deepinteraction 深度交互:通过模态交互的3D对象检测

一.前提 为什么要采用跨模态的信息融合? 点云在低分辨率下提供必要的定位和几何信息,而图像在高分辨率下提供丰富的外观信息。 -->因此必须采用跨模态的信息融合 提出的原因? 传统的融合办法可能会由于信息融合到统一表示中的不太完美而丢失很大一部分特定…...

开展物业满意度调查的策略与注意事项

(专业物业满意度调查公司)在物业管理领域,满意度调查是一项重要的工作,可以帮助物业公司了解居民的需求和期望,及时发现并解决问题,提升服务质量。民安智库作为专业调查咨询机构,拥有丰富的实战…...

如何使用 Maven 不同环境使用不同资源文件 提升项目安全性

需求: 之前的文章介绍过,不同环境,配置文件可以灵活构建,参考Maven 不同环境灵活构建。 进一步的,打包时时可以进一步优化,即开发环境,构建时只将测试资源文件打包到应用中,进一步提…...

QT 如何置顶窗口并激活

基本上,客户端软件都会有置顶某个窗口的需求。置顶窗口激活窗口,两者不是同一个问题。有时候窗口置顶了,并不代表该窗口属于激活状态。本文将尝试把这两个问题一起解决了,请看下文: 一、置顶窗口 通过函数setWindowF…...

嵌入式面试刷题(day19)

Makefile和Cmake的区别 Makefile 和 CMake 都是用于构建和管理软件项目的工具,但它们有不同的设计理念和使用方式。以下是二者的主要区别: 1. 概念和工作原理 Makefile: Makefile 是 make 工具的配置文件,定义了如何编译和链接程序。它基于文件的时间戳,使用规则(规则指…...

Robot Framework命令和Tag运用

前面的文章中我们为大家介绍了市面上常见自动化测试框架的解读以及Robot Framework的环境搭建,本文我们继续为大家介绍Robot Framework命令和Tag的运用,首先我们先一起看一下Robot Framework有哪些命令。 Robot Framework命令 先来看这一条&#xff1a…...

软件分享丨PDF Shaper

【资源名】PDF Shaper 【地址】https://www.pdfshaper.com/ 【资源介绍】 PDF Shaper Professional是一款功能强大的PDF文档编辑与转换工具,使用它可以对PDF文件进行各种转换、提取、合并、旋转、加密、解密等编辑操作,主要功能有分割和合并PDF文件&…...

pytorch的标签平滑介绍

什么是标签平滑(Label Smoothing)? 标签平滑(Label Smoothing)是一种正则化技术,旨在防止模型过度自信(即输出的概率分布过于“尖锐”)。在分类任务中,标准的目标标签是one-hot编码,也就是正确类别的概率为 1,其他类别的概率为 0。而标签平滑通过将正确类别的概率从…...

CTE 与存储过程:SQL 查询简化与复杂业务逻辑处理的最佳选择

CTE(Common Table Expression,公共表表达式)和存储过程是两种不同的SQL工具,分别用于解决不同的问题。它们各有优缺点,适用于不同的场景。让我们从以下几个方面来比较它们: 1. 定义与作用 CTE:…...

mysql delete命令操作后,数据库文件大小并未变化,该怎么解决?

在 MySQL 中,使用 DELETE 命令删除数据后,数据表的大小可能不会立即减小,因为 MySQL 并不总是立即回收已删除数据所占用的空间。这是因为 MySQL 的存储引擎(如 InnoDB)可能会保留这些空间以备将来插入新数据时使用&…...

GitLab 发布安全补丁版本 17.3.2, 17.2.5, 17.1.7

本分分享极狐GitLab 补丁版本 17.4.2, 17.3.5, 17.2.9 的详细内容。这几个版本包含重要的缺陷和安全修复代码,我们强烈建议所有私有化部署用户应该立即升级到上述的某一个版本。对于极狐GitLab SaaS,技术团队已经进行了升级,无需用户采取任何…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...