文件|【技术分享】Web应用渗透实验策略与方法研究总结之文件上传攻击( 二 )


2.可以先将文件改为允许的类型,比如muma.jpg,上传时利用burpsuit进行抓包修改后缀进行绕过。
文件|【技术分享】Web应用渗透实验策略与方法研究总结之文件上传攻击
文章插图
文件|【技术分享】Web应用渗透实验策略与方法研究总结之文件上传攻击
文章插图
图二:MIME防护的绕过
3.服务器端文件扩展名检测及绕过
文件扩展名检测防护原理
(1)文件后缀重命名
只允许单一类型文件上传,例如针对头像上传,只允许JPG格式(需注意,此种方式下,其他格式文件也可上传,但由于后缀名会被重命名为 .jpg ,因此其他格式文件无法执行)
(2)白名单过滤
只允许一种类型的文件上传,如图片上传,只允许上传后缀JPG、PNG、GIF,其他全部阻止。
(3)黑名单过滤
允许多种类型文件上传,如统计表格提交、基本信息文件上传等,后台代码中禁止脚本文件后缀上传。
文件扩展名检测防护绕过
(1)黑名单过滤绕过:
1)多重测试过滤文件名
参考黑名单的示例,其中针对有.php后缀名的文件禁止上传,但没有对其他格式做出限制 因此可尝试 php4、php5、cer等后缀此类后缀名不受黑名单的限制,同时中间件仍旧按照php解析。
2)判断是否存在大小写绕过
中间件会区分文件名的大小,但操作系统并不区分文件后缀名的大小写。
假设当前黑名单禁用 php、PHP、PhP 后缀名,而PHp、pHp、pHP 等后缀名不在名单内,因此可以尝试上传pHp后缀名的文件来进行绕过。
3)特殊文件名构造( Windows 下)
构造she11. php.或shell.php-( 此种命名方式在Windows不允许,所以需要抓包修改),当上传文件的HTTP包到达Web服务器后,并在中间件进行缓存转存时,由于Windows 不识别上述后缀机制,会自动去掉.和-等特殊符号,从而使攻击者可绕过黑名单防护规则。
4)%00截断
绕过方式利用的是C语言的终止符特性,当C语言在执行过程中遇到%00时, %00会被当成终止符,因此程序会自动截断后续信息,仅保留%00之前的内容,漏洞仅存在于PHP3.7.3之前的版本,如 shell.php.jpg(注意 .jpg前有个空格在上传页面进行转存时,之前文件名中的空格会被当成终止符,导致空格之后的内容被忽略。因此,最终文件名会变为shell.php ,从而绕过了文件后缀名检查。
(2)白名单过滤绕过:
1)特殊文件名构造(参考黑名单防护)
2)%00截断(参考黑名单防护)
3)利用图片及文件包含漏洞(需要审计源码)
?虽然以上方法都是利用系统缺陷实现的,在现实中,如果Web中间件版本过低,也会存在解析漏洞等情况,这样攻击者就能对后缀名检测实现更多的绕过方式。
?本期技术分享就到这里,后续美亚网安技术专家还会给大家分享更多关于网络空间安全、大数据安全的技术干货,我们下期再见!

推荐阅读