redis是什么

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。默认端口:6379 sentinel.conf配置器端口为:26379

Redis 未授权访问漏洞

Redis默认情况下,会绑定0.0.0.0:6379,如果没有采用相关的策略,比如添加防火墙规则表面其他非信任来源IP访问等,这样会将Redis服务暴露到公网上,如果在没有设置密码认证 (一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据

攻击者在未授权访问Redis的情况下,利用Redis自身提供的config命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥 写入目标服务器的/root/.ssh文件夹中authotrized_keys文件中,进而可以只用对应私钥直接使用ssh服务登录目标服务器。

条件
  • redis绑定在0.0.0.0:6379,且没有添加防火墙规则避免其他非信任来源IP访问等相关安全策略,直接暴露在公网
  • 没有设置密码认证(一般为空),可以免密码远程登录redis服务
漏洞危害

1.攻击者无需认证访问到内部数据,可能导致敏感信息泄露,黑客也可以恶意执行f1usha11来清空所有数据
2.攻击者可通过VL执行lua代码,或通过数据备份功能往磁盘写入后门程序
3.最严重的情况,如果Rdis以root身份与运行,黑客可以给root账户写入SSH公钥文件直接通过SSH登录受害服务器

漏洞的影响版本

Redis 2.x,3.x,4.x,5.x

未授权 Redis 拿 shell 的 3 种方式

1.通过写 SSH key
2.通过向 Web 目录中写入 webshell
3.通过写 crontab 计划任务

参考链接

Redis漏洞总结 - FreeBuf网络安全行业门户

redis未授权漏洞复现(超详细) - qingzhang123 - 博客园