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

文件上传漏洞基础及挖掘流程

基础介绍

定义

用户通过文件上传的功能模块进行文件上传时,如果服务端没有对上传文件进行严格的验
证和过滤,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。则
攻击者可以通过上传木马,webshell等恶意文件,经过web容器进行解析,对服务器进行
攻击造成伤害,叫文件上传漏洞。(常见上传点,头像,简历附件,留言栏,教务系统分数上传等)

产生原因

1没有对上传文件进行严格安全校验
2.服务器配置不当
3.过滤不严格(只检测了后缀,没有对文件内容进行检验)
4,没有对上传文件进行限制
5,中间件等存在解析漏洞
6.本地文件上传限制被绕过
7.文件路径截断

造成危害

1.上传web脚本语言,经过服务器的web容器解析并执行可导致远程代码执行。(比如说通过上传webshell到了对方服务器,我们就可以通过蚁剑,冰蝎,哥斯拉来对webshell进行链接,在链接后我们就可以通过控制对方服务器执行命令,它所能执行的命令是比通常的图形化界面所能执行的命令更多)
2.上传文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行为(其
他通过类似方式控制策略文件的情况类似)。
3.上传文件是病毒、木马文件,诱骗用户或者管理员下载执行,进行挖矿等。
4,上传文件是钓鱼图片或包含了脚本的图片,进行钓鱼和欺诈。
5,不常见的利用方法,以文件上传为入口,上传一个包含php脚本的合法的文本文件,在
利用本地文件包含漏洞(LocalFileInclude)执行此脚本。(多漏洞间的合作,比如通过文件上传漏洞进一步达成与文件下载漏洞进行合作,进一步控制对方服务器)

上传流程

1,客户端>表单上传->服务器接收上传信息-->存储为临时文件->服务器对上传文件
进行安全性处理(通过PHP代码的指导进行文件安全性检测)-->重命名-->转存为正
式文件
(先检测再上传,文件上传后会存储为临时文件,然后服务器再对其进行处理,其中攻击方是无法知道文件会临时存储于什么位置,合格则重命名,不合格则删除)
2.客户端->表单上传->服务器接收上传信息->将文件存储在服务器固定路径->对文
件进行检测->合格保留
,不合格对文件进行删除,对上传者进行提示(先上传再检测,是攻击方先将文件直接上传到目的地址/目标路径(比如服务器所在地址路径)了后,服务器再对其进行检测,合格就保留,若不合格再对其进行删除;不合理处在于,若攻击方比服务器更快,在对方没有反应过来前就进行了一个链接)

上传漏洞挖掘流程

1、渗透测试目标:寻找漏洞,拿下对方服务器
进入后台,通过文件上传,可以上传木马等文件->进行后续利用。(具体挖掘流程我们应先看这个网站它有哪些功能点,发现存在文件上传点,如在用户个人信息这些位置可以上传一些文件/头像这些,然后进行挖掘绕过,先判断是前端检测还是后端检测)
2、绕过思路:
检查前后端(若为前端检测:1.可以通过一些js插件关掉前端;2.浏览器自身设置F12和F1来关掉    前端js;3.修改它的页面源代码;4.BP改包。若为后端检测:大小写,空格,竞争上传,文件流,双写,结合一些解析漏洞等)
检查黑白名单(上传随机文件后缀)
检测文件内容还是文件后缀(gpj后缀改为word会损坏文件内容,通过这种方式去判断是检测内容还是文件后缀)
检查内容是否会对图片进行二次渲染(应用在图片木马检测中,二次渲染主要针对图片的有效图像数据进行处理,因此如果对图片木马进行了二次渲染的话我们要对其进行绕过,就要把一句话插入到 图片在二次渲染后会保留的那部分数据里,确保不会在二次处理时删除掉)
是否采用waf
是否有中间件可以进行利用

具体操作

1.先上传图片格式文件如:png,确定上传点有效性(游戏上传点是假的,不能上传图片)
2.对图片进行图片马制作,图片马可以进行大部分绕过
3.检查图片马是否制作成功,能否正常使用。
检查步骤:进入本地测试(不是桌面修改),成功在进行后续实战环节。
方一:先将图片码改为php后缀,进行调用。若出现乱码则说明在经过二次渲染后是不能对图
片进行正常解析的(说明图片已经被当作PHP执行)
方二:图片马下载后,更改后缀名为.txt,看里面还木马代码是否还在。是否被
篡改是否能用(若已被篡改则后续需更换绕过方式)
4.可用后在进行后续判断,前后端通过插件进行测试
5.进行黑白名单,通过输入随机后缀进行上传
6.多次进行测试(黑盒测试)

