文件上传漏洞

文件上传漏洞

1、文件上传漏洞简介
文件上传漏洞就是指攻击者上传了一个可执行文件如木马,病毒,恶意脚本,WebShell等到服务器执行,并最终获得网站控制权限的高危漏洞。
2、文件上传漏洞产生的原因
文件上传漏洞是由于程序员未对上传的文件进行严格的验证和过滤,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。
3、文件上传漏洞绕过的方法
(1)客户端校验(JavaScript)
绕过方法:

  • 禁用JavaScript(F12+F1)
    在这里插入图片描述

  • 使用burp suite工具抓包修改JavaScript代码
    在这里插入图片描述2、服务端校验(Content-Type类型校验,MIME类型校验)
    绕过方法:

  • 使用burpsuite工具抓包,修改Content-Type的参数
    在这里插入图片描述
    在这里插入图片描述3、服务端校验(后缀名黑名单校验)
    绕过方法:

  • Windows特性:大小写绕过(Windows系统不区分大小写)

  • IIS中间件特性:利用黑名单中没有的,但又能解析的后缀,例如:.php2 .php5 .phphtml .phps等等。

  • 配合Apache的.htaccess文件上传解析

一般.htaccess文件可以用来留后门和针对黑名单绕过
创建一个.txt文本写入写以下内容
<FilesMatch "abc">
SetHandler application/x-httpd-php
</FilesMatch>
保存为.htaccess文件。这段代码的意思使匹配到文件名中含有abc的字符 就以php形式去解析。
例如上传abc.gif文件,网页就会以.php去解析
  • 后缀名双写绕过
    例如:pphphp、asaspp等。

  • %00截断绕过
    文件名后缀有一个%00字节,可以截断某些函数对文件名的判断。(PHP<5.3.4时shell.php%00.jpg 可截断%00后的内容) 配合解析漏洞绕过。
    例如:test.php%00.jpg

  • 上传不符合windows文件名规则的文件名,例如:

test.asp.
test.asp(空格)
test.php:1.jpg
test.php::$DATA

4、文件上传漏洞的防御

  • 文件上传的目录设置为不可执行
    只要web容器无法解析该目录下面的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响,因此这一点至关重要。

  • 判断文件类型
    在判断文件类型时,可以结合使用MIME Type、后缀检查等方式。在文件类型检查中,强烈推荐白名单方式,黑名单的方式已经无数次被证明是不可靠的。此外,对于图片的处理,可以使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的HTML代码。

  • 使用随机数存储文件
    防止php.png等多后缀引起的漏洞。

  • 单独设置文件服务器的域名
    这个服务器不能运行任何动态网页,只能运行html和图片等静态页面。

  • 限制上传文件大小
    (1)限制上传文件的大小,防止由于内存、磁盘耗尽造成的拒绝服务。
    (2)可以配置web server允许的最大Post大小。
    (3)可以在代码层面获取上传文件的大小,根据文件类型的不同进行进一步的过滤。

  • 确保上传文件被访问正确返回
    (1)将文件上传目录设置为静态资源目录,防止被解析为脚本执行。
    (2)使用代理页面隐藏文件真实路径。
    (3)使用上述方法时,确保Content-Type与实际文件类型一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值