浅谈权限获取方法之文件上传
概述
文件上传漏洞是发生在有上传功能的应用中,如果应用程序对用户的上传文件没有控制或者存在缺陷,攻击者可以利用应用上传功能存在的缺陷,上传木马、病毒等有危害的文件到服务器上面,控制服务器。
漏洞成因及危害
文件上传漏洞产生的主要原因是:应用中存在上传功能,但是上传的文件没有经过严格的合法性检验或者检验函数存在缺陷,导致可以上传木马文件到服务器。文件上传漏洞危害极大因为可以直接上传恶意代码到服务器上,可能会造成服务器的网页篡改、网站被挂马、服务器被远程控制、被安装后门等严重的后果。
下面我们就文件上传的几种验证及绕过方法
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.14 . 绕过
绕过方法:跟空格绕过方法类似,数据包中文件后缀名后加一个.实现绕过
2.1.5 ::$data绕过
这是windows特有的一种协议,在window的时候如果文件名+"::DATA"会把::DATA"会把::DATA"会把::DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名
2.1.6 循环过滤
绕过:代码将字符串里的php替换为空
如:a.pphphp 会变成->a.
2.1.7 白名单:明确可以上传的格式后缀(更安全)
%00截断、0x00截断(建立在地址上的原理,截断文件后面数据 )00截断绕过只能绕过前端验证。
截断的产生主要原因就是存在%00这个字符,PHP<5.3.4时,会把它当做结束符,导致后面的数据直接忽略,造成截断,上传时如果上传文件的路径可控,可以通过00截断,进行木马上传。
绕过方法(path%00截断):
1.将test改为test.php%00aaa,1.php改为1.jpg这样可以通过验证函数
2.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)
绕过方法:
1.更改头部信息达到欺骗,如在木马的头文件中添加图片文件的文件头即可绕过检测。
GIF89a
2.制作图片马
1.直接在图片中插入一句话木马,进行上传。———利用文件包含原理
2.使用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.\np\nh\np
7.4 重复数据
相当于函数中的递归 循环,将参数在数据包中写多次原理跟垃圾数据也十分类似
8.防御
1.部署宝塔,waf等安全产品
2.对上传的内容进行严格多次校验
3.对文件内容进行完整性检测
数据分块传输差不多,如x.
p
h
p
数据包其实识别的是x.\np\nh\np
7.4 重复数据
相当于函数中的递归 循环,将参数在数据包中写多次原理跟垃圾数据也十分类似
8.防御
1.部署宝塔,waf等安全产品
2.对上传的内容进行严格多次校验
3.对文件内容进行完整性检测
最后
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。
因篇幅有限,仅展示部分资料,有需要的小伙伴,可以【扫下方二维码】免费领取:
相关文章:
浅谈权限获取方法之文件上传
概述 文件上传漏洞是发生在有上传功能的应用中,如果应用程序对用户的上传文件没有控制或者存在缺陷,攻击者可以利用应用上传功能存在的缺陷,上传木马、病毒等有危害的文件到服务器上面,控制服务器。 漏洞成因及危害 文件上传漏…...
资产设备防拆标签安全防护和资产定位解决方案
随着社会经济的发展和高新技术的日新月异,对各方面的安全要求也在不断地提高,以物联网安防、入侵报警和出入口控制、应急系统等为主的安全防范系统日益成为各类文物场所智能化弱电工程不可或缺的组成部分,是重点资产管理场所内加强管理和安全…...
企业电子招标采购源码之电子招标投标全流程!
随着各级政府部门的大力推进,以及国内互联网的建设,电子招投标已经逐渐成为国内主流的招标投标方式,但是依然有很多人对电子招投标的流程不够了解,在具体操作上存在困难。虽然各个交易平台的招标投标在线操作会略有不同࿰…...
【考研408】计算机网络笔记
文章目录计算机网络体系结构计算机网络概述计算机网络的组成计算机网络的功能计算机网络的分类计算机网络的性能指标课后习题计算机网络体系结构与参考模型计算机网络协议、接口、服务的概念ISO/OSI参考模型和TCP/IP模型课后习题物理层通信基础基本概念奈奎斯特定理与香农定理编…...
[C++]继承
🥁作者: 华丞臧 📕专栏:【C】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉LeetCode 文章目录一、继承…...
优化知识管理方法丨整理零碎信息,提高数据价值
信息流时代,知识成集合倍数增长,看似我们学习了很多知识,但知识零碎无系统,知识之间缺乏联系,没有深度,所以虽然你很努力,但你发现自己的能力增长特别缓慢,你需要整理知识将零散的知…...
Windows操作系统的体系结构、运行环境和运行状态
我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下Windows这个我们熟悉的不能再熟悉的系统。说Windows操作系统的运行环境和运行状态,首先要介绍一下Windows操作系统的体系结构,然后再要说到最重要的两个概念:核…...
【工作笔记】Http响应头过长
起因 突然有测试小伙伴反馈进公司官网主页会白屏,但只是个例不是普遍现象 查监控发现没监控到异常问题 查了很久(这个很久单指对于线上问题来说)才定位是请求的异常,因为这套系统的异常用的是 ExceptionHandler,这也导…...
hive建分区表,分桶表,内部表,外部表
hive建分区表,分桶表,内部表,外部表 一、概念介绍 Hive是基于Hadoop的一个工具,用来帮助不熟悉 MapReduce的人使用SQL对存储在Hadoop中的大规模数据进行数据提取、转化、加载。Hive数据仓库工具能将结构化的数据文件映射为一张数…...
【分享】灌溉制度设计小程序VB源代码
说明 根据作物需水特性和当地气候、土壤、农业技术及灌水技术等因素制定的灌水方案。主要内容包括灌水次数、灌水时间、灌水定额和灌溉定额。灌溉制度是规划、设计灌溉工程和进行灌区运行管理的基本资料,是编制和执行灌区用水计划的重要依据。 1—计划湿润土层允…...
PR9268/300-000库存现货振动传感器 雄霸工控
PR9268/300-000库存现货振动传感器 雄霸工控PR9268/300-000库存现货振动传感器 雄霸工控SDM010PR9670/110-100PR9670/010-100PR9670/003-000PR9670/002-000PR9670/001-000PR9670/000-000PR9600/014-000PR9600/011-000PR9376/010-021PR9376/010-011PR9376/010-011PR9376/010-001…...
浅谈模型评估选择及重要性
作者:王同学 来源:投稿 编辑:学姐 模型评估作为机器学习领域一项不可分割的部分,却常常被大家忽略,其实在机器学习领域中重要的不仅仅是模型结构和参数量,对模型的评估也是至关重要的,只有选择那…...
多线程的初识和创建
✨个人主页:bit me👇 ✨当前专栏:Java EE初阶👇 ✨每日一语:知不足而奋进,望远山而前行。 目 录💤一. 认识线程(Thread)🍎1. 线程的引入🍏2. 线程…...
一句话设计模式3:工厂模式
工厂模式:new多种对象的简单方式。 文章目录 工厂模式:new多种对象的简单方式。前言一、两种工厂模式二、如何实现工厂模式1. 简单工厂2. 抽象工厂总结前言 工厂模式可以说比较常见的设计模式,仔细观察在很多源码中都有此种模式的应用;用来解决创建对象的创建问题; 一、两种工…...
【Codeforces Round #853 (Div. 2)】C. Serval and Toxel‘s Arrays【题解】
题目 Toxel likes arrays. Before traveling to the Paldea region, Serval gave him an array aaa as a gift. This array has nnn pairwise distinct elements. In order to get more arrays, Toxel performed mmm operations with the initial array. In the iii-th opera…...
100天精通Python(数据可视化篇)——第77天:数据可视化入门基础大全(万字总结+含常用图表动图展示)
文章目录1. 什么是数据可视化?2. 为什么会用数据可视化?3. 数据可视化的好处?4. 如何使用数据可视化?5. Python数据可视化常用工具1)Matplotlib绘图2)Seaborn绘图3)Bokeh绘图6. 常用图表介绍及其…...
PMP考前冲刺2.27 | 2023新征程,一举拿证
题目1-2:1.在产品开发过程中,项目发起人向项目团队推荐了一种新材料,新材料比现有的材料更便宜而且性能更好。如果团队采用新材料,不但有利于提升产品质量,而且可以显著降低成本。项目经理应该怎么办?A.采用新材料&am…...
【C++】map和set的封装(红黑树)
map和set的封装一、介绍二、stl源码剖析三、仿函数获取数值四、红黑树的迭代器五、map的[]5.1 普通迭代器转const迭代器六、set源码七、map源码八、红黑树源码一、介绍 首先要知道map和set的底层都是用红黑树实现的 【数据结构】红黑树 set只需要一个key,但是map既…...
【批处理脚本】-1.14-移动文件(夹)命令move
"><--点击返回「批处理BAT从入门到精通」总目录--> 共10页精讲(列举了所有move的用法,图文并茂,通俗易懂) 在从事“嵌入式软件开发”和“Autosar工具开发软件”过程中,经常会在其集成开发环境IDE(CodeWarrior,S32K DS,Davinci,EB Tresos,ETAS…)中,…...
逻辑地址和物理地址转换
在操作系统的学习中,很多抵挡都会涉及虚拟地址转换为物理地址的计算,本篇就简单介绍一下在分页存储管理、分段存储管理、磁盘存储管理中涉及的地址转换问题。 虚拟地址与物理地址 编程一般只有可能和逻辑地址打交道,比如在 C 语言中&#x…...
HyperGBM用4记组合拳提升AutoML模型泛化能力
本文作者:杨健,九章云极 DataCanvas 主任架构师 如何有效提高模型的泛化能力,始终是机器学习领域的重要课题。经过大量的实践证明比较有效的方式包括: 利用Early Stopping防止过拟合通过正则化降低模型的复杂度使用更多的训练数…...
P6软件中的前锋线设置
卷首语 所谓前锋线,是指从评估时刻的时标点出发,用点划线一次连接各项活动的实际进展位置所形成的的线段,其通常为折线。 关键路径法 前锋线比较法,是通过在进度计划中绘制实际进度前锋线以判断活动实际进度与计划进度的偏差&a…...
Spring Boot + Vue3 前后端分离 实战 wiki 知识库系统<二>---后端架构完善与接口开发
数据库准备: 在上一次Spring Boot Vue3 前后端分离 实战 wiki 知识库系统<一>---Spring Boot项目搭建已经将SpringBoot相关的配置环境给搭建好了,接下来则需要为咱们的项目创建一个数据库。 1、mysql的安装: 关于mysql的安装这里就…...
如何在logback.xml中自定义动态属性
原文地址:http://blog.jboost.cn/trick-logback-prop.html 当使用logback来记录Web应用的日志时,我们通过在logback.xml中配置appender来指定日志输出格式及输出文件路径,这在一台主机或一个文件系统上部署单个实例没有问题,但是…...
嵌入式系统硬件设计与实践(第一步下载eda软件)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 现实生活中,我们经常发现有的人定了很多的目标,但是到最后一个都没有实现。这听上去有点奇怪,但确实是实实在在…...
Portraiture4免费磨皮插件支持PS/LR
Portraiture 4免去了繁琐的手工劳动,选择性的屏蔽和由像素的平滑,以帮助您实现卓越的肖像润色。智能平滑,并删除不完善之处,同时保持皮肤的纹理和其他重要肖像的细节,如头发,眉毛,睫毛等。 一键…...
Python学习笔记202302
1、numpy.empty 作用:根据给定的维度和数值类型返回一个新的数组,其元素不进行初始化。 用法:numpy.empty(shape, dtypefloat, order‘C’) 2、logging.debug 作用:Python 的日志记录工具,这个模块为应用与库实现了灵…...
2023年大数据面试开胃菜
1、kafka的message包括哪些信息一个Kafka的Message由一个固定长度的header和一个变长的消息体body组成,header部分由一个字节的magic(文件格式)和四个字节的CRC32(用于判断body消息体是否正常)构成。当magic的值为1的时候,会在magic和crc32之间多一个字节…...
优雅的controller层设计
controller层设计 Controller 层逻辑 MVC架构下,我们的web工程结构会分为三层,自下而上是dao层,service层和controller层。controller层为控制层,主要处理外部请求。调用service层,一般情况下,contro…...
同步、通信、死锁
基础概念竞争资源引起两个问题死锁:因资源竞争陷入永远等待的状态饥饿:一个可运行程序由于其他进程总是优先于它,而被调用程序总是无限期地拖延而不能执行进程互斥:若干进程因相互争夺独占型资源而产生的竞争关系进程同步…...
网站推广的10种方法/旅游营销推广方案
Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Sprin…...
上海高端室内设计事务所/seo排名查询软件
插件的安装如下:1.下载插件包https://github.com/vim-scripts/Pydiction可以直接下载,也可git下载[rootlocalhost]# git clone https://github.com/rkulla/pydiction.git#####################包括三个文件python_pydiction.vim #vim插件complete-di…...
域名停靠app盘他免费下载/免费seo网站自动推广软件
网络时代,一个人可以完成好多从前只有一个团队才可以完成的任务。比如游戏开发。现在开发游戏主流引擎是UNREAL 4或者UNITY。比如大家耳熟能详的吃鸡(PUBG)就是用的UNREAL 4(虚拟4)引擎开发的。王者荣耀是用UNITY 3D开…...
从网址怎么看网站的域名/品牌设计公司
这几天做了下美团校招的一些套题。(只写了编程,这两天慢慢更新吧)这套题还是蛮简单的。。我暴力了好几个都能过。一个小时多一点差不多能写完。4、棋子翻转题意:在4*4的棋盘上摆满了黑白棋子,黑白两色的位置和数目随机其中左上角坐标为(1,1),…...
南阳建网站企业/百度学术论文查重官网
NPM酷库,每天两分钟,了解一个流行NPM库。 JSON是JS中数据交换时最常用的数据格式,其序列话和反序列化性能非常好,但是其语法却比较严格,比如以下是一个合法的JS声明,却不是一个合法的JSON: { fo…...
wordpress post攻击/营销策划公司介绍
Pythen基础知识1.py简介:Py语言是由代码转换成c字节码然后再转换成机器码编码类型:ascll、万国码、utf-8、gbk(汉字)2.py基础知识2.1py变量变量命名:通俗易懂用一定含义的变量命名字母、数字、下划线命名,不…...