redis未授权访问漏洞学习

一、Redis常见用途
1. Redis介绍
  • 全称与起源: Redis全称Remote Dictionary Service(远程字典服务),最初由antirez在2009年开发,用于解决网站访问记录统计的性能问题。
  • 发展历程: 从最初仅支持列表功能的内存数据库,经过十余年发展已支持多种数据类型和丰富功能特性。
2. Redis常用数据类型
  • 基本结构: 所有数据都以键值对(key-value)形式存储,键名均为字符串类型。
  • 五种核心类型:
    • 字符串: 最基本类型,如set name wuya
    • 哈希表: 键值对中嵌套键值对,如hset hash 1 a 2 b
    • 列表: 有序元素集合
    • 集合: 无序不重复元素集合
    • 有序集合: 带排序功能的集合
3. 操作演示
  • 服务启动: 通过redis-server命令启动服务,需指定配置文件路径。
  • 客户端连接: 使用redis-cli连接本地6379端口服务。
  • 基本操作:
    • set key value: 设置键值对
    • get key: 获取键对应值
    • hset hash field value: 设置哈希字段值
    • hget hash field: 获取哈希字段值
    • flushall: 清空所有数据
4. Redis常见用途
  • 缓存系统: 最经典应用场景,提升数据访问速度
  • 分布式解决方案:
    • Session共享: 解决多服务器session同步问题
    • 分布式锁: 实现秒杀、抢购等并发控制
    • 全局ID生成: 保证分布式系统ID唯一性
  • 其他应用:
    • 计数器: 实现签到、阅读量统计
    • 限流控制: 限制并发访问量
    • 抽奖系统: 随机抽取不重复元素
    • 标签系统: 商品多维度分类过滤
    • 排行榜: 实现各类热度排序
5. Redis为什么这么流行
  • 数据类型丰富: 支持多种数据结构,适用场景广泛
  • 高性能: 纯内存操作,读写速度远超磁盘数据库
  • 功能完备:
    • 数据持久化防止丢失
    • 事务支持保证操作原子性
    • Pipeline提升批量操作效率
    • 多语言客户端支持
    • 集群部署保障高可用
二、知识小结

知识点

核心内容

考试重点/易混淆点

难度系数

Redis简介

远程字典服务(Remote Dictionary Service),2009年由antirez用C语言开发,最初用于网站统计系统

名称来源与开发背景

⭐⭐

基本数据类型

支持5种主要类型:字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)

键(key)始终为字符串,值(value)类型多样

⭐⭐⭐

基础命令操作

SET/GET(字符串)、HSET/HGET(哈希)等基础命令演示

哈希表嵌套结构语法

⭐⭐

分布式应用场景

缓存、分布式Session、分布式锁、全局ID生成、计数器、限流、排行榜、标签系统

分布式锁实现秒杀场景

⭐⭐⭐⭐

技术特性优势

纯内存操作、支持持久化、多语言接口、集群部署能力

内存vs磁盘数据库性能差异

⭐⭐⭐

安全漏洞风险

未授权访问漏洞(6379端口暴露风险),护网/CTF常见攻击面

运维人员安全意识薄弱问题

⭐⭐⭐⭐

发展历程

从MySQL替代方案演变为多功能数据库,支持数据类型持续扩展

原始需求与最终产品的差异

⭐⭐

企业级应用

百度/谷歌统计类系统、电商标签过滤、微博热搜榜实现

标签系统实现原理

⭐⭐⭐⭐

一、Redis环境安装
1. 环境准备
1)环境准备内容
  • 架构说明:需要准备两台虚拟机,分别安装Redis服务端(靶机IP66)和客户端(控制机IP44)
  • 版本选择:课程使用Redis 6.2.3版本,但6.2.6版本同样适用,漏洞复现与版本关系不大
  • 漏洞本质:该漏洞源于用户配置不当而非Redis官方漏洞,早期版本即可利用且未修复
