web网站的任意文件上传下载漏洞解析
🕗 发布于 2024-09-21 01:04 web安全 任意文件下载漏洞 任意文件下载漏洞的修复方法 任意文件下载漏洞的利用思路 任意文件上传漏洞
免责申明
本文仅是用于学习检测自己搭建的任意文件上传下载漏洞相关原理,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《中华人民共和国网络安全法》及其所在国家地区相关法规内容【学法时习之丨网络安全在身边一图了解网络安全法_中央网络安全和信息化委员会办公室】 如您继续阅读该文章即表明您默认遵守该内容。
一、任意文件上传漏洞
1.1、任意文件上传漏洞介绍
大部分的Web网站都拥有文件上传文件的接口(允许上传图片、视频、头像、文档等其他类型的文件到服务器上);但是如果Web网站的开发人员并没有对上传的文件相关参数、内容信息进行严格的过滤防护,未对安全进行考虑;那么攻击者就可以通过一些方法将恶意文件上传到服务器上,然后通过上传的恶意文件来访问甚至控制整个服务器。
一般来说攻击者上传的恶意文件被称为网页后门(即WebShell)是一种木马程序,该后门的功能非常强大(可以进行查看服务器目录、服务器文件、执行系统命令、拉取或删除服务器文件等操作)。
1.2、任意文件上传漏洞测试流程
Web网站中只要是有文件上传的位置都可以用来测试是否存在漏洞。
1.3、任意文件上传漏洞绕过方式
任意文件上传漏洞测试方式
检测文件类型位置 |
说明 |
前端js校验绕过 |
1、针对前端对上传文件类型的校验,检查html元素直接将校验的js事件删除掉再测试上传文件(可通过火狐浏览器删除、谷歌和Edge浏览器好像不支持) |
2、将我们需要上传的webshell文件复制一份,然后将复制的文件后缀类型修改为Web网站支持的后缀类型(如.jpg或.png),此时我们再上传修改了后缀的webshell文件,在点击上传按钮前开启抓包,抓取到包后将文件的后缀名称修改为webshell真实的后缀名称,放行即可上传文件 |
后端校验绕过 |
1、检查上传文件后缀 检查文件后缀也就是对文件类型的检验,我们可以采用黑名单、白名单的方式绕过: 《1》黑名单:指Web开发人员在编写文件上传功能对文件后缀进行校验功能编写的时候,直接将类似(.php、.asp、.aspx、.jsp)后缀内容直接加入黑名单,不然这类格式的文件上传到服务器上【这种黑名单过滤方式有缺陷,很容易绕过((如:后缀大小写混合、修改后缀名为php3、php5方法即可绕过))】。 |
2、检查上传文件内容 《1》MIME类型检查(MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型;主要用于设定某种扩展名的文件用一种应用程序来打开的方式类型。 【每个MIME类型由两部分组成:前面是数据的大类别、后面是具体的种类】) 常见 MIME 类型列表 - HTTP | MDN (mozilla.org)https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
# 常见的MIME类型如下:
application/octet-stream //任意类型的二进制数据
application/json //json字符串数据
text/xml //xml文档(.xml)
text/html //超文本标记标记语言内容(.html\.htm)
text/plain //普通文本(.txt)
application/pdf //pdf文档(.pdf)
application/msword //word文档(.word)
image/jpeg //jpeg图片(.jpg\.jpeg)
image/png //png图片(.png)
image/gif //gif图片(.gif)
video/mpeg //MPEG文件(.mpeg\.mpg)
video/x-msvideo //AVI文件(.avi)
application/x-gzip //GZIP文件(.gz)
绕过MIME类型检查的方法就是使用抓包工具去上传文件的包,然后将【Content-Type】内容修改为支持的MIME类型即可。 《2》代码使用getimagesize() 函数检查文件内容(getimagesize() 是php的一个函数,用于获取图像大小及相关信息,成功返回一个数组,失败则返回FALSE 并产生一条 E_WARNING 级的错误信息) # 绕过getimagesize()函数的三种方法:
1、直接伪造头部GIF89A;
2、CMD方法,copy /b test.png+1.php webshell.png(将需注入的文件与正常的文件合并为一个文件);
3、直接使用工具增加备注写入一句话木马(在正常文件后面添加木马内容); |
1.4、以upload-labs为例进行说明上传文件漏洞绕过方式
GitHub - c0ny1/upload-labs: 一个想帮你总结所有类型的上传漏洞的靶场https://github.com/c0ny1/upload-labs可以使用phpStudy搭配upload-labs搭建环境进行绕过测试学习任意文件上传漏洞(安装好pypStudy2016后直接将upload-labs内容放到phpStudy2016的网站根目录(www)下即可)如下图所示:
原文地址:https://blog.csdn.net/xiaochenXIHUA/article/details/142305919
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!
-
【循环神经网络】
RNN是一种强大的序列建模工具,适合处理各种时间序列和自然语言数据。然而,传统RNN在处理长序列时存在梯度消失问题,随着LSTM和GRU等改进模型的引入,RNN的性能得到了极大提升。无论是在自然语言处
阅读更多2024-11-17
-
Linux---shell脚本
希望通过本文的学习,你能够掌握Shell脚本的基本知识和实用技巧,将Shell脚本融入到你的日常工作中,成为你提高工作效率、实现自动化任务的得力助手。让我们一起踏上这段探索Shell脚本的旅程,开启一
阅读更多2024-11-17
-
Linux-DNS
Linux中配置DNS服务,包括DNS工作流程、配置等、以及其他的一些需要注意的配置文件
阅读更多2024-11-17
-
DLL注入
在DLL注入的时候,起的是远程的线程在上面的参数中,lpStartAddress就是线程的函数,使用LoadLibrary的地址作为线程函数的地址,这样我们就可以用LoadLibrary来起lpPar
阅读更多2024-11-17
-
力扣62.不同路径
所以有 从左上角到右下角的过程中,我们需要移动 m+n−2 次,其中有 m−1 次向下移动,n−1 次向右移动。由于我们每一步只能从向下或者向右移动一步,因此要想走到 (i,j),如果向下走一步,那么
阅读更多2024-11-17
-
【JAVA毕业设计】基于Vue和SpringBoot的冬奥会科普平台
本文首先介绍了冬奥会科普管理的技术发展背景与发展现状,然后遵循软件常规开发流程,首先针对平台选取适用的语言和开发平台,根据需求分析制定模块并设计数据库结构,再根据平台总体功能模块的设计绘制平台的功能模
阅读更多2024-11-17
-
基于Spring Boot的电商系统开发策略
现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。网上商城系统的设计方案比如功能框架的设计,比如数据库的设计的好坏也就决定了该系统在
阅读更多2024-11-17
-
C++创建型模式之原型模式
通过原型设计模式,我们可以轻松地复制现有角色,避免了重复的构造代码,并且可以根据需要对克隆的角色进行微调。这种模式在复杂的游戏场景中非常有用,特别是在需要创建多个相似角色时。相似性:原型模式和拷贝构造
阅读更多2024-11-17
-
【C语言】前端未来
WebXR:WebXR是Web Reality Experience的缩写,它通过AR和VR技术提供沉浸式的交互体验,预计在未来会成为构建虚拟现实应用的重要平台,特别是结合混合现实设备如手机和头戴设备
阅读更多2024-11-17
-
ASUS/华硕灵耀X双屏Pro UX8402Z 原厂Win11-22H2系统 工厂文件 带ASUS Recovery恢复
系统 ,安装结束后带隐藏分区,一键恢复,以及机器所有驱动软件。请注意:仅支持以上型号专用,其他华硕机器切勿使用。需准备一个20G以上u盘进行恢复。系统版本:windows11。
阅读更多2024-11-17