web安全————文件上传漏洞

来源:互联网 发布:林书豪季后赛数据 编辑:程序博客网 时间:2024/04/29 14:14


文件上传漏洞

      所谓的文件上传漏洞是指用户上传了一个可执行脚本,并通过脚本文件获得执行服务器端命令

的能力。文件上传本身是没有问题的,它只是一种正常的业务需求,问题出在文件上传后服务器怎么处理、解释文件。文件上传后导致常见的安全问题一般包括:

      1,上传文件是web脚本语言,服务器的web容器解释并执行了用户上传的脚本,导致代码被执行

      2,上传文件是flash的策略文件crossdo-main.xml,黑客用以控制flash在该域下的行为

      3,上传文件是病毒、木马等文件,黑客用以诱骗用户或者管理员下载执行

      4,上传文件是钓鱼图片或包含脚本的图片,被用于钓鱼和欺诈

除此之外,还有其他利用方法,如将上传文件作为一个入口,溢出服务器的后台处理程序——图片解析模块。当然,要完成一次文件上传漏洞攻击,需要满足一下几个条件:

      1,上传的文件能够被web容器解释执行,即是说文件上传后所在的目录要是web容器所能覆盖到的路径。

      2,用户能够从web上访问这个文件

      3,上传的文件不能被安全检查、格式化、图片压缩等改变内容。

值得注意的是,限制上传文件类型采用白名单比较好,黑名单是一种很不好的思想,后面将到解析漏洞时会提到黑名单为什么不好。

      绕过文件上传检查功能

      有的站点在允许上传的同时,对上传的文件做了检查,检查方式多是判断文件名后缀来确保文件安全性。但是攻击者还是可以通过其他方式进行绕过,如修改POST包,在文件名后添加%00字节(00截断,在cphp等语言常用字符串处理函数中)。

      利用解析漏洞的上传技巧

      利用解析漏洞是攻击者在上传漏洞时,发现一些wenserver本身特性相关的功能,如apache文件解析、iis文件解析、php cgi路径解析等

      apache文件解析漏洞(在apache1.X 2.X中)

      该版本中apache对于文件名的解析是从后往前解析,直到遇见一个apache认识的文件类型为止,那么攻击者可以这样构造:phpshell.php.rar.rar.rar.rar,因为apache不认识rar文件类型,所以会一直遍历后缀到.php,然后认为这是一个php类型文件。apache是通过apachemime.types文件中定义的文件类型来判断文件类型。

      iis文件解析漏洞

      iis 6在处理文件解析时,也出过一些漏洞,与之前提到的00截断类似,不过截断字符变为‘;’,例如上传一个文件名为abc.asp;xx.jpg,此时iis 6会将此文件解析为abc.asp,文件名被截断导致脚本被执行。除此之外iis 6 还有过目录漏洞,这种漏洞是由于处理文件夹扩展名出错,导致该目录下的所有文件都会被执行:http://www.test.com/path/abc.asp/bcd.jpg,此时bcd.jpg将会被当做asp文件执行。*******注意:iis的解析漏洞是要求再服务器本地硬盘上确实有这样的文件或者文件夹,通过web应用映射出了的url是无法触发漏洞的。

      关于iis还存在这样一个漏洞:当站点允许用户上传文件到指定的路径下时,用put方法再结合move方法即可完成原本只允许上传文本文件改为脚本文件从而执行webshell。步骤如下:

      1,通过options探测服务器信息,服务器返回可上传文件类型,如txt

      2,上传文本文件

      3,通过move改名为可执行扩展名文件,执行脚本。

      文件上传漏洞的防御

      文件上传是没有问题的,问题在于服务器如何处理该上传文件,通过如下方法可防范文件上传漏洞:

      1,文件上传的目录权限设置为不可执行。只要web容器无法解析该目录下的文件,那么攻击者上传的脚本文件就无法执行。

      2,判断文件类型。这种判断要结合mime type、后缀检查,强烈推荐白名单方式,对于图片可以使用压缩函数处理图片。

 3,使用随机数改写文件名和文件路径。如果攻击者上传了文件,采用随机数改变了文件名和文件路径,将大大增加了攻击的成本。

      4,单独设置文件服务器的域名。这和浏览器的同源策略是想通的。

0 0
原创粉丝点击