揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?

2024-10-16 5 0

前言

在网安领域,文件上传漏洞是Web和移动应用程序中最常见的漏洞之一,在大多数网站中几乎都有文件上传功能,它允许攻击者上传恶意文件到服务器,可能导致远程代码执行、数据泄露等严重后果。本文将详细介绍Web文件上传漏洞的攻击方法以及防御策略,旨在帮助网络安全从业者和爱好者加深对这一领域的理解。

揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?插图1

特此声明: 本文章仅用于信息安全教学,请遵守相关法律法规,严禁用于非法途径。若阅读者因此作出任何危害网络安全的行为,后果自负,与UP主无关。遵纪守法做一个良好公民,切勿违法国家计算机安全法,以免牢底坐穿。

目录

本文章将详细讲解文件上传漏洞的完整流程, 内容包含有:

  • 文件漏洞生命周期
  • 1,识别网站框架
  • 2.漏洞发现
  • 3.制作/利用一句话小马
  • 4.文件漏洞深透测试
  • 5.绕过文件上传过滤器
    • 前端过滤器 
    • 黑名单绕过
    • 白名单绕过
    • 文件扩展名绕过
    • 双重后缀名绕过
    • 反向后缀名绕过
    • 字符注入绕过
    • 内容类型过滤器绕过
    • mime类型过滤器绕过
  • 其他类型文件上传攻击
    • xss 文件上传攻击
    • xxe 文件上传攻击
    • Dos 文件上传攻击
    • 文件名中的注射上传攻击
    • 上传目录报漏
    • window 特定文件上传攻击
    • 高级文件上传攻击
  • 如何预防上传漏洞
    • 扩展名验证
    • 文件内容验证
    • 上传目录隐藏
    • 进一步安全策略

简介

文件上传漏洞(File upload attack)是web应用站点中允许用户上传图片、视频、文件资源到网站服务器中, 网站返回一个可以展示的链接到客户端.攻击者将编写一些恶意文件上传到网站服务器中, 从而对网站服务器进行恶意攻击、控制服务器以及盗取数据等等, 且难以排查出漏洞的文件. 这是一个比较严重的漏洞. 造成的影响大.

玩过dnf的不知道是否有过这样的经历, 在拍卖行发现便宜的装备购买时, 对方联系你让你加他. 以给你看装备等理由发一个图片给你, 你打开后,电脑就被对方控制进行交易所有金币等装备给到对方了.

这就是一个典型文件上传的案例, 我就是这个案例, 还好当初年轻手速快,立马关机.

生命周期

在对一个文件上传漏洞攻击的流程为: 识别网站框架->制作攻击文件->漏洞将恶意文件上传->文件利用.

揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?插图2

接下来我们根据演示整个文件上传漏洞流程, 我搭建了一个网站,以这个网站为靶机进行文件上传漏洞介绍

揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?插图3

1.识别网站框架

就如电脑木马一样, mac木马和win木马是不同的写法, 因此我们必须知道网站的框架,从而写对应的恶意攻击文件.

1.1 查看网站路径后缀识别

我们可以通过网站后缀识别网站使用的是什么语言, 例如后缀为: .php 的语言为php, asp的为asp语言, html 可能也是php语言, 如果你不清楚这些后缀对应的语言,可以复制这些后缀问问度娘,

当让并非所有后缀都是真的, 开发者可能会根据网站需求做个伪静态或为后缀进行伪装.

伪静态: 通常将服务器语言伪装成html后缀, 便于seo优化等等.

例如我们网站的后缀就没做处理,从后缀可以看出,是php开发的网站

揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?插图4

1.2 使用Wappalyzer扩展

如果无法识别或网站隐藏后缀,我们可以尝试使用 浏览器扩展:Wappalyzer 插件

进行指纹识别网站框架, 这个扩展可在火狐、谷歌中扩展插件市场中下载.

揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?插图5

1.3 通过响应体

我们也可以打开浏览器f12查看网络响应内容也会得到一些网站指纹信息,例如这里返回了web服务器是nginx, 有的网站会返回服务端语言,

揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?插图6

1.4 更多网站指纹工具

还有很多指纹工具, 在文章结尾会列出相关工具, 这里就单介绍一个常用的工具

2.漏洞发现

当我们已经了解到网站框架时,我们就可以上传相同扩展名的文件进行文件上传漏洞测试了, 例如发现服务端语言是php, 那么我们可以测试上传一个php语言文件到服务端, 如果上传成功, 说明存在文件上传漏洞,我们就可以对该漏洞进行利用,

揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?插图7

3.漏洞利用-制作/利用小马

当我们发现漏洞时, 我们可以开始编写执行文件(小马),

通常, 文件上传攻击就和打电话一样, 我们打电话给别人时必须输入手机号码,然后进行拨号,告知对方.

小马通常为:接收方,大马为拨打方.

我们必须要上传一个木马作为接受方提供给我们交互的通道. 然后通过大马进行交互操作.

小马网上有很多种写法,在github上也有, 大家可自行去挖掘,这边展示几个作为例子,例如php, 我们可以在使用前辈写好的:phpbash

