【DoraBox实战】————5、文件上传分析与研究

本文深入探讨文件上传漏洞的成因及利用条件,分析多种限制上传机制的绕过方法,包括JS、MIME、扩展名、内容检测等,揭示web安全中的关键风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件上传漏洞

“文件上传”功能已经成为现在Web应用的一种常见需求,它不但有助于提供业务效率(例如:企业内部文件共享),更有助于优化用户的体验(例如:上传视频、图片、头像等各种其他类型的文件)。“文件上传”功能一方面带来了良好的体验,另一方面也带来的“安全问题”。目前文件上传漏洞已经成为web安全中经常利用到的一种漏洞形式,对于缺少安全防护的web应用,攻击者可以利用提供的文件上传功能将恶意代码植入到服务器中,之后再通过url去访问以执行代码达到攻击的目的。

文件上传漏洞产生的原因

造成文件上传漏洞的原因有:

  • 开源编辑器的上传漏洞
  • 服务器配置不当
  • 本地文件上传限制被绕过
  • 过滤不严或被绕过
  • 文件解析漏洞导致文件执行
  • 文件路径截断

文件上传漏洞利用的条件

  • 恶意文件可以成功上传
  • 恶意文件上传后的路径
  • 恶意文件可被访问或执行

DoraBox文件上传漏洞分析与研究

任意文件上传

分析:如下图所示,在文件上传时未对文件的类型以及文件的大小、后缀等进行检查,可以上传任意文件

利用:

下面上传一个php一句话木马看看:

链接shell:

JS限制文件上传

JS限制文件上传属于前端检查,对于这种限制我们可以通过burpsuite修改数据包的形式来绕过前端的检查上传任意文件,首先我们来查看一下源代码:

从上面我们可以看到对文件的后缀名进行了检查,下面我们进行测试利用一波~

利用:

首先将shell.php改为shell.jpg,之后上传文件,并使用burpsuite抓取数据包:

之后使用蚁剑来连接该shell:

MIME限制文件上传

MIME属于服务器端检测,对于这种类型的检测方式我们可以通过burpsuite来修改content-type来实现绕过:

分析:源代码:

以上实现了对文件类型的检查,下面我们来利用一波~

利用:

直接上传php文件发现报错“文件类型不正确,请重新上传”

之后上传PHP文件,同时使用burpsuite抓取数据包来修改content-type试试看:

可以发现成功上传文件~

之后使用蚁剑链接试试看~

扩展名限制文件上传

对于扩展名的检查是在服务器端完成的,对于这种类型的检查我们通常有以下几种绕过检测的方法:

1、找黑名单扩展名的漏网之鱼 - 比如上面就漏掉了 asa 和 cer 之类
2、可能存在大小写绕过漏洞 - 比如 aSp 和 pHp 之类
3、特别文件名构造 - 比如发送的 http 包里把文件名改成 help.asp. 或 help.asp_(下划线为空格),这种命名方式在 windows 系统里是不被允许的,所以需要在 burp 之类里进行修改, 然后绕过验证后,会被 windows 系统自动去掉后面的点和空格。
4、IIS 或 nginx 文件名解析漏洞

   比如 help.asp;.jpg 或 http://www.xx.com/help.jpg/2.php
   这里注意网上所谓的 nginx 文件名解析漏洞实际上是 php-fpm 文件名解析漏洞

5、0x00 截断绕过 - 这个是基于一个组合逻辑漏洞造成的
6、双扩展名解析绕过攻击(1) - 基于 web 服务的解析逻辑,比如上传x.php.rar等文件
7、双扩展名解析绕过攻击(2) - 基于 web 服务的解析方式

分析:

以上采用黑名单的方式进行检查,这里未严格检查后缀的大小写、同时可以使用“."或者“_”来绕过,下面进行简易的测试利用~

利用:

大小写:

查看upload文件夹下发现确实上传成功~

之后使用蚁剑链接一波看看~

使用"_"来上传:

之后蚁剑链接:

这里很多人好奇为什么“.php_”可以被解析,其实是因为php底层是c语言写的,c语言中“_”可被解析为“空格”,但是在linux中不行。

使用“.”来绕过:

与之前不同的是这里直接显示为了.php文件:

为了避免误会,我这里将下面的.php_文件删除,之后再使用蚁剑链接:

同样的道理,成功上传~

内容检测绕过

对于内容检测这种检测方式确实有点头疼对于一次文件头、文件头+局部内容、一次渲染还好一些,但是碰到二次渲染估计就不太好玩了哦~,下面我们先来分析一波源代码吧:

分析:

从上面的代码可以了解到这里对于文件的大小、文件内容奖项了检查,所以我们要考虑到这几点来进行绕过检测,之后上传文件,这里采用添加文件头的方式:

利用:

成功上传文件:

之后使用蚁剑链接一波看看:

至此,文件上传小结告一段落,后面会继续介绍更加精彩的内容~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FLy_鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值