00截断上传绕过_文件上传利用绕过方式总结

前端验证

1.1 修改前端 javascript 文件将限制代码去掉

1.2 传参过程中抓包修改后缀

1.3 前端禁用 javascript 脚本

后端验证

2.1 基于 MIME 校验

2.1.1 校验 content-type 请求头

2.1.2 修改文件后缀

2.2 基于后缀绕过

2.2.1 黑名单验证绕过

2.2.1.1 针对 windows 系统绕过

2.2.1.1.1 使用其他可执行并且未限制的后缀名

2.2.1.1.2 大小写混合绕过

2.2.1.1.3 文件名双写绕过

2.2.1.1.4 末尾添加 . 绕过

2.2.1.1.5 末尾添加空格绕过

2.2.1.1.6 末尾添加 ::$DATA 绕过

2.2.1.1.7 00截断上传

2.2.1.1.8 上传 .access 文件

2.2.1.1.9 条件竞争绕过

2.2.1.1.10 上传图片马配合文件解析漏洞绕过

2.2.1.2 针对 linux 系统绕过

2.2.1.2.1 使用其他可执行并且未限制的后缀名

2.2.1.2.2 文件名双写绕过

2.2.1.2.3 00截断上传绕过

2.2.1.2.4 上传 .access 文件

2.2.1.2.5 条件竞争绕过

2.2.1.2.6 上传图片马配合文件解析漏洞绕过

2.2.2 白名单验证绕过

2.2.2.1 上传图片马配合文件解析漏洞绕过

2.2.2.2 上传 .access 文件绕过

2.3 基于文件内容验证

2.3.1 上传图片马配合文件解析漏洞绕过

1. 前端验证

前端验证的概念是与后端验证所区分而来,所谓前端文件验证,即是在文件正式开始上传之前,例如利用 javascript 脚本,对文件进行白名单或黑名单过滤,符合规则即可以向服务器上传,不符合则拒绝上传。

常规的 javascript 限制上传文件后缀代码:

alert('图片不能为空!');            return false;

} else {            if(aa[aa.length - 1] == 'gif' || aa[aa.length - 1] == 'jpg' || aa[aa.length - 1] == 'bmp' || aa[aa.length - 1] == 'png' || aa[aa.length - 1] == 'jpeg')

{                var imagSize = document.getElementById("userfile").files[0].size;

alert("图片大小:" + imagSize + "B")                if(imagSize < 1024 * 1024 * 3)

alert("图片大小在3M以内,为:" + imagSize / (1024 * 1024) + "M");                return true;

} else {

alert('请选择格式为*.jpg、*.gif、*.bmp、*.png、*.jpeg 的图片');                return false;

}

}

}

1.1 修改前端 javascript 文件将限制代码去掉

虽然使用 javascript 脚本对上传的文件进行里过滤,但是由于 javascript 代码放在前端,这就意味着 javascript 可以在客户端直接被修改,所以我们可以在浏览器直接按“F12”查看页面代码并进行编辑,那么就可以把限制代码改掉。

1.2 传参过程中抓包修改后缀

可以不修改 javascript 代码,例如制作一个简单的 php webshell ,再将 webshell 的后缀改成符合 javascript 的 png 后缀,上传文件,再使用 burpsuite 抓取数据包(此时文件已经通过了前端 javascript 校验,正准备上传到服务器),将文件后缀再改成 php 文件,此时上传的即时 php 的 webshell ,并且成功绕过前端 javascript 验证。Webshellwebshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。顾名思义,“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作权限。webshell常常被称为入侵者通过网站端口对网站服务器的某种程度上操作的权限。由于webshell其大多是以动态脚本的形式出现,也有人称之为网站的后门工具。

——————By 百度百科

1.3 前端禁用 javascript 脚本

既然是前端 javascript 验证,我们又能修改 javascript 脚本,如果不会修改,那就可以直接把 javascript 全部删掉,这样既没有了 javascript 限制,也不影响上传代码成功执行,即可达到目的。

2. 后端验证

后端即是服务器,当文件上传到服务器之后,再进行校验匹配文件是否符合规则&

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值