漏洞原理
由于开发在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上传可执行的动态脚本文件。
漏洞危害
通过上传和执行Webshell执行系统命令、浏览系统文件、接管服务器
托管恶意、非法软件
检测方法
检查能否上传不允许上传的文件
检查能否通过上传的文件获取路径
检查能否访问或执行上传的文件
利用场景
用户上传附件、修改头像、分享图像视频等,攻击者可以利用提供的文件上传功能将恶意代码植入到服务器中,之后再通过URL去访问以执行代码达到攻击的目的。
防御方案
客户端JavaScript检测(检测文件扩展名)
服务端MIME类型检测(检测Content-Type内容)
服务端目录路径检测(检测PATH参数相关的内容)
服务端文件扩展名检测
服务端文件内容检测(幻数检测、exif_imagetype()检测、getimagesize()检测、二次渲染)
上传文件均设置为没有执行权限
文件名随机化
将上传的文件放入沙箱运行,检测文件行为。
绕过手段
禁用前端JS
Burp抓包改包(修改扩展名、Content-Type)
%00截断
shell.php%00.jpg
先上传一个符合白名单检测的jpg文件,之后再通过Burp添加%00截断保存路径。
.htaccess攻击
修改幻数头
图片马绕过二次渲染:将代码插入到图片不会被渲染的部分。
空格、回车、制表符
双写、大小写混写后缀
压缩文件