渗透测试-百日筑基—文件上传篇特征截断渲染%00绕过——下篇

目录

day10-渗透测试文件上传篇&绕过&特征&截断&渲染

一、黑名单大小写绕过代码分析

1、获取文件后缀名进行判断,如果后缀在这个字典里就禁止上传。

2、黑名单大小写绕过攻击

二、利用 windows 系统特征绕过上传

1、windows 系统特征绕过漏洞分析源码

2、windows 系统特征绕过攻击

三、NTFS 交换数据流::$DATA 绕过上传

1、NTFS 交换数据流::$DATA 代码分析

2、NTFS 交换数据流::$DATA 攻击绕过上传

四、利用 windows 环境的叠加特征绕过上传

1、黑名单源码分析

2、利用 windows 环境的叠加特征绕过上传攻击

3、双写后缀名绕过上传

五、文件上传双写绕过攻击

六、目录可控%00 截断绕过上传

1、上传参数目录可控代码分析

2、文件上传参数目录可控攻击

七、目录可控 POST 绕过上传

1、目录可控 post 上传代码分析

2、目录可控上传攻击

八、文件头检测绕过上传

1、常见的文件头

2、文件头检测上传代码分析

3、文件头检测绕过传攻击方法

九、绕过图片二次渲染上传

1、图片二次渲染分析代码

2、绕过图片二次渲染攻击

3、制作图片马

声明:请勿进行违法测试,任何教学出处与本博主无关


day10-渗透测试文件上传篇&特征&截断&渲染&%00&绕过

描述

    文件上传漏洞是一种常见的网络安全问题,它存在于许多Web应用程序中。当Web应用程序在处理用户上传的文件时,如果缺乏严格的安全检查和处理,攻击者就可能上传并执行恶意文件,从而对系统安全构成严重威胁。这种漏洞可能源于对上传文件的类型、大小、内容等属性的检查不严格,或对上传文件的保存路径、文件名等信息处理不当,以及未限制用户访问上传文件的权限, 如常见的头像上传,图片上传,oa 办公文件上传,媒体上传,允许用户上传文件,如果过滤不严格,恶意用户利用文件上传漏洞,上传有害的可以执行脚本文件到服务器中,可以获取服务器的权限,或进一步危害服务器。

一、黑名单大小写绕过代码分析

1、获取文件后缀名进行判断,如果后缀在这个字典里就禁止上传。

$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");

2、黑名单大小写绕过攻击

仔细阅读黑名单,查看是否有被忽略的后缀名,当前可以使用phP 绕过

二、利用 windows 系统特征绕过上传

    在 windows 中文件后缀名. 系统会自动忽略.所以 shell.php. 像shell.php 的效果一样。所以可以在文件名后面机上.绕过。

1、windows 系统特征绕过漏洞分析源码

同样是黑名单禁止上传,但是可以上传.php.这种文件后缀

2、windows 系统特征绕过攻击

抓包修改在后缀名后加上.即可绕过

三、NTFS 交换数据流::$DATA 绕过上传

如果后缀名没有对::$DATA 进行判断,利用 windows 系统NTFS 特征可以绕过上传。

1、NTFS 交换数据流::$DATA 代码分析

$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");

同样用黑名单过滤后缀名。但是程序中没有对::$DATA 进行过滤可以添加::$DATA 绕过上传。

2、NTFS 交换数据流::$DATA 攻击绕过上传

burpsuite 抓包,修改后缀名为 php::$DATA

四、利用 windows 环境的叠加特征绕过上传

    在 windwos 中如果上传文件名 moonsec.php:.jpg 的时候,会在目录下生产空白的文件名 moonsec.php,再利用 php 和 windows 环境的叠加属性, 以下符号在正则匹配时相等

双引号" 等于 点号.大于符号> 等于 问号?小于符号< 等于 星号*文件名.<或文件名.<<<或文件名.>>>或文件名.>><空文件名

 

1、黑名单源码分析

同样是黑名单匹配,把.去掉 把空格也过滤了。::$data 也过滤了

2、利用 windows 环境的叠加特征绕过上传攻击

