文件上传
文件上传 概述 因为业务功能需求,很多web站点都有文件上传的接口,如: 注册上传头像(如jpg,png,gif等) 上传文件附件 文件上传本身没有问题关键在于文件上传后服务器怎么处理、解释文件。 要能利用有几个要素 文件能被访问(可配合php文件解析漏洞) 文件能被当作脚本执行 上传和绕过 客户端 javascript校验(一般只校验后缀名) 服务端 文件头content-type字段校验(image/gif) 文件内容头校验(GIF89a) 后缀名黑名单校验 后缀名白名单校验 PUT方法 当WebDAV开启PUT,MOVE,COPY,DELETE方法时,攻击者就可以向服务器上传危险脚本文件。使用OPTIONS探测服务器支持的http方法,如果支持PUT,就进行上传脚本文件,在通过MOVE或COPY方法改名。当开启DELETE时还可以删除文件。 客户端校验 JS通过验证上传文件的扩展名来判定是否符合上传行为 通过修改js代码绕过验证,或之间通过burp抓包改字段,绕过js验证 服务器端校验 文件头content-type字段校验 绕过方式 使用Burp截取上传数据包,修改Content-Type的值,改为image/gif即可成功绕过上传webshell 服务端文件扩展名检测 检测扩展名发生在存储文件之前,然后保存,也就是说保存的文件扩展名一定