Redis未授权访问漏洞

目录

Redis未授权访问漏洞

漏洞存在的条件

SSH登陆

 复现

最后


漏洞存在的条件

1.redis绑定0.0.0.0:6379

2.redis未设置访问密码

SSH登陆

SSH提供两种登录验证方式,一种是口令验证也就是账号密码登录,另一种是**验证也就是我们想要的免密登录了。

密码的认证,使用公钥加密、私钥解密,其中公钥是可以公开的,放在服务器端,你可以把同一个公钥放在所有你想SSH远程登录的服务器中,而私钥是保密的只有你自己知道,公钥加密的消息只有私钥才能解密,大体过程如下:

(1)客户端生成私钥和公钥,并把公钥拷贝给服务器端;

(2)客户端发起登录请求,发送自己的相关信息;

(3)服务器端根据客户端发来的信息查找是否存有该客户端的公钥,若没有拒绝登录,若有则生成一段随机数使用该公钥加密后发送给客户端;

(4)客户端收到服务器发来的加密后的消息后使用私钥解密,并把解密后的结果发给服务器用于验证;

(5)服务器收到客户端发来的解密结果,与自己刚才生成的随机数比对,若一样则允许登录,不一样则拒绝登录。

 复现

1.确认redis存在未授权连接

Redis未授权访问漏洞

非redis本地可以不使用密码直接连接,初步可以判断存在漏洞。

 

2.本地使用rsa加密生成ssh 公钥

Redis未授权访问漏洞

 

3.将公钥取出存在临时文件,注意这里为公钥前后加了回车符,为后面redis将数据写入authorized_keys时,公钥不受影响。

Redis未授权访问漏洞

 

4.登陆redis,将临时文件里面的内容写入redis
Redis未授权访问漏洞

 

5 更改redis备份路径为ssh公钥存放目录(一般默认为/root/.ssh), 设置上传公钥的备份文件名字为authorized_keys
Redis未授权访问漏洞
Redis未授权访问漏洞

 

6.这个时候,redis里面的数据会使用快照备份(默认备份方法)将内存数据(我们的公钥数据)写入authorized_keys文件。
 
7.尝试登陆redis所在的服务器
Redis未授权访问漏洞
登陆成功!!
 

最后

解决方法:
1.redis不能直接暴露到外网
2.redis设置连接密码
3.创建非root用户启动redis,这样redis将没有权限写authorized_keys
 
 

相关文章: