本文最后更新于520 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
一、Redis简介
Redis 是完全开源免费的,一个灵活的高性能key-value数据结构存储,可以用来作为数据库、缓存和消息队列。
Redis服务默认端口: 6379
二、Redis常用命令
1.基本数据操作
set testkey "Hello World"
#设置键testkey的值为字符串"Hello World"
get testkey
#获取键testkey存储的字符串值
set score 99
#设置键score的值为99
incr score
#使用INCR命令将score的值增加1
get score
#获取键score的内容
keys *
#列出当前数据库中所有的键
2.配置管理
config set dir /home/test # 设置工作目录(启动时的当前目录)
config set dbfilename redis.rdb # 设置备份文件名
config get dir # 检查工作目录是否设置成功
config get dbfilename # 检查备份文件名是否设置成功
3.数据库管理
save # 进行一次备份操作,保存数据库到磁盘
flushall # 删除所有数据(不要随便使用)
del key # 删除键为key的数据
三、Redis历史漏洞
- Redis未授权访问漏洞
Redis未授权访问漏洞可能由多种原因引起,包括但不限于:
- 配置不当:Redis实例配置为在公网上可访问或监听所有网络接口。
- 密码保护缺失:Redis实例未设置密码或使用了默认密码。
漏洞可能导致以下后果: - 敏感信息泄露:攻击者可以访问存储在Redis中的敏感数据,如用户凭据、会话令牌等。
- 数据丢失:攻击者可以执行flushall命令,清空所有数据库中的数据。
- 后门植入:攻击者可能利用数据备份功能将恶意文件(如WebShell、定时任务脚本)写入到服务器的文件系统中。
- 权限提升:如果Redis以高权限用户(如root)身份运行,攻击者可能通过写入SSH公钥文件等方式获得对服务器的持久访问权限。
- Redis主从复制RCE漏洞
Redis的主从复制功能允许从服务器同步主服务器的数据。然而,在Redis 4.x及以后的版本中,引入的 模块功能可能被滥用来实现远程代码执行(RCE):
- 模块功能滥用:攻击者通过上传恶意的Redis模块(.so文件),并利用Redis的module load命令加 载该模块。
- 远程代码执行:加载的恶意模块可能包含用C语言编写的代码,该代码在Redis服务器上执行,允许攻 击者执行任意命令。
MODULE LOAD 是 Redis 中的一个命令,用于动态加载外部模块(Redis Modules)。Redis 模块是 Redis 的扩展机制,允许开发者通过编写 C 语言模块来扩展 Redis 的功能,例如添加新的数据类型、命令或功能。