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.pswp.cn/web/77783.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77783.shtml
英文地址,請注明出處:http://en.pswp.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;多模態大模型的突破性進展為具身智能注入新動能&…