概述
要完成这个攻击,要满足几个条件,首先,上传的文件能够被web容器解析执行,其次用户能够从web上访问这个文件,最后,用户上传的文件若被安全检查,格式化,图片压缩等功能改变了内容,则也有可能导致攻击不成功。
比如绕过文件上传检查功能,
检查后缀中,在文件名后添加一个%00字节,则可以截断某些函数对文件名的判断。(%00广泛用于字符串处理函数的保留字符)
检查前头时,为了绕过类似的MIME Sniff的功能,常见的攻击技巧是伪造一个合法的文件头,而将真实的代码附在合法的文件头之后。
设计安全的上传功能
1文件上传的目录设置为不可执行
只要web容器无法解析该目录的文件,即使攻击者上传了脚本文件,服务器也不会受到影响。
2判断文件类型
强烈推荐白名单方式,黑名单多次证明不可靠。
3使用随机数改写文件名和文件路径。
4单独设置文件服务器的域名