Redis未授权访问漏洞复现

版权声明:本文为博主原创文章,转载请注明原创链接! https://blog.csdn.net/qq_39112646/article/details/89164542

一:漏洞简介和危害

Redis默认情况下,会绑定在0.0.0.0:6379,如果没有采用相关的策略,如配置防火墙规则避免其他非信任来源的IP访问,就会将Redis服务暴露在公网上;

如果没有设置密码认证(一般为空)的情况下,会导致任意用户可以访问目标服务器下未授权访问Redis以及读取Redis数据。

攻击者访问之后,利用Redis自身提供的config命令,可以进行写文件操作

可以成功把自己的SSH公钥写入目标服务器的/root/.ssh文件夹的authotrized_keys文件中,进而可以使用对应私钥直接使用ssh服务登陆目标服务器

简单来说,漏洞产生的条件有以下两点:

  1. redis服务绑定在0.0.0.0:6379端口,而且信任了其他IP,导致了Redis服务暴露在公网上
  2. 没有设置密码认证,可以免密登陆Redis服务

危害:

  1. 导致敏感信息泄露,恶意执行flushall清空所有数据
  2. 通过Eval执行Lua代码,通过备份功能往磁盘写入后门文件
  3. 如果Redis服务以root身份运行,可以给root用户写入SSH公钥文件,直接通过SSH登陆服务器

二:漏洞复现与利用

关于密码验证:

所谓的秘钥认证,就是基于公钥密码的认证

使用公钥加密,私钥解密,其中公钥是公开的,放在服务器端

可以把同一个公钥放在你想SSH登陆的服务器中,而私钥自己知道

大致过程:

1.客户端生成私钥和公钥,并把公钥拷贝给服务器端

2.客户端发起登陆请求,发送自己的相关信息

3.服务器端根据客户端发来的信息查找是否有该客户端的公钥,若没有拒绝登陆;若有则生成一段随机数,
使用该公钥加密后发给客户端

4.客户端收到服务器发来的加密信息后使用私钥解密,并把解密后的结果发给服务器用于验证

5.服务器收到客户端发来的解密结果,与刚刚自己生成的随机数对比,如果一致就允许登陆;不一致则拒绝登陆

漏洞复现:

靶机:CentOS7  10.10.0.6

攻击机:Kali        10.10.0.8


一:官网下载源码的压缩包

wget http://download.redis.io/releases/redis-3.2.11.tar.gz

二:解压缩压缩包

tar zxvf redis-3.2.11.tar.gz

三、进入到解压后的目录:cd redis-3.2.11 ,并输入make执行

由于我使用的CenOS,这里出现了两个问题

1.找不到cc命令

找不到cc命令是由于没有安装gcc,,使用yum安装即可

2.致命错误

然后查询百度,使用了 make MALLOC=libc命令解决一切问题

四:make结束后,进入src目录:cd src,将redis-server和redis-cli拷贝到/usr/bin目录下(这样启动redis-server和redis-cli就不用每次都进入安装目录了):

cp redis-server /usr/bin

cp redis-cli /usr/bin

五:返回目录redis-3.2.11,将redis.conf拷贝到/etc/目录下:

cp redis.conf /etc

六:编辑etc中的redis配置文件redis.conf

vim /etc/redis.conf

七:去掉IP绑定,允许除本地外的主机登陆redis服务:

八:关闭保护模式,允许远程连接redis服务

九:在靶机中开启redis服务 redis-server /etc/redis.conf

        在靶机中执行 mkdir /root/.ssh命令,创建ssh公钥存放目录

        在攻击机中生成ssh公钥和私钥,密码设置为空

十:进入 .ssh目录 ,将生成的目录保存到1.txt ,方便之后进行上传

十一:将1.txt写靶机(使用redis-cli -h ip 命令连接靶机,写入文件)

十二:远程登录靶机的Redis服务, redis-cli -h 10.10.0.8,并且使用 config get dir 命令的得到redis备份的路径

(此时登录不上去,是靶机的防火墙问题 使用 iptables -F)

十三:更改Redis备份路径为ssh公钥存放目录(一般默认是/root/.ssh)

          设置上传公钥的备份文件名字为 authorized_keys

          检查是否更改成功(查看有没有authorized_keys文件),没有问题就保存退出,成功写入ssh公钥到靶机

注:确保没有问题的时候,使用sava,否则上传公钥不成功

开启主机的ssh服务(service start ssh

十四:在攻击机中使用ssh免密登陆靶机 

到此利用Redis未授权访问漏洞实现了ssh免密登陆服务器

三:防范方法

1.修改默认端口

2.设置密码认证

3.尽量以低权限运行Redis服务

猜你喜欢

转载自blog.csdn.net/qq_39112646/article/details/89164542