一:漏洞简介和危害
Redis默认情况下,会绑定在0.0.0.0:6379,如果没有采用相关的策略,如配置防火墙规则避免其他非信任来源的IP访问,就会将Redis服务暴露在公网上;
如果没有设置密码认证(一般为空)的情况下,会导致任意用户可以访问目标服务器下未授权访问Redis以及读取Redis数据。
攻击者访问之后,利用Redis自身提供的config命令,可以进行写文件操作
可以成功把自己的SSH公钥写入目标服务器的/root/.ssh文件夹的authotrized_keys文件中,进而可以使用对应私钥直接使用ssh服务登陆目标服务器
简单来说,漏洞产生的条件有以下两点:
- redis服务绑定在0.0.0.0:6379端口,而且信任了其他IP,导致了Redis服务暴露在公网上
- 没有设置密码认证,可以免密登陆Redis服务
危害:
- 导致敏感信息泄露,恶意执行flushall清空所有数据
- 通过Eval执行Lua代码,通过备份功能往磁盘写入后门文件
- 如果Redis服务以root身份运行,可以给root用户写入SSH公钥文件,直接通过SSH登陆服务器
二:漏洞复现
关于密码验证:
所谓的秘钥认证,就是基于公钥密码的认证
使用公钥加密,私钥解密,其中公钥是公开的