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

%s 參數這應該是剛剛測試的 customers & employees

表示 get-list 使用 cat 來讀取檔案



回到剛剛使用 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



留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

濫用 Windows 庫文件(Library File)

Challenge 0 - Secura(1)