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(墨者学院靶场)