(1)redis是什么:
Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库
(2)redis的未授权访问漏洞是redis数据库的登陆设置密码,所以未开启用户认证,可以导致任意的用户可以访问目标服务器的情况下未授权访问redis以及读取、更改redis的数据,攻击者可以利用redis的相关方法在redis的服务器上写入公钥,进而可以使用对应的私钥登入目标服务器
二、 (1)漏洞产生的原因:
Redis的配置文件未开启授权访问,所以任何可以访问服务器的人都可以登陆
(2)系统存在该漏洞的后果
攻击者可以利用该漏洞向目标服务器中的root文件夹下写入ssh登陆需要的公钥文件,从而可以用ssh远程登陆并获得root权限
三、 漏洞的重现和利用
(1) 安装redis4.0.6
利用源码编译安装:在根目录下创建一个redis文件夹,redis放在该文件夹下,tar命令解压,make编译,用src下的redis-server打开redis服务
(2) 修改redis的配置文件redis.conf
将配置文件中的protected-mode后的yes改为no 而且配置文件中未要求使用密码登陆redis,所以可以直接登陆redis
(3) 安装ssh
用dnf installopenssh直接安装
打开ssh
Systemctl startsshd.service
修改文件夹/etc/ssh下的sshd_config配置文件
(4) 利用漏洞写入ssh证书并用ssh登陆目标服务器
用ssh-keygen产生一对公钥,默认存储目录是.ssh文件夹下的id_rsa和id_rsa.pub
在.ssh目录下将公钥复制进demo.txt文件
前后各两个回车是为将公钥追加到目标服务器的authorized_key文件后的格式
打开redis
将本地保存公钥的文件上传到目标服务器的redis数据库中并设置键值为invader
利用漏洞进入目标服务器的redis服务,并更改配置文件,将redis的持久化保存文件的位置更改为/root/.ssh/authorized_keys并保存
此时已经将包含公钥的键值对存储在了authorized_keys,可以利用ssh登陆目标服务器了
成功取得目标服务器的root权限,所以可以进行任意更改
(5) 如果公司的系统存在该漏洞那么该公司的系统很容易被进入,并取得最高权限,入侵者可以进行任意的更改,非常不安全
四、 用openvas扫描服务器漏洞
配置扫描目标
扫描结果:
可以看到有一个脆弱性为redisserver no password,
可以看到对该漏洞的总结,影响,解决方法,检查方法
该漏洞的nvt是redis server no password 后面是OID号
仅实验 谨实验