【技术分享】Web应用渗透实验策略与方法研究总结之文件上传攻击
随着计算机网络技术的进步,Web应用在各个领域都有着不错的发展。它具有很强的可移植性,只要有浏览器并能够连接到互联网就可以直接使用,并且具有很强的灵活性,前台后台操作分明,即使是管理员也可以远程操作后台,而部署成本更是远远低于普通C/S结构的应用软件,尤其是各类CMS(内容管理系统)的出现,使得建站更加简单、快捷。
Web应用在给人们带来便利的同时,也带来了前所未有的巨大安全风险。而渗透测试作为一种高效的Web安全测试方法,正在普遍应用于Web应用程序安全测试工作中。
本期由美亚网安技术专家为我们讲解Web应用渗透中极为常见的文件上传漏洞。文件上传漏洞通常是由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带来的危害常常是毁灭性的。
上传攻击的条件
上传攻击防护的绕过
1.客户端JavaScript检测及绕过
在用户点击上传按钮后,客户端对上传的文件后缀名进行检测,并根据后缀名执行接下来的操作。
例:1.如果没有检测到文件名,则弹框提示:“请选择要上传的文件”。2.如果后缀名为 .jpg、.png,则判断为正确,执行上传流程。3.如果不为上述后缀名,则弹框提示“这种文件类型不允许上传!”
此种手段仅允许合法的后缀名通过,所以也叫作JS的白名单防护方式。
1.浏览器可通过禁用JS方式,禁止防护脚本执行。(同样可以删除防护代码、修改防护代码来绕过)
2.通过抓包工具抓取上传的数据包,修改后缀。
在HTTP协议中,会利用Content-Type标识本次上传的内容类型,这个类型由客户端的浏览器根据本次上传文件的后缀名自动生成。
假设本次只允许上传图像格式文件,则允许上传文件的Content-Type值为 image/jpg、image/gif、image/png,如果攻击者上传的文件为“木马.php”,那么他的Content-Type值为application/octet-stream,则只需要检测Content-Type值是否为允许上传的类型,如果不是,则阻止上传。
1.HTTP抓包后修改Content-Type类型,Content-Type类型由浏览器生成,因此可将Content-Type类型替换为可被允许的类型,从而绕过服务器后台检查,可利用burpsuit进行抓包修改Content-Type值绕过。
2.可以先将文件改为允许的类型,比如muma.jpg,上传时利用burpsuit进行抓包修改后缀进行绕过。
(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)的全资子公司,是美亚柏科集团网络空间安全、大数据智能化、网络开源情报和智能装备制造四大产品战略重要组成部分。以服务国家网络强国战略为已任,力争成为网络空间安全的领先者。
在新一代网络空间安全的建设浪潮下,利用大数据和零信任技术,依托“狼烟计划”从使用者角度构建“一中心两体系”为核心的大数据安全产品;依托“长城计划”从监管者角度打造网络安全大数据产品。
公司致力于网络安全、数据安全、内容安全等技术方向的研究,通过网络安全生态的建设,构建有竞争力的产品和解决方案,实现云计算、大数据、物联网、工业控制、移动互联五大领域的全覆盖。通过咨询规划、系统集成、平台产品、安全服务、教育培训等,全面支撑政府机关、监管单位、事业单位、大型企业等客户的网络安全建设与运营。
热文
高标准!美亚网安企业级零信任产品体系强在哪?热文
成效明显的新一代车联网信息安全方案,来了!热文
数据安全解决方案来了!聚焦实用价值热文
美亚柏科网络空间板块以实际行动助力国家网络产业高质量发展