Hack The Box - Expressway
https://labs.hackthebox.com/achievement/machine/1503196/736
User.txt
nmap enum
發現只有一個 SSH 端口開著 , 那切入口應該會在 UDP 端口上所以這邊使用一個工具 UDPX
UDP Port Scan
這邊掃到一個關於 500 的端口 , 工具上顯示是 ike
IKE (Internet Key Exchange) 的中文是「網際網路金鑰交換」。
它是在建立 IPSec VPN 安全通道之前的一個自動化協商協定。
它的主要工作有三件:
- 驗證身份:確認連線的雙方都是合法的使用者。
- 協商規則:雙方商量好要用什麼加密演算法來保護資料。
- 產生金鑰:安全地建立一把共用的「密鑰」,用來加密後續所有傳輸的資料。
所以這邊用 ike-scan 來掃描一下端口
從下圖來看可以看到他使用 Enc=3DES 和 Hash=SHA1
這些都是現今被認為是較弱的加密演算法如果他使用 Aggressive Mode 做驗證的話 , 我們很大機率能拿到他密碼的 Hash
所以下面下了兩個指令
我們得知了兩個重要訊息
- Server 用的是 Aggressive Handshake
- Value 透露 USER_FQDN 是 ike@expressway.htb
透過 ike-scan -A {HOST} --id={USER_FQDN} -p{FILE} 把使用者的 Hash 值存成 ike.psk
Crack The Hash
這邊使用 psk-crack 這項工具進行破解 , 字典檔用網路上祖傳的 rockyou.txt
得出密碼為下圖所示
由於他只有留一個 ssh , 我們姑且通靈一下這組帳號能直接連上去
恩 , 果不其然
Root.txt
Enmu
由於這個帳號是管理 VPN 之類的服務 , 沒有權限使用 sudo -l
所以看一下有甚麼服務 , 發現 log 中有 squid
發現這個網域上還有一個 offramp.expressway.htb
sudo -h
是這樣的 , sudo 可以限制某台主機不能使用 sudo 來行使管理員權限我運行 sudo -l 的時候他並不是原生地 sudo 而是這台主機自行編譯的特殊版本她顯示 抱歉 , 在 express.htb 上不能執行該指令
所以我猜想說 , 這個 sudo 管理的方式只有限制在 express.htb 上不能執行 , 其他則可以
所以這邊想到如果我用 sudo -h {HOST} {COMMAND} 是不是能提權了這邊使用 sudo -h offramp.expressway.htb bash 用 root 權限打開了一個 bash
收工
Gemini 小姐解釋一下原理
- sudo 的工作原理與 sudoers 設定檔
首先,sudo 不是無條件讓你用 root 權限。它會去讀取一個規則設定檔 /etc/sudoers,來判斷「哪個使用者,可以從哪個主機,以誰的身份,執行哪個指令」。
一個典型的 sudoers 規則可能長這樣:
user ALL = (root) /bin/ls
- 這表示 user 這個使用者,可以從任何主機 (ALL),以 root 的身份,執行 /bin/ls 指令。
- 基於「主機名稱」的特殊規則
但是,sudoers 允許管理員設定更精細、更嚴格的規則,其中一種就是限制來源主機。
假設管理員在 /etc/sudoers 檔案中寫了下面這條規則:
someuser offramp.expressway.htb = (root) /bin/bash
這條規則的意思是:
- 使用者 someuser,只有當他是從 offramp.expressway.htb 這台主機上執行 sudo 時,才能以 root 的身份,執行 /bin/bash (也就是取得一個 root shell)。
- -h 選項:規則的「漏洞」
現在,假設你目前登入的主機其實是 gateway.expressway.htb,而不是 offramp.expressway.htb。
- 如果你直接執行 sudo /bin/bash,sudo 會檢查規則,發現你目前的主機 (gateway) 跟規則中要求的主機 (offramp) 不匹配,所以會拒絕你。
- 這就是 -h 選項發威的時候了!
- sudo -h offramp.expressway.htb bash
- 這個指令告訴 sudo:「嘿,請你假裝我現在是從 offramp.expressway.htb 這台主機來執行這個指令,然後再去檢查 sudoers 裡的規則。」
sudo 收到這個指令後:
- 看到了 -h offramp.expressway.htb。
- 它在檢查規則時,就會忽略你當前真正的主機名稱,而是使用你用 -h 指定的名稱 offramp.expressway.htb 去做比對。
- 它找到了那條 someuser offramp.expressway.htb = (root) /bin/bash 規則。
- 比對成功!sudo 認為你滿足了所有條件。
- 因此,它授予你 root 權限,並執行 /bin/bash。
最終結果:你就在 gateway.expressway.htb 這台機器上,成功利用一條限制給 offramp.expressway.htb 的規則,取得了一個 root shell。









