浅谈权限获取方法之文件上传
哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《浅谈权限获取方法之文件上传》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!
概述
文件上传漏洞是发生在有上传功能的应用中,如果应用程序对用户的上传文件没有控制或者存在缺陷,攻击者可以利用应用上传功能存在的缺陷,上传木马、病毒等有危害的文件到服务器上面,控制服务器。
漏洞成因及危害
文件上传漏洞产生的主要原因是:应用中存在上传功能,但是上传的文件没有经过严格的合法性检验或者检验函数存在缺陷,导致可以上传木马文件到服务器。文件上传漏洞危害极大因为可以直接上传恶意代码到服务器上,可能会造成服务器的网页篡改、网站被挂马、服务器被远程控制、被安装后门等严重的后果。
下面我们就文件上传的几种验证及绕过方法:
1.本地验证(前端验证)
前端JS过滤绕过上传漏洞是因为应用程序是在前端通过JS代码进行的验证,而不是在程序后端进行的验证,这样就可以通过修改前端JS代码的方式进行绕过上传过滤,上传木马。
那么如何判断是否为前端验证呢?我个人觉得我们可以看在进行上传抓包的时候是否能到数据包,是否有数据流过,或者可以看上传图片是否页面会显示上传的图片地址等。
绕过:将过滤代码删除,修改或禁用Javascript。
2.后端验证及绕过
文件上传常见验证:后缀名(直接验证),文件,文件头(间接验证)。
2.1 后缀名
2.1.1 黑名单(明确不允许上传的脚本格式后缀)
文件名过滤绕过漏洞主要是因为通过黑名单的方式判断了文件上传的类型,而且并没有完整的过滤,导致攻击者通过上传黑名单类型之外的文件。
黑名单判断方法:上传文件,系统提示不允许上传xxx格式文件。
绕过:使用其他格式(php5,Phtml,php3)或者文件大小写,同时也可以加一些干扰符号实现绕过。
2.1.2 .htaccess(伪静态协议)-重写解析(Apache才有并且开启伪静态模块)
.htaccess文件上传是利用.htaccess文件可以对Web服务器配置的功能,实现对jpg、png等后缀的文件当做PHP文件解析的过程。
.htaccess文件(分布式配置文件)提供了一种基于每个目录进行配置更改的方法,包含一个或多个配置指令的文件放在特定的文档目录中,并且文件中的指令适用于该目录及其所有子目录。.htaccess是Web服务器的一个配置文件,可以通过.htaccess文件实现Web服务器中的定义文件的解析方式、重定向等配置。
绕过方法:首先上传1.htaccess文件。2.再上传图片马。
2.1.3 空格绕过
绕过方法:数据包中文件后缀名后加一个空格实现绕过。
2.1.4 .绕过
绕过方法:跟空格绕过方法类似,数据包中文件后缀名后加一个.实现绕过。
2.1.5 ::$data绕过
这是windows特有的一种协议,在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名。
2.1.6 循环过滤
绕过:代码将字符串里的php替换为空。
如:a.pphphp 会变成->a.
2.1.7 白名单:明确可以上传的格式后缀(更安全)
%00截断、0x00截断(建立在地址上的原理,截断文件后面数据 )00截断绕过只能绕过前端验证。
截断的产生主要原因就是存在%00这个字符,PHP
绕过方法(path%00截断):
- 将test改为test.php%00aaa,1.php改为1.jpg这样可以通过验证函数。
- test.php%00aaa中的%00进行URL编码,选中%00选择【Convertselection】命令,选择【URL】命令,选择【URL-decode】命令进行编码。
3.文件类型验证
3.1 文件头检测:文件头内容信息(如gif89a)
不同的文件都有特定的文件头格式,开发者通过检查上传文件的文件头检测文件类型,但是这种检测方式同样可以被绕过,只要在木马文件的头部添加对应的文件头,这样既可以绕过检测又不影响木马文件的正常运行。
常见的文件头如下:
JPEG 0xFFD8FF
PNG0 x89504E470D0A1A0A
GIF 47 49 4638 39 61(GIF89a)
绕过方法:
- 更改头部信息达到欺骗,如在木马的头文件中添加图片文件的文件头即可绕过检测。
GIF89a
?>
- 制作图片马
直接在图片中插入一句话木马,进行上传。———利用文件包含原理。
使用cmd命令将一张正常图片 1.jpg 与一个包含一句话木马的 a.txt文件,合成一个新的test.php木马文件。
cmd命令: copy 1.jpg/b+a.txt test.php。
3.2 Content-Type检测
Content-Type用于定义网络文件的类型和网页的编码,用来告诉文件接收方将以什么形式、什么编码读取这个文件。不同的文件都会对应的不同的Content-Type,比如jpg文件的Content-Type为image/jpeg,php文件的Content-Type为application/octet-stream。Content-Type是在数据包的请求包头中,开发者会通Content-Type的类型判断文件是否允许上传。
绕过:Content-Type的类型可以通过抓包篡改,这样就可以通过抓包修改数据包的Content-Type来绕过Content-Type判断。
MIME:可以通过判断类型猜测文件后缀名,利用抓包工具将Content-Type进行篡改,如改为image/pjpeg、image/jpeg、image/gif、image/png四个中的一个即可绕过过滤。
4. 内容及其他
4.1 逻辑安全:条件竞争(相当于系统占用)
定义:竞争条件是指多个线程在没有进行锁操作或者同步操作同时访问同一个共享代码、变量、文件等,运行的结果依赖于不同线程访问数据的顺序。先将文件上传到服务器,服务器按照规则对图片选择保存与删除,漏洞点在于文件在保存到服务器之前并没有进行合法性的检查,虽然保存后进行了文件的检查,但是通过竞争条件漏洞,通过上传有写文件功能的木马,在删除木马之前访问已经上传的木马,就可以写入新的木马。
绕过:将文件上传到服务器后,我们就不断进行文件路径访问,由于条件竞争,就会达到上传Webshell的目的,漏洞利用就是发送请求通过不断上传内容,这样的访问会生成新的木马文件,然后再发送另一个请求不断访问此文件,如果竞争条件漏洞利用成功就会生成新的木马。
4.2 目录命名
绕过:通过添加/.后缀让服务器识别文件为文件夹形式,达到上传的目的,如 -x.php/.
5.其他漏洞
脚本函数漏洞-cve
CVE-2017-12615
CVE-2015-5254
CVE-2019-2618
......
这些漏洞网上都有利用教程,感兴趣的师傅可以去查阅一下资料。
6.中间件解析漏洞
6.1 IIS 6.0+解析漏洞
解析漏洞快速判断,/.php看是否有乱码,有则存在,无则不存在。
6.1.1 以文件夹执行
正常文件名:image/aa.jpg。
绕过:image.asp/aa.jpg aa.jpg就会被当作asp解析。
6.1.2 以文件执行
正常文件名:image.jpg。
绕过:image.asp;.jpg或xxx.asp;xxx.jpg 此文件会被当作asp执行。
asp可以换做php 如果换了php,那么就可以当作php执行。
7.WAF绕过
要想绕过WAF,我们需要了解哪些参数可以修改,如:
- Content-Disposition:一般可修改。
- name:表单参数值,不能修改。
- filename:文件名,可以修改。
- Content-Type(文件自带类型):文件MIME,视情况更改。
- waf绕过的核心就是在可以修改的参数名后不断修改测试,尝试绕过。
常见绕过方法:
7.1 数据溢出(垃圾数据填充)
利用WAF检测上限,添加大量垃圾数据,让其匹配不到,类似于溢出漏洞,一般可在上传参数后面添加干扰数据,垃圾数据和参数之间要记得添加;,否则数据包会报错。
7.2 符号变异('";)
利用程序开发漏洞,对数据包中上传参数中的符号进行替换,添加、删除,达到上传目的。如
如x.jpg;.php 分号代表一个数据的结束。
7.3数据截断(%00;换行)
文件后缀名后加个%00(空格)截断,x.php%00.jpg 。
换行(类似于程序中n)和数据分块传输差不多,如:
- x
- p
- h
- p
数据包其实识别的是x.npnhnp。
7.4 重复数据
相当于函数中的递归 循环,将参数在数据包中写多次原理跟垃圾数据也十分类似。
8.防御
- 部署宝塔,waf等安全产品。
- 对上传的内容进行严格多次校验。
- 对文件内容进行完整性检测。
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于科技周边的相关知识,也可关注golang学习网公众号。

- 上一篇
- 泰凡科技副总经理马国宁:图绘万象,从柯尼斯堡到百业赋能

- 下一篇
- 人工智能热度居高不下 连续三年蝉联高考志愿“最热选项”
-
- 科技周边 · 人工智能 | 24分钟前 |
- Suna—全球首发开源通用AIAgent
- 369浏览 收藏
-
- 科技周边 · 人工智能 | 2小时前 |
- VoltAgent:开源AIAgent构建编排利器
- 316浏览 收藏
-
- 科技周边 · 人工智能 | 3小时前 |
- Rowboat—开源AI工具,快速构建多智能体系统
- 355浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
-
- 协启动
- SEO摘要协启动(XieQiDong Chatbot)是由深圳协启动传媒有限公司运营的AI智能服务平台,提供多模型支持的对话服务、文档处理和图像生成工具,旨在提升用户内容创作与信息处理效率。平台支持订阅制付费,适合个人及企业用户,满足日常聊天、文案生成、学习辅助等需求。
- 2次使用
-
- Brev AI
- 探索Brev AI,一个无需注册即可免费使用的AI音乐创作平台,提供多功能工具如音乐生成、去人声、歌词创作等,适用于内容创作、商业配乐和个人创作,满足您的音乐需求。
- 2次使用
-
- AI音乐实验室
- AI音乐实验室(https://www.aimusiclab.cn/)是一款专注于AI音乐创作的平台,提供从作曲到分轨的全流程工具,降低音乐创作门槛。免费与付费结合,适用于音乐爱好者、独立音乐人及内容创作者,助力提升创作效率。
- 2次使用
-
- PixPro
- SEO摘要PixPro是一款专注于网页端AI图像处理的平台,提供高效、多功能的图像处理解决方案。通过AI擦除、扩图、抠图、裁切和压缩等功能,PixPro帮助开发者和企业实现“上传即处理”的智能化升级,适用于电商、社交媒体等高频图像处理场景。了解更多PixPro的核心功能和应用案例,提升您的图像处理效率。
- 2次使用
-
- EasyMusic
- EasyMusic.ai是一款面向全场景音乐创作需求的AI音乐生成平台,提供“零门槛创作 专业级输出”的服务。无论你是内容创作者、音乐人、游戏开发者还是教育工作者,都能通过EasyMusic.ai快速生成高品质音乐,满足短视频、游戏、广告、教育等多元需求。平台支持一键生成与深度定制,积累了超10万创作者,生成超100万首音乐作品,用户满意度达99%。
- 3次使用
-
- GPT-4王者加冕!读图做题性能炸天,凭自己就能考上斯坦福
- 2023-04-25 501浏览
-
- 单块V100训练模型提速72倍!尤洋团队新成果获AAAI 2023杰出论文奖
- 2023-04-24 501浏览
-
- ChatGPT 真的会接管世界吗?
- 2023-04-13 501浏览
-
- VR的终极形态是「假眼」?Neuralink前联合创始人掏出新产品:科学之眼!
- 2023-04-30 501浏览
-
- 实现实时制造可视性优势有哪些?
- 2023-04-15 501浏览