文件上传功能的防范措施有哪些?
A
文件上传的目录设置为不可执行
只要web容器无法解析该目录下面的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响,因此这一点至关重要。
严格判断文件类型
在判断文件类型时,可以结合使用MIME Type、后缀检查等方式。在文件类型检查中,强烈推荐白名单方式,黑名单的方式已经无数次被证明是不可靠的。此外,对于图片的处理,可以使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的HTML代码。
使用随机数修改文件名和文件路径
文件上传如果要执行代码,则需要用户能够访问到这个文件。在某些环境中,用户能上传,但不能访问。如果应用了随机数改写了文件名和路径,将极大地增加攻击的成本。再来就是像shell.php.rar.rar和crossdomain.xml这种文件,都将因为重命名而无法攻击。
单独设置文件服务器的域名
由于浏览器同源策略的关系,一系列客户端攻击将失效,比如上传crossdomain.xml、上传包含Javascript的XSS利用等问题将得到解决。内容检测
有效防范图片马和文件二次渲染
安全加固中间件
及时更新并加固中间件,可以有效避免因为中间件的漏洞而导致的文件上传漏洞,比如某些中间件以前的版本很多都具有文件解析漏洞采用WAF等安全防护设备
采用WAF等安全防护设备可以有效的防御常见漏洞
常见的未授权访问漏洞有哪些?
A
a.MongoDB未授权访问漏洞
b.Redis未授权访问漏洞
c.Memcached未授权访问漏洞
d.JBOSS未授权访问漏洞
e.VNC未授权访问漏洞
f.Docker未授权访问漏洞
g.ZooKeeper未授权访问漏洞
h.Rsync未授权访问漏洞
Q
简单讲一下反序列化漏洞?
A
序列化是指程序将对象转化为字节序列从而便于存储运输的一种方式,反序列化则与其相反,即将字节序列转化为对象供程序使用。程序在进行反序列化时会调用一些函数,比如常见的PHP反序列化函数 unserialize()以及一些常见的魔术方法,比如构造函数_construct(),析构函数destruct(),_wakeup(),toStrin(),析构函数destruct(),_wakeup(),toString(0),sleep0等等。如果这些函数在传递参数时没有进行严格的过滤措施,那么攻击者就可以构造恶意代码并将其序列化后传入函数中,从而导致反序列化漏洞