查看原文
其他

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

李沐容 美亚柏科 2022-07-05


随着计算机网络技术的进步,Web应用在各个领域都有着不错的发展。它具有很强的可移植性,只要有浏览器并能够连接到互联网就可以直接使用,并且具有很强的灵活性,前台后台操作分明,即使是管理员也可以远程操作后台,而部署成本更是远远低于普通C/S结构的应用软件,尤其是各类CMS(内容管理系统)的出现,使得建站更加简单、快捷。
Web应用在给人们带来便利的同时,也带来了前所未有的巨大安全风险。而渗透测试作为一种高效的Web安全测试方法,正在普遍应用于Web应用程序安全测试工作中。
本期由美亚网安技术专家为我们讲解Web应用渗透中极为常见的文件上传漏洞。文件上传漏洞通常是由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带来的危害常常是毁灭性的。


上传攻击的条件


1.目标网站具有上传功能

上传攻击实现的前提是:目标网站具有上传功能,可以上传文件,并且文件上传到服务器后可被存储。

2.上传的目标文件能够被 Web 服务器解析执行

由于上传文件需要依靠中间件解析并执行,因此上传文件后缀应为可执行格式。

例:在Apache+PHP环境下,要求上传的 Web 木马采用.php后缀名(或能有以PHP方式解析的后缀名),并且存放上传文件的目录要有执行脚本的权限,以上两种条件缺一不可。

3.知道文件上传到服务器后的存放路径和文件名称

许多Web应用都会修改上传文件的文件名称,这时就需要结合其他漏洞获取这些信息,如果不知道上传文件的存放路径和文件名称,即使上传成功也无法访问,因此,如果上传成功但不知道真实路径,那么攻击过程没有任何意义。


上传攻击防护的绕过

1.客户端JavaScript检测及绕过


JS防护思路

在用户点击上传按钮后,客户端对上传的文件后缀名进行检测,并根据后缀名执行接下来的操作。
例:1.如果没有检测到文件名,则弹框提示:“请选择要上传的文件”。2.如果后缀名为 .jpg、.png,则判断为正确,执行上传流程。3.如果不为上述后缀名,则弹框提示“这种文件类型不允许上传!”
此种手段仅允许合法的后缀名通过,所以也叫作JS的白名单防护方式。



JS防护绕过方式

1.浏览器可通过禁用JS方式,禁止防护脚本执行。(同样可以删除防护代码、修改防护代码来绕过)
2.通过抓包工具抓取上传的数据包,修改后缀。



2.服务器端MIME检测及绕过

服务器端MIME防护原理

在HTTP协议中,会利用Content-Type标识本次上传的内容类型,这个类型由客户端的浏览器根据本次上传文件的后缀名自动生成。

假设本次只允许上传图像格式文件,则允许上传文件的Content-Type值为 image/jpg、image/gif、image/png,如果攻击者上传的文件为“木马.php”,那么他的Content-Type值为application/octet-stream,则只需要检测Content-Type值是否为允许上传的类型,如果不是,则阻止上传。
图一:服务器端MIME防护示例源码



MIME 防护的绕过方式

1.HTTP抓包后修改Content-Type类型,Content-Type类型由浏览器生成,因此可将Content-Type类型替换为可被允许的类型,从而绕过服务器后台检查,可利用burpsuit进行抓包修改Content-Type值绕过。
2.可以先将文件改为允许的类型,比如muma.jpg,上传时利用burpsuit进行抓包修改后缀进行绕过。

图二: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中间件版本过低,也会存在解析漏洞等情况,这样攻击者就能对后缀名检测实现更多的绕过方式。

本期技术分享就到这里,后续美亚网安技术专家还会给大家分享更多关于网络空间安全、大数据安全的技术干货,我们下期再见!




END




公司简介
北京美亚柏科网络安全科技有限公司(简称:美亚网安)是国投智能控股厦门市美亚柏科信息股份有限公司(股票简称:美亚柏科,股票代码:300188)的全资子公司,是美亚柏科集团网络空间安全、大数据智能化、网络开源情报和智能装备制造四大产品战略重要组成部分。以服务国家网络强国战略为已任,力争成为网络空间安全的领先者。 
在新一代网络空间安全的建设浪潮下,利用大数据和零信任技术,依托“狼烟计划”从使用者角度构建“一中心两体系”为核心的大数据安全产品;依托“长城计划”从监管者角度打造网络安全大数据产品。 
公司致力于网络安全、数据安全、内容安全等技术方向的研究,通过网络安全生态的建设,构建有竞争力的产品和解决方案,实现云计算、大数据、物联网、工业控制、移动互联五大领域的全覆盖。通过咨询规划、系统集成、平台产品、安全服务、教育培训等,全面支撑政府机关、监管单位、事业单位、大型企业等客户的网络安全建设与运营。
内容来源:美亚网安
作者:李沐容
编辑:赖越菲
校对:李银河 蓝雅琦

——— 相关热文 ———

热文

高标准!美亚网安企业级零信任产品体系强在哪?

热文

成效明显的新一代车联网信息安全方案,来了!

热文

数据安全解决方案来了!聚焦实用价值

热文

美亚柏科网络空间板块以实际行动助力国家网络产业高质量发展

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存