由於這一題的需求比較不像是一般拿 user.txt
和 root.txt
那樣的 Pentesting 類型,所以這題我額外寫了一段題目前情提要,以下是題目說明
This Rick and Morty themed challenge requires you to exploit a webserver to find 3 ingredients that will help Rick make his potion to transform himself back into a human from a pickle.
Deploy the virtual machine on this task and explore the web application: MACHINE_IP
You can also access the web app using the following link: https://MACHINE_IP.p.thmlabs.com (this will update when the machine has fully started)
總而言之,Rick and Morty (和前面那題一樣也是一個梗) 中的 Rick 因為一些原因變成酸黃瓜,需要我們找 3 個原料讓他恢復回人類,然後題目明確表示了一個網址 (代表有網頁服務可以打且應該是重點)
首先拿到機器 IP 10.10.191.33
,先用 ping 確認機器活著
ping 10.10.191.33
接著使用 nmap 掃有開哪些 port
nmap -v -sV -p- --min-rate 5000 10.10.191.33
可以看到基本上只有 port 22 (ssh
) 和 80 (http
)
順便也把網頁打開看看
基本上也就是題目敘述,沒甚麼特別的
基本確認了有網頁服務之後,嘗試使用 gobuster 掃描有哪些子目錄
gobuster dir -u 10.10.191.33 -w /usr/share/seclists/Discovery/Web-Content/common.txt
可以看到,除了最基本的 index.html
之外,也看到了 /assets/
和 robots.txt
endpoint
在 /assets/
中,可以看到一些檔案,但是仔細檢查過沒有特別的東西
而在 robots.txt
中,可以看到一個 Wubbalubbadubdub
的字串,看起來毫無意義
而目前看起來完全沒有有用的東西,因此我繼續進行 recon
而在 recon 的過程中,在網頁首頁 (/
) 的網頁原始碼中發現了看起來疑似是使用者名稱的東西
得到一使用者名稱為 R1ckRul3s
,不過不知道用在哪裡
根據上一題的經驗,可以用 hydra 搭配字典檔來破解 ssh 密碼,因此我假設這是這台機器的 ssh 帳號 (別忘了我們有 ssh 服務開著),並嘗試使用此工具進行破解,但發現這台機器 ssh 竟然使用 pubkey 而非 password 的方式來驗證,因此這條路線行不通
hydra -l R1ckRul3s -P ~/Desktop/temp/rockyou.txt ssh://10.10.191.33
後來一直找不到突破口,因此去翻了一下其他人的 writeup,發現是因為接下來步驟的網頁 endpoint login.php
不在 gobuster 工具搭配的 common.txt
字典檔裡面,而改用 dirsearch 工具就能找到
以下是 dirsearch 工具的掃描結果
python ./dirsearch/dirsearch.py --url http://10.10.191.3
因此我們也找到了登入頁面 login.php
因為這裡我們沒有密碼,因此我在這邊的想法是是不是使用 sqlmap 之類的工具來做 sql injection,但似乎找不出可以 injection 的部分
sqlmap -u http://10.10.191.33/login.php -a -v --data="username=R1ckRul3s&password=a&sub=Login"
而後我也查詢有關 hydra 破解 http 的相關資訊 [1] [2],也確實查到了有辦法達成,以下是我爆破的 payload
hydra -l R1ckRul3s -P ~/Desktop/temp/rockyou.txt 10.10.191.33 http-post-form "/login/php:username=R1ckRul3s&password=^PASS^&sub=Login:Invalid username or password."
而在爆破的同時我也參考前面的 writeup 看說我的方向是否正確,而發現原來前面找到的 /robots.txt
中看起來像是無意義字串的東西其實就是密碼
因此我們得到密碼為 Wubbalubbadubdub
登入成功後,進到頁面 portal.php
,而得到一個輸入框,看起來能打指令
輸入指令 id
,確認目前身分
輸入指令 ls -al
,查看目前目錄有什麼東西
可以看到有奇怪文件 Sup3rS3cretPickl3Ingred.txt
和 clue.txt
,嘗試進行讀取
cat Sup3rS3cretPickl3Ingred.txt
可以發現輸入有做黑名單的 waf,推測應該是 cat
指令,因此使用一些特殊方法來繞過
c''at Sup3rS3cretPickl3Ingred.txt
得到我們第一個原料 mr. meeseek hair
而接下來看 clue.txt
c''at clue.txt
看起來是要我們在其他路徑找原料
經過一番查找後,在 /home/rick
目錄下找到神秘文件 second ingredients
查看內容,要注意因為檔案中有空白的關係,所以需要雙引號包起來
c''at "/home/rick/second ingredients"
第二個原料是 1 jerry tear
既然第二個原料在 user 目錄下,想必第三個原料是在 root 下,但 root 目錄只有 root 才能看阿,所以想必這邊需要進行提權
而參考了前面說的那篇 writeup,發現雖然用 id 來看我們沒有 sudo 權限,但使用指令 sudo -l
發現我們能在完全不用密碼的情況下執行任何指令,因此我們也算是有 sudo 權限可以使用
為了確認我們確實有獲得 root 身分,輸入指令 sudo id
我們確實拿到 root 身分
因此我們能查看 /root
資料夾的內容
sudo ls -al /root
看到第三個原料的檔案 3rd.txt
取得內容
sudo c''at /root/3rd.txt
第三個原料就是 fleeb juice
至此我們已經拿到這台機器的所有權限
- 原料 1:
mr. meeseek hair
- 原料 2:
1 jerry tear
- 原料 3:
fleeb juice