[資訊安全] VulnHub – Matrix: 3 Write-up

Photo by Ant Rozetsky on Unsplash

閒暇之餘,終於又有時間可以打打 VulnHub 了,工作上剛好有案子結案,在這空檔之下就找點事情做,於是就把 Matrix: 3 解一解,也是該系列的最後一題(目前來說是),想說下班以前可以解完,沒想到大部分的時間都卡在建置 hydra 上,雖然有解決,但對於該題根本沒幫助,總之就是解題寫寫紀錄,有興趣就看看嘍。

環境設定

靶機下載: https://www.vulnhub.com/entry/matrix-3,326/
解壓縮之後是一個 ova 檔案,同樣直接餵給 VMWare 吃,就可以完成佈署了,且網路環境採用 NAT,感覺這一段字都變成起手式了,都是複製貼上,幾乎不用改寫。

尋找靶機

透過 nmap -p- 192.168.232.1/24 把靶機找出來,抓到靶機 IP 為 192.168.232.129,並且服務上面有 80、6464、7331 Ports。

Matrix: 3 Port scan
  • 這邊使用參數 -p- 是掃描並列出 TCP 的所有執行中的 Ports。

服務探勘

80 Port

查看 80 Port 又是一個熟悉的畫面,還一度以為是不是下載錯檔案,並且確認了一下掃到的 Ports,確認與 Matrix: 2 不相同,才放心繼續解題下去。

Matrix: 3 80 Port Page

那就接著跟著 Rabbit 走一回,發現 Rabbit 的圖片名稱為 Matrix_can-show-you-the-door.png

找不到其他隱藏提示,於是就把 Matrix 貼到網址列上,於是發現以下路徑。

但幾乎每條路都是死路,直接使用 wget 將每個路徑下的檔案都下載下來。

wget -c -r -np -k -L -p http://192.168.232.129/Matrix/
tree
find . -name "index.html" -depth -exec cat {} \;|less

最後在 /Matrix/n/e/o/6/4/ 發現 secret.gz 檔案,使用以下指令將檔案下載下來。

wget http://192.168.232.129/Matrix/n/e/o/6/4/secret.gz

由於副檔名是 gz,嘗試解壓縮,但卻失敗,透過 file 指令確認檔案類型,發現只是純文字檔,用 cat 觀察得到一組帳密。

透過線上的 Md5 Decrypt 工具解出明文為 passwd 顯然是弱密碼。

7331 Port

接著戰場轉移到 7331 Port。

登入之後得到一個與 80 Port 長得差不多的頁面,整個套路跟 Matrix: 2 差不多,接著就看有沒有地方可以拿到 SHELL。

接著在 robots.txt 中獲得 /data/ 路徑,並且存在一個 data 檔案,使用 wget 將其下載下來。

wget http://admin:[email protected]:7331/data/data

透過 file 指令可以看出這是個 PE 檔,要使用 Windows 才可以打開,但由於操作都是在 WLS 底下,所以使用 strings 先查看該檔案中的字串集,簡單滑過,並沒有發現什麼線索,也沒有發現變數之類的東西,於是靈光一閃,Windows 通常會以 Unicode 寬字節的方式儲存,所以需要加參數 --encoding={b,l}

strings data --encoding={b,l}
Matrix: 3 Find guest user.

在這邊可以看到裡面包含一組帳密,guest:7R1n17yN30,但現在不知道可以使用在哪,也無法使用該組帳密登入 7331 Port,看來是要轉戰 6464 Port 了。

6464 Port

首先嘗試使用 Curl 對 6464 Port 做請求,得到回應 SSH-2.0-OpenSSH_7.7,看來那組 guest 帳密有地方使用了。

經歷了一番努力,終於拿到 SHELL 了。

Matrix: 3 SSH

但被限制使用 rbash,並且無法使用 /,可以透過 SSH 來 Bypass 這個問題,使用以下指令連接就可以取得一個完整的 bash。

ssh [email protected] -p 6464 -t "bash"

連進去之後 kernal 有點新、sudo su 不給用,透過 sudo -i 查看限制規則如下。

看起來很像是要寫檔案到 trinity 使用者,並且讓他可以讀取,只有寫入的權限下,大概可以嘗試使用 SSH,並且將公鑰丟進去,可以參考文章「SSH 免密碼登入」一文。

ssh-keygen
cp .ssh/id_rsa.pub .
sudo -u trinity cp id_rsa.pub /home/trinity/.ssh/authorized_keys
ssh [email protected] -p 6464

成功登入 trinity 使用者,並且再次查看 sudo -l

發現可以使用 root 權限操作名為 oracle 的檔案,所以寫個 shell scrypt 即可。

Matrix: 3 Catch The Flag.

成功讀取到 Flag。

Get Root

雖然成功得到 Flag,但卻沒有直接得到 root 權限,這也怪自己後知後覺,沒有想到可以直接執行 /bin/bash

touch oracle
chmod +x oracle
echo "/bin/bash" > oracle
sudo ./oracle

檢討

在取得 trinity 權限以前,還沒有想法之前還嘗試想用 hydra + rockyou 破密,跑了大概十分鐘直接放棄,其實更累的不是等這十分鐘,是花更多時間在處理 hydra 建置,WLS 環境下編譯一直有問題,接著 Kali 死在 VM 裡,完全叫不醒,更崩潰的是花費這麼多時間處理,下載 Windows 版本的 hydra 直接可以使用…,所以我到底前面在心酸什麼???

然後還是有很多狀態沒辦法直接透過指令、工具來降低時間成本,還是仰賴用肉眼、手動操作,若是將操作工具的熟練度提升上來,就不用擔心撰寫、操作工具的時間比手動久了,但也相較需要一定的時間去累積經驗才行。

學習重點

  1. hexdump Unicode 使用方法
  2. 查看 sudo -i 規則
  3. SSH 免密碼登入設置
  4. Shell scrypt 效益最大化

系列相關

[資訊安全] VulnHub – Matrix: 2 Write-up

[資訊安全] VulnHub – Matrix: 1 Write-up


發佈留言

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料