今天阿里云服务器报出了DoraCMS一个redis漏洞:

Redis 未授权访问漏洞


于是查了一下相关资料:



漏洞描述:


redis 默认不需要密码即可访问,黑客直接访问即可获取数据库中所有信息,造成严重的信息泄露。


修复方案:


1、绑定需要访问数据库的IP


修改 redis.conf 中的 “bind 127.0.0.1” ,改成需要访问此数据库的IP地址。


2、设置访问密码


在 redis.conf 中找到“requirepass”字段,在后面填上你需要的密码。


注:上述两种方法修改后,需要重启redis才能生效。


发现确实前几天做redis缓存并没有设置密码,而未设置密码的redis是可以直接访问缓存信息的,所以需要通过auth属性设置redis密码:

var redis = require('redis');
var client = redis.createClient(settings.redis_port, settings.redis_host);
client.auth(settings.redis_psd);


别忘了,如果在express-session中也使用了redis,也需要加入密码:

app.use(session({
    secret: settings.session_secret,
    store: new RedisStore({
        port: settings.redis_port,
        host: settings.redis_host,
        pass : settings.redis_psd,
        ttl: 1800 // 过期时间
    }),
    resave: true,
    saveUninitialized: true
}));


其它参数设置可参考官方文档:https://github.com/tj/connect-redis

在redis.conf 配置中 配置 requirepass 的值 和 IP 重启redis和node就可以了,重新扫描结果:


Redis 未授权访问漏洞