Web安全—文件上传漏洞
文件上传漏洞简介和原理可参考 Web安全—文件上传漏洞此篇文章,本文仅对服务端检测方法和绕过方法进行总结
服务端检测方法&绕过方法:
检测方法一:
前端JS检测(通常为检测文件扩展名) 绕过方法: 1,禁止Web浏览器加载JS代码 2,修改前端代码,添加需要上传的脚本语言扩展名 3,Burpsuite抓包修改filename参数
检测方法二:
服务端MIME类型检测(检测POST内容的Content-Type字段) 绕过方法 1,Burpsuite抓包修改对应的Content—Type内容,常见的MIME类型,JPG=image/jpeg,PNG=image/jpeg,GIF=image/gif
检测方法三:
服务端目录路径检测(检测和path相关的内容) 绕过方法: 通过HTTP请求包中的content-disposition字段中的name=filepath/dir表示路径的值,可通过)0X00,%00进行截断
检测方法四:
文件扩展名检测(黑白名单,检测扩展名extension内容) 绕过方法: 白名单绕过: 1,.htaccess文件绕过 2,解析漏洞绕过 3,%00,0x00,0x0a截断绕过 黑名单绕过: 1,扩展名大小写绕过,例如:Php,JSp等 2,畸形扩展名绕过,例如:asp环境下asa,cer,cdx绕过,php环境下php3,php4,php5,phtml和pht绕过 3,.htaccess绕过 4,特殊文件名绕过,例如:test.asp.和test.asp_(下划线为空格),test.asp::$DATA等,需要注意的是windows下只有这个特性,linux/unix下没有 5,%00,0x00,0x0a截断绕过 6,解析漏洞绕过
检测方法五:
文件内容检测(检测内容是否存在恶意代码或检测文件特征) 绕过方法: 黑名单:恶意代码和代码特征检测(免杀代码或修改代码特征) 白名单:文件特征(脚本上传文件头部添加特征,例如添加GIF特征GIF89a绕过),可参考文章 文件上传漏洞—简单利用2(墨者学院靶场)