Proving Grounds Practice : Wheels Walkthrough
Proving Grounds Practice : Wheels Walkthrough
Foothold :
- 80 網站有個註冊系統,註冊時使用枚舉到的信箱當作信箱值
- 後續登入後可以成功進入到員工使用介面並列舉使用者帳號
- 在搜尋的頁面發現 XPATH Injection
- 參考 Hacktricks 後獲得密碼,SSH 成功登入
PE :
- 很特別的 PE 利用,SUID 發現一個不常見的指令 /opt/get-list
- 實際跑跑看僅能須入指定的值,透過 Path Traversal 的方式加上 #<值> 成功繞過
- 讀取 /etc/shadow 後得到 root 密碼 HASH,使用 john 成功破解
- su 切換 root 輸入密碼成功提權
注意 : 此靶機範圍有點超出 OSCP Pen-200 建議可以忽略
Rustscan,└─$ rustscan -a 192.168.223.202 --scripts none --ulimit 5000 | tee rustscan
snmp check,└─$ sudo nmap -sU -p 161 192.168.223.202 | tee snmp
nmap,└─$ sudo nmap -sCV -A -p 22,80 192.168.223.202 | tee nmap
80 /
80 /login.php
80 /robots.txt
註冊看看
感覺有註冊成功但登入後沒有不同
80 /portal.php
gobuster 80 /
80 /assets
80 /assets/footer.php,發現一組郵件地址 info@wheels.service
重新註冊一組帳號然後郵件地址直接使用 info@wheels.service
透過 LOGIN 頁面登入後再點選 EMPLOYEE PORTAL 有東西了,不會 Access Deny
看來驗證的程序是參考郵件地址
搜尋使用者 by Car,出現 3 個使用者名稱 bob、alice、john
搜尋使用者 by Bike,又出現 3 個使用者名稱 dan、alex、selene
將搜尋的請求送到 Burp Suite 確認欄位 Car、Bike 是 work
將送出的結果改成 " ' " 試試看,看來有接受這個參數但沒有任何結果
直接開 sqlmap 看看欄位 work 可否注入,看來沒有 SQL Injection
欄位的測試除了 SQL Injection 也可以測試看看 XPath Injection
XPath Injection 說明參考 https://tcm-sec.com/understanding-xpath-injection-a-beginners-guide/
跟 SQL Injection 一樣,都是透過 Payload 測試看看
XPath Injection 好用 Payload 範例參考
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/XPATH%20Injection/README.md
共 15 筆 Payload 而已,COPY 到 Burp Suite 進行測試,注意最後 3 筆 search= 要拿掉
測試後發現有一筆 Payload [ ')] | //user/*[contains(*,' ] 時間不一樣
改用 Repeater 測試看看內容,回傳值寫 1
測試修改了一番將 Payload 的 //user 路徑拿掉改用 [ ')] | //*[contains(*,' ],可以正常得到值了
接著一樣參考最好用的 Hacktrick https://book.hacktricks.xyz/pentesting-web/xpath-injection
將 Payload 修改如下 [ ')] | //password%00 ]
讀到了一串看來應該是密碼的字串
看來 6 個使用者的密碼都讀到了
將所有密碼紀錄一下並編輯成 passwords.txt,然後 hydra 測試一下看看
獲得一組有效憑證 bob:Iamrockinginmyroom1212
使用該憑證 SSH 進入靶機獲取第一階段 flag
開始 PE,cat /etc/passwd
cat /etc/crontab
sudo -l
SUID check,第一個 /opt/get-list 很特別
執行看看發現可以列舉 customers & employees
將該檔案抓回來看一下內容,發現 /bin/cat /root/details/%s
回到剛剛使用 get-list 的指令,試試看 Path Traversal 能不能過,看來 GG
經過測試一番後發現再後面加上 #customers or #employees 就可以騙過了
看來參數是檢查有沒有這兩個值而已,會一併執行前面的輸入值
讀讀看 /root/.ssh/id_rsa 沒有該檔案,改讀 /etc/shadow,看得到 root 的 HASH
$6$Hk74of.if9klVVcS$EwLAljc7.DOnqZqVOTC0dTa0bRd2ZzyapjBnEN8tgDGrR9ceWViHVtu6gSR.L/WTG398zZCqQiX7DP/1db3MF0
破解看看,成功破解獲得密碼 highschoolmusical
直接 su 切換成 root 讀取 flag
留言
張貼留言