将这个文件上传到服务端访问就可以输入linux命令进行交互了. 这个小马的特别处在于,它不用大马控制了,它提供了一个交互页面, 可以直接在小马中控制服务端.

揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?插图8

3.1 制作一句话木马

如果因程序原因无法上传这个文件或这个文件并不满足你的需求,我们可以自己写一个,当然网上有很多优秀的写法, 这里简单的解释一下

例如,对于PHP Web应用程序,我们可以使用system()函数来执行系统命令并打印其输出,并使用$_REQUEST['cmd']传递cmd参数,如下所示:

<?php system($_REQUEST['cmd']); ?>

// system() 函数 是php语言和服务器进行交互的一个方法, 可以通过参数允许linux命令

// $_REQUEST['cmd'] 是路径的参数, 例如我们上传后链接是: xxx/uploads/shell.php 通过访问xxx/uploads/shell.php?cmd=id 进行linux交互,

// 正如上方的例子, 拨打电话必须要输入对方手机号码, 这个 “cmd” 就是: “电话号码”

揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?插图9

4.文件上传漏洞渗透测试

我们就先从phpbash尝试上传看看, 我们吧 phpbash.php 文件上传到头像中,

揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?插图10

发现上传成功了:

揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?插图11

我们拿这个链接去访问发现恶意文件能正常运行了:

揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?插图12

然后我们就可以输入linux命令去控制着台电脑了, 这就是一个基本的文件上传漏洞流程, 但我们会发现这个示例在现实世界中,基本灭绝了, 开发者不会啥也不验证直接给你上传,  只有实习生开发者会写出这样的代码.

5.绕过过滤器

网安人员和开发者是两个斗智斗勇的敌对关系, 开发者通常都会做一些安全认证、比如文件白名单、黑名单、文件类型控制、过滤器等等对文件进行控制.

如何去绕过开发者做的这些验证和过滤器呢, 下面介绍一些方法, 可以参考一下.

5.1 前端过滤器

很多网站程序因为老板要求:快!快!快!, 因此要快速上线, 一般后台都不做任何验证,而由前端进行验证所选文件.

然而,由于文件格式验证正在客户端进行,我们可以通过直接抓包来轻松绕过它,完全跳过前端验证。

我们还可以通过浏览器的开发工具修改前端代码,以禁用任何有效的验证。

揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?插图13

简单的说下, 如何判断是否是前端过滤器, 可在上传时查看网络是否有新增一条网络记录,如没有,那么就是前端过滤器

我们打开f12查看源代码, 定位上传按钮,我们发现这个按钮有一些参数:

揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?插图14

我们不必知道这些参数全部代表什么意思,我们已经知道时这个元素控制上传的, 那么我们到源代码中搜索错误描述,看看这个按钮执行的逻辑是什么:

揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?插图15

我们搜索到,这个元素执行前会进行验证文件格式,根据参数:options.accept 这个参数进行判断文件类型的, 那只要我们修改这个参数为 file 格式就可以绕过这个验证了. 这个在哪里改呢?

正如上面定位元素节点时,我们发现了元素的属性: lay-data="{....}" 大概率这个就是配置了,我们编辑一下, 增加 options.accept 参数:

揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?插图16

保存后,我们重新上传恶意文件试试:

揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?插图17

这次成功上传了.

5.2 黑名单绕过

在上一节中,我们看到了一个Web应用程序的示例,该应用程序仅在前端(即客户端)上应用类型验证控件,这使得绕过这些控件变得微不足道。这就是为什么总是建议在后端服务器上实施所有与安全相关的控制,攻击者无法直接操作它。

尽管如此,如果后端服务器上的类型验证控件没有安全编码,攻击者可以利用多种技术来绕过它们并访问PHP文件上传。

5.2.1 文件扩展名验证绕过

经过前面被轻易的上传恶意文件, 小白已经加固了安全验证,这次小白在服务端加上了限制文件扩展名策略

揭秘:如何攻破Web文件上传漏洞并巧妙绕过安全策略?插图18

这难不倒我们,  我们分析下小白的代码:

$blacklist = ['php', 'php7', 'phps'];
if (in_array($nameArr[$num], $blacklist)) {
   return $this->errorType=2;//文件类型不符
}

从代码看到, 小白控制了php, php7, phps 后缀的都不能上传.

我们发现,这种验证方法有一个重大缺陷,因为许多其他扩展不包括在此列表中,如果上传,这些扩展仍然可用于在后端服务器上执行PHP代码。

同时,

上述比较也区分大小写,仅考虑小写扩展。在Windows服务器中,文件名不区分大小写,因此我们可以尝试上传带有混合大小写(例如pHp​)的php​,这也可能绕过黑名单,并且仍然应该作为PHP


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

网络安全新纪元:如何利用AI和机器学习重新定义网络安全的未来
巧用开源PeteReport-Zh生成渗透测试报告
Damn-Vulnerable-Drone:一款针对无人机安全研究与分析的靶机工具
网络⼯具中的瑞⼠军⼑——NC
Betterscan:一款多功能代码安全编排与审计工具
指针分析与Java反序列化利用链挖掘实践(一)

发布评论