2)CentOS7安装Redis 6单实例
  • 解压压缩包
    
    • 下载命令:wget https://download.redis.io/releases/redis-6.0.9.tar.gz
    • 解压命令:tar -zxvf redis-6.0.9.tar.gz
  • 安装gcc依赖
    
    • 版本要求:Redis 6.x需要gcc版本大于4.9
    • 升级步骤:
  • 编译安装
    
    • 编译命令:
    • 生成文件:编译后会生成redis-server(服务端)、redis-cli(客户端)、redis-sentinel(哨兵)三个关键脚本
  • 修改配置文件
    
    • 后台运行:将daemonize no改为daemonize yes
    • 远程访问:注释或修改bind 127.0.0.1为bind 0.0.0.0
    • 密码设置:建议生产环境取消requirepass注释设置密码,但漏洞复现需保持注释
  • 使用指定配置文件启动Redis
    
    • 启动命令:/usr/local/soft/redis-6.0.9/src/redis-server /usr/local/soft/redis-6.0.9/redis.conf
    • 验证命令:netstat -an|grep 6379检查端口是否监听
  • 进入客户端
    
    • 连接命令:/usr/local/soft/redis-6.0.9/src/redis-cli
  • 配置别名
    
    • 配置文件:编辑~/.bashrc文件
    • 别名示例:
    • 生效命令:source ~/.bashrc后需打开新终端窗口
3)Redis服务端配置
  • 保护模式:设置protected-mode no允许远程连接
  • IP绑定:注释bind配置或设为0.0.0.0
  • 防火墙:关闭防火墙或开放6379端口
  • 密码认证:保持requirepass注释状态(漏洞复现要求)
2. 环境配置示例
  • 连接验证:通过redis-cli -h 靶机IP -p 6379命令测试远程连接
  • 命令测试:可执行set/get等基本操作验证环境正常
  • 克隆建议:可先安装好一台虚拟机后克隆,客户端机器只需保留redis-cli脚本
3. 可以执行任意Redis命令的危害
  • 数据清除:攻击者可执行flushall清空所有数据
  • 数据篡改:可任意修改缓存、排行榜等关键业务数据
  • 权限提升:结合后续漏洞利用可实现从数据库操作到系统提权
二、知识小结

知识点

核心内容

考试重点/易混淆点

难度系数

Redis环境安装

需在虚拟机安装客户端和服务端,版本差异影响小(6.2.3与6.2.6均可复现漏洞)

版本选择:官方未修复漏洞,旧版本(如4.x/5.x)同样适用

⭐⭐

Redis漏洞本质

配置不当漏洞:无需密码、开放远程访问、关闭保护模式(protected-mode no)

关键配置项:bind注释、requirepass注释、防火墙关闭

⭐⭐⭐

服务端安装步骤

1. 下载源码包并解压; 2. 更新GCC版本(≥4.9); 3. make install编译安装; 4. 修改配置文件(daemonize yes、protected-mode no等)

易错点:GCC版本未升级导致编译失败

⭐⭐⭐

客户端连接验证

通过别名配置简化命令(如redis-cli -h 目标IP),无需密码即可执行任意命令(如SET/GET)

危害场景:数据清空或服务器控制(通过写入恶意命令)

⭐⭐⭐⭐

环境配置技巧

1. 使用alias简化启动命令; 2. 克隆虚拟机快速搭建多节点; 3. 防火墙关闭(systemctl stop firewalld)

效率优化:配置文件路径管理与别名生效(source ~/.bashrc)

⭐⭐

漏洞复现关键点

1. 服务端允许远程无密码访问; 2. 客户端可执行任意Redis命令(如写入SSH公钥)

对比维度:版本兼容性 vs 配置安全性

⭐⭐⭐⭐

一、Redis持久化机制
1. Redis持久化
  • 必要性: Redis作为纯内存数据库,断电或重启会导致内存数据全部丢失,需要通过持久化机制将数据保存到磁盘
  • 两种机制: RDB(Redis Database)和AOF(Append Only File),两种方式可以同时使用