可扩展攻击面

文件上传时常见程序功能之一,比如用户头像上传。但文件上传点不仅只涉及图像相关的扩展,还
会涉及其他业务的其他扩展共同构成系统功能。所以我们可以通过文件上传进行相关扩展,进行其
他类型漏洞利用攻击,扩大攻击范围,挖掘其他漏洞类型。如:
1.远程代码执行
文件上传可以通过上传shel对目标服务器进行控制,进一步执行相关操作,拿到对方服务器权限。
如可以通过上传一句话木马,上传成功后,使用webshell相关管理工具进行连接访问,对其进行命
令执行相关操作执行shell。
2.大文件拒绝服务
是否有大小限制上传文件
通常存在与文件上传功能相关的大小限制,其范围可能从5MB到200MB甚至更小/更大,具体取决于应用程序逻辑。但是,在某些情况下,如果未定义此限制或不存在适当的验证检查,则可能允许攻击者上传相对较大的文件,从而导致资源消耗,从而可能导致拒绝服务情况。
要检查是否存在大文件拒绝服务简单操作步骤:
1.创建一个大于定义上限的文件。例如,具有500MB文件大小的图像文件。
2.现在,上传文件,如果应用程序接受文件并开始处理它,从另一台设备浏览应用程序以查看是否有任何缓慢的行为或连接错误。

防护方式

今典方式: 过滤、封端口、关服务
1.通过服务器后端对上传的文件进行过滤,防止本地文件上传限制被绕过
2,及时查看最新公布漏洞通告,如果服务器中涉及相关组件,要及时更新补丁包
3,对文件上传的目录进行控制,设置为不可执行。只要保证web容器无法解析该目录下面的文件,即使攻击者上传了脚本文件,服务器不对其进行解析,木马等也不会生效。(主要两种方式,先检测再上传和先上传再检测,主要避免先上传再检测这种方式)
4,对上传文件类型进行判断。可以结合使用MIMEType、后缀检查等方式。在文件类型检查中,尽量使用白名单方式,黑名单和前端都属于不可靠的。
5,使用随机数改写文件名和文件路径。文件上传如果要执行代码,则需要用户能够访问到这个文件。在某些环境中,用户可以进行病毒木马等有害文件上传,但如果应用随机数改写了文件名和路径,攻击者在不知道程序源码情况下不了解随机数等规则,即不知道文件名称就不能访问。还有像shell.php.rar.rar和crossdomain.xml这种文件,都将因为重命名而无法攻击。

http://www.dtcms.com/a/362214.html

相关文章:

  • 2013 NeuralIPS Translating Embeddings for Modeling Multi-relational Data
  • JAVA后端开发——MyBatis 结合 MySQL JSON 类型查询详解
  • vue组件中实现鼠标右键弹出自定义菜单栏
  • 智慧交通时代,数字孪生为何成为关键力量?
  • Map接口
  • 基于若依框架前端学习VUE和TS的核心内容
  • 手搓3D轮播图组件以及倒影效果
  • 基于STM32的ESP8266连接华为云(MQTT协议)
  • leetcode46.全排列
  • java web 练习 简单增删改查,多选删除,包含完整的sql文件demo。生成简单验证码前端是jsp
  • (Mysql)MVCC、Redo Log 与 Undo Log
  • C#知识学习-012(修饰符)
  • Python OpenCV图像处理与深度学习:Python OpenCV边缘检测入门
  • FastLED库完全指南:打造炫酷LED灯光效果
  • 【Excel】将一个单元格内​​的多行文本,​​拆分成多个单元格,每个单元格一行​​
  • 【设计模式】--重点知识点总结
  • C++ Bellman-Ford算法
  • Linux并发与竞争实验
  • 软件使用教程(四):Jupyter Notebook 终极使用指南
  • 数据分析编程第八步:文本处理
  • 设计模式-状态模式 Java
  • 华清远见25072班I/O学习day2
  • PostgreSQL备份指南:逻辑与物理备份详解
  • 椭圆曲线群运算与困难问题
  • 【数据分享】多份土地利用矢量shp数据分享-澳门
  • AI产品经理面试宝典第81天:RAG系统架构演进与面试核心要点解析
  • Qt中的信号与槽机制的主要优点
  • 自动化测试时,chrome浏览器启动后闪退的问题
  • 【趣味阅读】Python 文件头的秘密:从编码声明到 Shebang
  • VisionProC#联合编程相机实战开发