Redis
原理
这个漏洞的主要原因是没有正确的配置Redis的配置文件,主要的错误配置有一下几点(redis.conf):
protected-mode no
关闭了保护模式,允许外部的客户端使用redis-cli进行连接将
bind 127.0.0.1
注释掉,导致redis服务暴露在外部没有设置密码
默认的Redis安装好后,默认是会bind 本地地址的,并开启了protected-mode,因为他的角色定位就是配合平常的数据库软件来使用的,是一种快速的缓存的键值型数据库,所以如果将它暴露在因特网上,并没有正确的配置就会有风险。
攻击方法
错误配置后,攻击者可以访问Redis服务,利用Redis自身提供的config
命令进行写文件的操作,并将自己的SSH公钥写入目标服务器的/root/.ssh目录下,然后使用私钥直接登录目标服务器
复现
清单
1 | 攻击机 : kali 10.10.10.12 |
下载好源码后编译,并修改redis.conf文件部分如下:
1 | IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES |
使用src下的redis-server
可执行文件 +
指定的配置文件运行Redis服务:
攻击方法:在靶机的/root/.ssh/目录下写入自己ssh的公钥,使用自己的私钥直接登录对方的机器
条件:
1 | 1. 靶机的Redis服务是使用root账号启动的 |
在kali中生成自己的SSH公私钥对:
登录到Redis服务,切换路径并写入公钥内容保存,退出
直接使用私钥登录:
其他攻击方法:
也可以向对方机器中写入一个crond任务,内容为反弹一个shell给自己或者向其web目录下写webshell,菜刀等直连即可。
修补方法
- 修改默认端口
- 设置密码认证
- 尽量以低权限来运行Redis服务
- 限制登录IP