1)RDB
  • 自动触发规则
    
    • 触发方式: 分为手动触发(管理员执行命令)和自动触发(满足条件时)
    • 默认规则:
      • 3600秒(1小时)内至少1个key改变
      • 300秒(5分钟)内至少100个key改变
      • 60秒内至少10000个key改变
    • 规则特点: 多个规则会同时生效,满足任一条件即触发保存
  • 配置文件名
    
    • 默认文件名: 通过dbfilename配置项指定,默认为dump.rdb
    • 文件内容: 采用特殊编码格式存储,不可直接阅读
  • 文件存储位置
    • 默认路径: 通过dir配置项指定,默认为Redis安装根目录(./)
    • 路径修改: 可配置到存储空间更充足或更安全的位置
  • RDB配置总结
    
    • 三要素配置:
      • 自动触发规则(save配置项)
      • 保存文件名(dbfilename配置项)
      • 存储路径(dir配置项)
    • 手动触发命令: save(前台保存)和bgsave(后台保存)
  • 应用案例
    
    • 例题:查看dump文件内容
2)题目解析
  • 操作步骤: 使用cat命令查看dump.rdb文件内容
  • 结果特点: 文件内容为特殊编码格式,显示为乱码
  • 验证方法: 可通过设置新值后手动保存,观察文件变化
二、知识小结

知识点

核心内容

考试重点/易混淆点

难度系数

Redis持久化机制

纯内存数据库特性导致断电数据丢失,通过持久化解决

内存vs磁盘存储特性差异

⭐⭐

RDB持久化方式

默认机制,定时/定量触发内存数据快照保存到磁盘

save规则配置(时间+键数量阈值)

⭐⭐⭐

RDB触发规则

三重自动触发条件: 1. 3600秒+1个key修改; 2. 300秒+100个key修改; 3. 60秒+10000个key修改

多条件并行生效逻辑

⭐⭐⭐⭐

RDB存储配置

文件名:dump.rdb; 路径:安装根目录(可通过directory修改)

配置文件中的dbfilename和dir参数

⭐⭐

手动持久化命令

支持SAVE(前台阻塞)和BGSAVE(后台异步)

强制刷盘与自动触发的区别

⭐⭐⭐

AOF持久化方式

Append Only File机制(与RDB可共存)

两种机制优劣对比未展开

⭐⭐⭐⭐

数据恢复原理

依赖磁盘文件的断电不丢失特性

内存数据易失性 vs 磁盘持久性

⭐⭐

一、动态修改配置
1. 配置文件修改
  • 持久化配置项:
    • save 3600 1:自动触发规则
    • dbfilename dump.rdb:持久化文件名
    • dir ./:存储路径
  • 手动触发命令:
    • save:同步保存
    • bgsave:后台保存
  • 修改方式:通过vim redis.conf直接修改配置文件中的存储目录、文件名或自动保存规则
2. 动态修改配置
  • 特点:
    • 使用config set命令实时修改配置
    • 修改仅在当前连接会话有效
    • 重启后失效,不会修改配置文件本身
  • 应用场景:需要临时调整配置而不影响持久化配置时使用
1)示例操作



  • 操作步骤:
    • config set dir /www/admin/localhost_80/wwwroot:修改存储路径
    • config set dbfilename redis.php:修改持久化文件名
    • 执行set命令写入数据
    • 执行save命令保存数据
  • 验证方法:检查指定目录下是否生成新文件
2)配置项动态修改示例



  • 关键点:
    • 动态修改后,数据会保存到新指定的路径和文件名
    • 原dump.rdb文件不再更新
    • 可通过删除原文件验证修改是否生效
  • 安全风险:
    • 可能被利用来向服务器任意路径写入任意内容
    • 写入PHP代码可能导致webshell漏洞
  • 注意事项:
    • 动态修改是临时性的
    • 重要配置变更仍需修改配置文件
    • 生产环境应严格控制config set命令权限
二、知识小结

知识点

核心内容

考试重点/易混淆点

难度系数

Redis动态修改配置

通过config set命令临时修改配置(如持久化路径/文件名)

修改仅在当前连接有效,不会写入配置文件

⭐⭐

