【网络安全之文件上传漏洞详解】,看这篇文章准没错

漏洞分类:WEB前端验证,常规漏洞、中间件漏洞、编辑器漏洞。

二.防护与绕过技巧:

2.1前端验证

前端验证就是网页只在前端JS界面做了过滤限制,但是其过滤限制用户可控

例1:

如下upload第一关,上传一个带有后门的php文件,提示只能上传JPG,PNG,GIF格式,查看源代码之后发现是前端页面对上传类型做了检测限制。

此时可以在网页浏览器禁用JS,然后上传成功。

2.2 白名单

顾名思义,白名单就是服务端明确规定上传格式,比如JPG,GIF,PNG等格式,除此之外其他类型无法上传。

绕过

MIME绕过:

通过检查http中包含的Content-Type字段中的值来判断上传文件是否合法,因此可以将此字段改成允许上传的。

例2:

来到第二关,还是限制只能上传GIF,JPG,PNG格式,但是在禁用JS上传已经不管用了,因为对方用了MIME验证。

打开burp抓包,找到Content-Type字段,可以发现其与代码中允许的字段不一致,所以将Content-Type字段改成代码中允许的字段类型提交即可。

%00空字符截断:

在文件上传后验证文件扩展名往本地保存的时候,%00就会形成一个null字符,截断文件名,只保存%00之前的内容。

注:只用于php5.3以下版本,并且要在php扩展设置>>参数开关设置中把magic_quotes_gpc关闭。

例3:

修改路径值,添加%00,然后提交。

2.3黑名单

与白名单相反,通过限制某些文件格式,使其无法上传之服务端。

绕过

.HTACCESS绕过:

只存在于APACHE中

主要功能:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。

简而言之,在httpd.conf文件中有对文件上传的过滤规则,我们通过给目目录下上传一个重新定义解析规则的.htaccess文件,此时生效的过滤规则就会替换原来http.conf中的规则。

例4:

1.上传一个.htaccess文件

文件内容为:将xxx.jpg文件解析为PHP

<FilesMatch “xxx.jpg”>
SetHandler application/x-httpd-php

2.然后创建xxx.jpg文件插入一句话木马,然后访问图片链接。

::$DATA绕过:

在 Windows 操作系统中,:: D A T A 是一种用于隐藏文件的特殊附加数据流,如果文件名 + : : DATA 是一种用于隐藏文件的特殊附加数据流,如果文件名+:: DATA是一种用于隐藏文件的特殊附加数据流,如果文件名+::DATA会把:: D A T A 之后的数据当成文件流处理 , 不会检测后缀名,且保持 : : DATA之后的数据当成文件流处理,不会检测后缀名,且保持:: DATA之后的数据当成文件流处理,不会检测后缀名,且保持::DATA之前的文件名,他的目的就是不检查后缀名。

2.4内容检测

文件头完整性检测:

文件头是文件开头的一段二进制代码,不同的文件其文件头类型也不同,可以用NotPad++查看。

  • GIF:47494638
  • JPG:FFD8FF
  • PNG:89504E47

在安全测试中不但可以对文件后缀格式进行检测,还可以对文件头部完整性检测,防止恶意文件上传。

例5:

由源码可知,此关卡对文件头部做了检测;并且题目已经提示使用文件包含漏洞。

function getReailFileType($filename){
f i l e = f o p e n ( file = fopen( file=fopen(filename, “rb”);
b i n = f r e a d ( bin = fread( bin=fread(file, 2); //只读2字节
fclose($file);
$strInfo = @unpack(“C2chars”, $bin);
t y p e C o d e = i n t v a l ( typeCode = intval( typeCode=intval(strInfo[‘chars1’].$strInfo[‘chars2’]);
f i l e T y p e = ′ ′ ; s w i t c h ( fileType = ''; switch( fileType=′′;switch(typeCode){
case 255216:
$fileType = ‘jpg’;
break;
case 13780:
$fileType = ‘png’;
break;
case 7173:
$fileType = ‘gif’;
break;
default:
$fileType = ‘unknown’;
}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
img

提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!**

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
[外链图片转存中…(img-xJQxflDl-1712767852630)]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值