如何应对‘上传漏洞’带来的动态安全挑战?

文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件,这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等,这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件,如果服务器的处理逻辑做的不够安全,则会导致严重的后果。

如何应对‘上传漏洞’带来的动态安全挑战?插图1

文件上传漏洞的危害非常大,与SQL注入或 XSS相比 , 其风险更大 , Web应用程序存在上传漏洞 , 攻击者上传的文件是Web脚本语言,服务器的Web容器解释并执行了用户上传的脚本,导致代码执行,如果上传的文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行为,如果上传的文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行,如果上传的文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被用于钓鱼和欺诈,甚至攻击者可以直接上传一个webshell到服务器上 完全控制系统或致使系统瘫痪。

以下是文件上传漏洞的一些绕过技巧:

客户端检测绕过:利用firebug禁用js或使用burp代理工具可轻易突破。

服务端MIME检测绕过:使用burp代理,修改Content-Type的参数。

如何应对‘上传漏洞’带来的动态安全挑战?插图3

服务端扩展名检测绕过:文件名大小写绕过,例如Php,AsP等类似的文件名;后缀名字双写嵌套,例如pphphp,asaspp等;可以利用系统会对一些特殊文件名做默认修改的系统特性绕过;可以利用asp程序中的漏洞,使用截断字符绕过;可以利用不再黑名单列表中却能够成功执行的同义后缀名绕过黑名单的限制;可以利用解析/包含漏洞配合上传一个代码注入过的白名单文件绕过。

检测绕过:通过在文件中添加正常文件的标识或其他关键字符绕过;文件加载检测绕过,针对渲染加载测试;代码注入绕过,针对二次渲染测试。

对于文件上传漏洞的防御,可以采取以下措施:

系统运行时的防御:文件上传的目录设置为不可执行,只要web容器无法解析该目录下面的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响,因此这一点至关重要,判断文件类型,在判断文件类型时,可以结合使用MIME Type、后缀检查等方式,在文件类型检查中,强烈推荐白名单方式,黑名单的方式已经无数次被证明是不可靠的,对于图片的处理,可以使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的HTML代码,使用随机数改写文件名和文件路径,文件上传如果要执行代码,则需要用户能够访问到这个文件,在某些环境中,用户能上传,但不能访问,如果应用了随机数改写了文件名和路径,将极大地增加攻击的成本,再来就是像shell.php.rar.rar和crossdomain.xml这种文件,都将因为重命名而无法攻击,单独设置文件服务器的域名,由于浏览器同源策略的关系,一系列客户端攻击将失效,比如上传crossdomain.xml、上传包含Javascript的XSS利用等问题将得到解决,使用安全设备防御,文件上传攻击的本质就是将恶意文件或者脚本上传到服务器,专业的安全设备防御此类漏洞主要是通过对漏洞的上传利用行为和恶意文件的上传过程进行检测。

如何应对‘上传漏洞’带来的动态安全挑战?插图5

系统开发阶段的防御:系统开发人员应有较强的安全意识,尤其是采用PHP语言开发系统,在系统开发阶段应充分考虑系统的安全性。

文件上传漏洞是一种非常严重的安全威胁,需要开发者高度重视,并采取有效的防御措施来防止其发生。

小伙伴们,上文介绍上传漏洞 动的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。

本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/90220.html

小末小末
上一篇 2024年11月5日 00:42
下一篇 2024年11月5日 00:52

相关推荐