Redis持久化机制

内存数据保存到指定路径的RDB文件

触发保存的规则配置

⭐⭐⭐

动态配置验证方法

1. 删除旧RDB文件; 2. 修改配置; 3. 写入数据后执行SAVE; 4. 检查新路径是否生成文件

文件内容验证需注意二进制格式

⭐⭐⭐⭐

安全风险演示

通过动态配置+持久化实现任意文件写入: - 修改路径/文件名; - 将恶意代码作为value写入

PHP代码注入示例展示

⭐⭐⭐⭐⭐

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

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

相关文章

4.27搭建用户界面

更新 router下面的index.js添加新的children 先区分一下views文件夹下的不同vue文件: Home.vue是绘制home页面的所有的表格。 Main.vue是架构头部和左侧目录的框架的。 研究一下这个routes对象,就可以发现重定向redirect的奥妙所在,我们先把…

【MySQL】(8) 联合查询

一、联合查询的作用 由于范式的规则,数据分到多个表中,想要查询完整的信息,就需要联合查询多张表。比如查询学生的学生信息和所在班级的信息,就需要联合查询学生表和班级表。 二、联合查询过程 案例:查询学生姓名为孙…

图漾官网Sample_V1版本C++语言完整参考例子---单相机版本

文章目录 1.参考例子 主要梳理了图漾官网Sample_V1版本的例子 1.参考例子 主要增加了从storage区域读取相机参数的设置,使用图漾PercipioViewer软件,如何将相机参数保存到srorage区,可参考链接:保存相机参数操作 保存参数设置 注…

关于本地端口启动问题

如何启动一个本地端口 1. Node.js (使用Express框架) 使用node.js的方法 注意:下列bash命令最好在管理员权限运行的cmd窗口中进行,否则可能会有权限错误 首先,确保您已经安装了Node.js和npm。然后,创建一个新的Node.js项目并安…

产销协同的作用是什么?又如何对各部门发挥作用?

目录 一、产销协同的对象有哪些? 1. 客户需求 2. 市场趋势 3. 供应链伙伴 4. 企业战略目标 二、产销协同的作用是什么? 1. 提高客户满意度 2. 降低企业成本 3. 增强市场竞争力 4. 优化资源配置 三、产销协同对各部门怎么发挥作用?…

React Router v7 从入门到精通指南

一、设计思想与核心原理 1. 设计哲学 组件即路由&#xff1a;路由以 <Route> 组件形式声明&#xff0c;与 React 组件树深度集成声明式导航&#xff1a;通过 <Link> 和 useNavigate 实现无刷新路由跳转动态匹配机制&#xff1a;路径参数、通配符、优先级匹配规则…

Python爬虫实战:获取网yi新闻网财经信息并做数据分析,以供选股做参考

一、引言 在财经领域,股市信息对投资者意义重大。网yi新闻作为知名新闻资讯平台,其股市板块蕴含丰富的最新股市热点信息。然而,依靠传统人工方式从海量网页数据中获取并分析这些信息,效率低下且难以全面覆盖。因此,利用爬虫技术自动化抓取相关信息,并结合数据分析和机器…

Spring Boot Actuator - 应用监控与管理

一、 Spring Boot Actuator 概述 Spring Boot Actuator是Spring Boot 提供的生产级监控与管理工具集&#xff0c;用于实时监控和运维管理应用。Actuator 通过HTTP 端点&#xff08;或 JMX 端点&#xff09;暴露应用的健康状态、性能指标、日志信息、环境配置等关键数据&#x…

不同类型插槽的声明方法和对应的调用方式

在 Vue 3 中&#xff0c;slot 用于让组件的使用者可以向组件内部插入自定义内容。Vue 3 提供了多种声明和使用插槽的方式&#xff0c;下面为你详细介绍不同类型插槽的声明方法和对应的调用方式。 1. 匿名插槽 声明方法 在组件模板中直接使用 标签来定义匿名插槽&#xff0c;它可…

DeepSeek 联手 Word,开启办公开挂模式