首先抓包上传 a.php:.php 上传会在目录里生成 a.php 空白文件,接着再次提交把a.php 改成 a.>>>

3、双写后缀名绕过上传

在上传模块,有的代码会把黑名单的后缀名替换成空,例如a.php 会把php 替换成空,但是可以使用双写绕过例如 asaspp,pphphp,即可绕过上传

文件上传双写绕过漏洞分析

同样是黑名单过滤。str_ireplace 对上传的后缀名是黑名单内的字符串转换成空

五、文件上传双写绕过攻击

抓包上传,把后缀名改成 pphphp 即可绕过上传

六、目录可控%00 截断绕过上传

以上都是一些黑名单被绕过的,如果黑名单上传检测后,没有限定后缀名,绕过的方法很多,与黑名单相对的就是白名单,使用白名单验证会相对比较安全,因为只允许指定的文件后缀名。但是如果有可控的参数目录,也存在被绕过的风险。

1、上传参数目录可控代码分析

    使用白名单限制上传的文件后缀名,只允许指定的图片格式。但是$_GET['save_path']服务器接受客户端的值,这个值可被客户端修改。所以会留下安全问题。

2、文件上传参数目录可控攻击

上传参数可控当 gpc 关闭的情况下,可以用%00 对目录或者文件名进行截断。

php 版本小于 5.3.4  首先截断攻击,抓包上传将%00 自动截断后门内容。

例如 1.php%00.1.jpg 变成 1.php

七、目录可控 POST 绕过上传

    上面是 GET 请求的,可以直接在 url 输入%00 即可截断,但是在post 下直接注入%00 是不行的,需要把%00 解码变成空白符,截断才有效。才能把目录截断成文件名。

1、目录可控 post 上传代码分析

这段代码同样是白名单限制后缀名,$_POST['save_path']是接收客户端提交的值,客户端可任意修改。所以会产生安全漏洞。

2、目录可控上传攻击

    文件名可控,通过抓包修改可控的参数,与不同的中间件的缺陷配合使用

使用%00 截断文件名 再 post 环境下%00 要经过 decode 但是受gpc 限制使用 burpsutie POST %00 截断文件名

八、文件头检测绕过上传

    有的文件上传,上传时候会检测头文件,不同的文件,头文件也不尽相同。常见的文件上传图片头检测 它检测图片是两个字节的长度,如果不是图片的格式,会禁止上传。

1、常见的文件头

JPEG (jpg),文件头:FFD8FF

PNG (png),文件头:89504E47

GIF (gif),文件头:47494638

TIFF (tif),文件头:49492A00

Windows Bitmap (bmp),文件头:424D

2、文件头检测上传代码分析

这个是存在文件头检测的上传,getReailFileType 是检测jpg、png、gif 的文件头

如果上传的文件符合数字即可通过检测

3、文件头检测绕过传攻击方法

制作图片一句话,使用 copy 1.gif/b+moon.php shell.php 将php 文件附加再jpg图片上,直接上传即可。

本例子因为限制了后缀为 jpg,可以考虑文件包含将图片文件包含进去getshell

九、绕过图片二次渲染上传

    有些图片上传,会对上传的图片进行二次渲染后在保存,体积可能会更小,图片会模糊一些,但是符合网站的需求。例如新闻图片封面等可能需要二次渲染,因为原图片占用的体积更大。访问的人数太多时候会占用,很大带宽。二次渲染后的图片内容会减少,如果里面包含后门代码,可能会被省略。导致上传的图片马,恶意代码被清除。

1、图片二次渲染分析代码

    只允许上传 JPG PNG gif 在源码中使用 imagecreatefromgif 函数对图片进行二次生成。生成的图片保存在,upload 目录下

2、绕过图片二次渲染攻击

    首先判断图片是否允许上传 gif,gif 图片在二次渲染后,与原图片差别不会太大。所以二次渲染攻击最好用 git 图片马

3、制作图片马

将原图片上传,下载渲染后的图片进行对比,找相同处,覆盖字符串,填写一句话后门,或者恶意指令。

声明:请勿进行违法测试,任何教学出处与本博主无关

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

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

相关文章

