Web安全之文件上传漏洞


一、概述
用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。(上传Web脚本能够被服务器解析)
二、导致安全问题
1)上传Web脚本语言
2)上传Flash的策略文件
3)上传病毒木马文件等
4)上传钓鱼图片或包含脚本的图片
三、文件上传漏洞利用思路
上传木马文件之后,通过菜刀连接即可访问后台。
四、漏洞类型
1.利用00截断上传webshell
系统只允许jpg格式文件上传,可以通过上传xx.php.jpg等文件绕过检测,在发送到服务器前修改.jpg,即在第二个.的位置,将.的ascii码修改为00,服务器就把00解析为结束标志,进而直接处理了.php脚本文件。
2.绕过前台脚本检测扩展名上传WebShell
首先上传复合前台脚本检测扩展名的文件,再用工具(burpsuite)中途截获通过前台脚本认证并发送至服务器的包,修改为脚本文件的扩展名。
3.南方企业内容管理系统漏洞:
改文件后缀上传大马,将上传的文件备份至数据库。再访问数据库备份路径即可。 asp网站可以解析asa后缀文件。
4.apache解析漏洞上传shell:
存在于apache 1.x,2.x
apache识别文件类型是从右向左识别的,如果遇不认识的扩展名会向前一次识别,直到遇到能识别的扩展名
phpshell.php.rar,识别。rar合法就允许上传。
5.绕过Content-Type检测:
浏览器在上传文件到服务器的时候,服务器对上传文件的Content-Type类型进行检测,如果是白名单允许,则可以正常上传,否则上传失败。
绕过方式:用BurpSuit截取并修改数据包的Content-Type类型,使其符合白名单的规则,达到上传目的。
6.Fckeditor漏洞上传webshell
Fckeditor在2.2.2以下存在一个直接上传任意文件的上传页面,可直接上传webshell。
1)判断有没有编辑器
http://www.xxx.com/fckeditor/
返回:Directory Listing Denied即证明存在。
2)查找编辑器版本
2.0,知道该版本有两个页面存在文件上传漏洞。
3)再上传脚本文件,方法同00截获类似。
7.IIS6文件解析问题
1)截断问题
abc.asp;xx.jpg 将“;”定为截断字符,此处只执行abc.asp
2)将/*.asp/目录下所有文件都当成asp文件解析
xyz.asp/abc.jpg当作asp文件解析
3)支持PUT(目录支持写权限同时开启WebDav)功能导致上传脚本问题(OPTIONS探测是否支持命令、PUT命令上传文本文件、MOVE命令修改文件名字)
8.PHP CGI路径解析问题
外在表现
访问http//www.xxx.com/path/test.jpg/notexist.php时,会将test.jpg当作test.jpg解析,notexist.php是不存在的文件。
解决方式:将php中cgi.fix_pathinfo置0。
9.绕过服务器扩展名检测上传
浏览器将文件提交至服务器端时,服务器根据黑白名单对文件扩展名进行检测,复合黑白名单检测即可上传成功。
攻击者可利用apache解析漏洞,上传lubr.php.abc类型文件,满足服务器规则即上传成功,再通过浏览器访问时将其识别为php文件,即可通过菜刀连接。
10.通过判断上传文件文件头进行检测
浏览器的MIME sniff通过检测文件前256字节判断文件类型
绕过方法:伪造文件头。
11.绕过内容验证上传
通过修改文件扩展名等方式不能达到成功上传目的,有些内容验证使用的是getimagesize()函数检测是否为一个图片,此时可将一句话木马插入图片文件实现上传。
命令:copy pic.jpg/b+lubr.php/a PicLubr.jpg
上传前将文件改为PicLubr.jpg.php
五、安全措施
1)文件上传的目录设置为不可执行
2)判断文件类型:判断类型利用MIME Type、后缀等方式,类型检查用白名单机制。
3)使用随机数修改文件名或文件路径。
4)单独设置文件服务器的域名。

你可能感兴趣的:(web安全)