目录 一、DeepSeek 与 Word 结合的神奇之处二、前期准备&#xff0c;万事俱备2.1 了解 DeepSeek2.2 确认软件版本2.3 账号与密钥获取 三、接入方法全解析3.1 OfficeAI 插件接入3.1.1 下载与安装插件3.1.2 配置 API 密钥 3.2 VBA 宏接入3.2.1 启用开发者工具3.2.2 调整信任设置3…

云钥科技红外短波工业相机

云钥科技的红外短波相机是一款基于短波红外&#xff08;SWIR&#xff0c;波长范围约1-3微米&#xff09;技术的成像设备&#xff0c;专为高精度检测、全天候成像及特殊场景应用设计。以下从核心技术、性能参数、应用场景及产品优势等方面进行详细介绍&#xff1a; ​​一、核心…

得物 小程序 6宫格 分析

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 逆向过程 部分python代码 if result …

第十六届蓝桥杯 2025 C/C++B组 第二轮省赛 全部题解(未完结)

目录 前言&#xff1a; 试题A&#xff1a;密密摆放 试题B&#xff1a;脉冲强度之和 试题C&#xff1a;25之和 试题D&#xff1a;旗帜 试题H&#xff1a;破解信息 前言&#xff1a; 这是我后续刷到的第二轮省赛的题目&#xff0c;我自己也做了一下&#xff0c;和第一轮省赛…

conda和bash主环境的清理

好的&#xff01;要管理和清理 Conda&#xff08;或 Bash&#xff09;安装的包&#xff0c;可以按照以下步骤进行&#xff0c;避免冗余依赖&#xff0c;节省磁盘空间。 &#x1f4cc; 1. 查看已安装的包 先列出当前环境的所有安装包&#xff0c;找出哪些可能需要清理&#xff…

【Linux】服务自启动设置的方式

关于服务自启动设置的方式,本文将介绍两种方法。分别是systemd服务单元文件的配置和起容器的方式。 目录 1 systemd服务单元文件的配置 [Unit] 部分 [Service] 部分 [Install] 部分 2 docker 1 systemd

面试篇 - LoRA(Low-Rank Adaptation) 原理

1. 问题背景 大模型微调的挑战&#xff1a; 预训练模型&#xff08;如GPT-3、LLaMA&#xff09;参数量巨大&#xff08;数十亿至万亿级&#xff09;&#xff0c;直接微调所有参数&#xff1a; 计算开销大&#xff1a;需更新全部权重&#xff0c;GPU显存不足。 存储冗余&#…

Flink Docker Application Mode 命令解析

Flink官方提供的 Docker 运行 Flink Application Mode 模式&#xff0c;逐句解读含义&#xff0c;并且给予操作实例&#xff1a; 以下是 Flink 官方提供的 Docker 命令&#xff0c;用于在 Application Mode 下运行 Flink Job&#xff08;standalone-job 作为 JobManager&#…

20250427 对话1: 何东山的宇宙起源理论

对话1: 何东山的宇宙起源理论 以下内容综述了何东山团队有关宇宙起源的主要理论成果、方法体系及其学术影响。 何东山团队基于惠勒-德威特方程&#xff08;Wheeler–DeWitt Equation, WDWE&#xff09;和德布罗意–玻姆量子轨道理论&#xff0c;推导出带有额外“量子势”项的…

Python实例题:ebay在线拍卖数据分析

目录 Python实例题 题目 实现思路 代码实现 代码解释 read_auction_data 函数&#xff1a; clean_auction_data 函数&#xff1a; exploratory_analysis 函数&#xff1a; visualize_auction_data 函数&#xff1a; 主程序&#xff1a; 运行思路 注意事项 Python实…

2025年具身智能科技研报

引言 本报告系统梳理了2025年具身智能领域的最新进展&#xff0c;基于国内外权威新闻源与行业研究报告&#xff0c;通过数据可视化与深度分析相结合的方式&#xff0c;呈现该领域多维发展态势。从技术突破层面看&#xff0c;多模态大模型的突破性进展为具身智能注入新动能&…