C语言 | Leetcode C语言题解之第522题最长特殊序列II

题目&#xff1a; 题解&#xff1a; #define MAX(a, b) ((a) > (b) ? (a) : (b))bool is_subseq(const char *s, const char *t) {int pt_s 0, pt_t 0;int len_s strlen(s), len_t strlen(t);while (pt_s < len_s && pt_t < len_t) {if (s[pt_s] t[pt_…

STM32CUBEMX安富莱STM32-V6开发板使用FMC驱动SDRAM芯片MT48LC4M32B2TG

文章的目的是快速使用SDRAM芯片&#xff0c;没有详细讲解原理。 1、环境&#xff1a; 单片机&#xff1a;STM32F429VIT6 CUBE版本&#xff1a;STM32CUBMX 6.12.1 编译&#xff1a;KEIL MDK 硬件&#xff1a;安富莱STM32-V6开发板 SDRAM芯片&#xff1a;MT48LC4M32B2TG 2、配…

为什么QNAP威联通NAS的APP center无法安装APP?

创作立场&#xff1a;原创不易&#xff0c;拒绝搬运~ hello大家好&#xff0c;我是你们的老伙伴&#xff0c;稳重的大王~ 如题&#xff0c;大王带你一起来排查一下&#xff0c;可能遇到的问题。如有帮助&#xff0c;请给个关注鼓励&#xff0c;互谢~ 1 首先&#xff0c;安装…

第三百零一节 Lucene教程 - Lucene索引文件

Lucene教程 - Lucene索引文件 索引是识别文档并为搜索准备文档的过程。 下表列出了索引过程中常用的类。 类描述IndexWriter在索引过程中创建/更新索引。Directory表示索引的存储位置。Analyzer分析文档并从文本中获取标记/单词。Document带有字段的虚拟文档。分析仪可以处理…

人工智能算法之粒子群优化算法

人工智能算法之粒子群优化算法 粒子群优化算法&#xff08;PSO&#xff09;是一种群体智能优化算法&#xff0c;由Kennedy和Eberhart在1995年提出&#xff0c;灵感来源于鸟群、鱼群等生物群体行为。PSO通过群体中个体的交互及对周围环境的感知&#xff0c;快速找到最优解。PSO算…

【深入浅出】深入浅出transformer(附面试题)

本文的目的是为了帮助大家面试transformer&#xff0c;会结合我的面试经历以及看法去讲解transformer&#xff0c;并非完整的技术细致讲解&#xff0c;介意请移步。 结构 提到transformer网络模型&#xff0c;大家脑海中是否有这张图呢&#xff1f; 这是网络结构中经典的编解…

net 获取本地ip地址,net mvc + net core 两种

