HTB - Expressway

2.1k 詞

Hack The Box - Expressway

pic

https://labs.hackthebox.com/achievement/machine/1503196/736


User.txt

nmap enum

pic

發現只有一個 SSH 端口開著 , 那切入口應該會在 UDP 端口上所以這邊使用一個工具 UDPX


UDP Port Scan

pic

這邊掃到一個關於 500 的端口 , 工具上顯示是 ike

IKE (Internet Key Exchange) 的中文是「網際網路金鑰交換」。

它是在建立 IPSec VPN 安全通道之前的一個自動化協商協定。

它的主要工作有三件:

  • 驗證身份:確認連線的雙方都是合法的使用者。
  • 協商規則:雙方商量好要用什麼加密演算法來保護資料。
  • 產生金鑰:安全地建立一把共用的「密鑰」,用來加密後續所有傳輸的資料。

所以這邊用 ike-scan 來掃描一下端口

pic

從下圖來看可以看到他使用 Enc=3DESHash=SHA1
這些都是現今被認為是較弱的加密演算法如果他使用 Aggressive Mode 做驗證的話 , 我們很大機率能拿到他密碼的 Hash
所以下面下了兩個指令

pic
pic

我們得知了兩個重要訊息

  1. Server 用的是 Aggressive Handshake
  2. 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
得出密碼為下圖所示pic
由於他只有留一個 ssh , 我們姑且通靈一下這組帳號能直接連上去pic
恩 , 果不其然


Root.txt

Enmu

由於這個帳號是管理 VPN 之類的服務 , 沒有權限使用 sudo -l
所以看一下有甚麼服務 , 發現 log 中有 squid

pic
發現這個網域上還有一個 offramp.expressway.htb

sudo -h

是這樣的 , sudo 可以限制某台主機不能使用 sudo 來行使管理員權限我運行 sudo -l 的時候他並不是原生地 sudo 而是這台主機自行編譯的特殊版本她顯示 抱歉 , 在 express.htb 上不能執行該指令

所以我猜想說 , 這個 sudo 管理的方式只有限制在 express.htb 上不能執行 , 其他則可以

所以這邊想到如果我用 sudo -h {HOST} {COMMAND} 是不是能提權了這邊使用 sudo -h offramp.expressway.htb bashroot 權限打開了一個 bash

收工
pic


Gemini 小姐解釋一下原理

  1. sudo 的工作原理與 sudoers 設定檔

首先,sudo 不是無條件讓你用 root 權限。它會去讀取一個規則設定檔 /etc/sudoers,來判斷「哪個使用者,可以從哪個主機,以誰的身份,執行哪個指令」。

一個典型的 sudoers 規則可能長這樣:
user ALL = (root) /bin/ls

  • 這表示 user 這個使用者,可以從任何主機 (ALL),以 root 的身份,執行 /bin/ls 指令。
  1. 基於「主機名稱」的特殊規則

但是,sudoers 允許管理員設定更精細、更嚴格的規則,其中一種就是限制來源主機。

假設管理員在 /etc/sudoers 檔案中寫了下面這條規則:
someuser offramp.expressway.htb = (root) /bin/bash

這條規則的意思是:

  • 使用者 someuser,只有當他是從 offramp.expressway.htb 這台主機上執行 sudo 時,才能以 root 的身份,執行 /bin/bash (也就是取得一個 root shell)。
  1. -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。