net mvc public static string GetIP(HttpRequestBase request){// 尝试获取 X-Forwarded-For 头string result request.Headers["X-Forwarded-For"]?.Split(,).FirstOrDefault()?.Trim();if (string.IsNullOrEmpty(result)){// 获取用户的 IP 地址result reques…

项目里MongodbTemplate用法

1. 先引入依赖(这里以gradle项目为例) implementation org.springframework.boot:spring-boot-starter-data-mongodb2. 在对应应类上获取MongoTemplate private final MongoTemplate mongoTemplate;3. 下面就是一些常用功能实现 注: 下面的XXX是你的表名 3.1 数据保存 实现1…

Handler、Looper、message进阶知识

Android Handler、Looper、Message的进阶知识 在Android开发中&#xff0c;Handler、Looper和Message机制是多线程通信的核心。为了深入理解并优化它们的使用&#xff0c;尤其是在高并发和UI性能优化中&#xff0c;可以利用一些高级特性。 1. Handler的高阶知识 Handler在基本…

pcl::IntegralImageNormalEstimation Assertion Assertion `v == T(Value)‘ failed.

pcl::IntegralImageNormalEstimation&#xff1a; Assertion Assertion v T(Value)’ failed. 最新项目用到IntegralImageNormalEstimation类计算法向量。配置运行成功后。 我用 PCL version 1.12.1 on Ubuntu 22. The eigen3 version is 3.4.0 运行IntegralImageNormalEst…

后端:Spring、Spring Boot-配置、定义bean

文章目录 1. 什么是Bean&#xff0c;如何配置2. 如何配置bean2.1 使用注解Bean2.2 使用注解Import 1. 什么是Bean&#xff0c;如何配置 被spring容器所管理的对象被称为bean&#xff0c;管理方式可以有纯xml文件方式、注解方式进行管理(比如注解Component)。 在Spring Boot中&…

开源一款基于 JAVA 的仓库管理系统,支持三方物流和厂内物流,包含 PDA 和 WEB 端的源码

大家好&#xff0c;我是一颗甜苞谷&#xff0c;今天分享一款基于 JAVA 的仓库管理系统,支持三方物流和厂内物流,包含 PDA 和 WEB 端的源码。 前言 在当前的物流仓储行业&#xff0c;企业面临着信息化升级的迫切需求&#xff0c;但往往受限于高昂的软件采购和维护成本。现有的…

vue添加省市区

主要参考“element”框架&#xff1a;Element - The worlds most popular Vue UI framework <div class"block"><span class"demonstration">默认 click 触发子菜单</span><el-cascaderv-model"value":options"optio…

Sigrity Power SI Resonance analysis模式如何进行谐振分析操作指导

Sigrity Power SI Resonance analysis模式如何进行谐振分析操作指导 Sigrity Power SI可以方便快捷的进行谐振分析,谐振分析的目的是为了分析电源地平面组成的腔体的谐振频率以及谐振幅度,让频率在谐振频率附近的信号避开谐振腔,以及添加相应的电容来降低谐振峰值. 仍然以这…

java-web-day7-会话跟踪技术

会话跟踪技术 1.cookie 优点:HTTP协议中支持的技术 缺点: 移动端App无法使用cookie 安全性不强, 而且用户可以自己禁用cookie cookie不能跨域 什么是跨域?协议,IP/域名, 端口三者中有一个不一样就是跨域 2.session--基于cookie实现 优点:用户数据存储在服务端, 只给浏览器一个…

vue特性

Vue.js是一套构建用户界面的渐进式框架&#xff0c;其特性主要包括以下几点&#xff1a; MVVM模式 Vue.js采用了MVVM&#xff08;Model-View-ViewModel&#xff09;的设计模式。在这种模式下&#xff0c;Model代表数据模型&#xff0c;View代表用户界面&#xff0c;ViewModel…

【AI开源项目】FastGPT- 快速部署FastGPT以及使用知识库的两种方式!

文章目录 一、FastGPT大模型介绍1. 开发团队2. 发展史3. 基本概念 二、FastGPT与其他大模型的对比三、使用 Docker Compose 快速部署 FastGPT1、安装 Docker 和 Docker Compose&#xff08;1&#xff09;. 安装 Docker&#xff08;2&#xff09;. 安装 Docker Compose&#xff…

Kubernetes实战——DevOps集成SpringBoot项目

目录 一、安装Gitlab 1、安装并配置Gitlab 1.1 、下载安装包 1.2、安装 1.3、修改配置文件 1.4、更新配置并重启 2、配置 2.1、修改密码 2.2、禁用注册功能 2.3、取消头像 2.4、修改中文配置 2.5、配置 webhook 3、卸载 二、安装镜像私服Harbor 1、下载安装包 2、…

从0学习React(7)

在上篇文章中&#xff0c;我们重点讲了关于函数组件的状态管理。这篇文章&#xff0c;我用一种新的方式来讲一讲React&#xff0c;我会通过一个函数来去讲React。当然&#xff0c;这肯定不能一个函数讲完&#xff0c;但是我可以讲很多个函数&#xff0c;一篇文章讲一个&#xf…

安卓屏幕息屏唤醒

背景&#xff0c;今天遇项目需要&#xff0c;需要在下载在后台任务运行时&#xff08;如下载、上传或进行长时间计算&#xff09;&#xff0c;保持 CPU 活动&#xff0c;然后就写了这个实现方法&#xff0c;废话不多说上代码 第一步&#xff0c;再清单AndroidManifest文件声明权…