HackTheBox - Cobblestone
三句話摘要
Hack the Box Cobblestone 機器完整攻略:從 XSS/CSRF 竊取管理員 Session,通過 SSTI 命令注入繞過 App Armor 限制,最後利用 Cobbler XML-RPC 漏洞取得 root 權限。 好的枚舉(尤其是發現 App Armor 限制)和已知漏洞組合,能把看似「難」的機器轉化成邏輯清晰的多階段攻擊鏈。 XSS/CSRF 組合竊取 HTTP-Only Cookie:雖然 PHP Session Cookie 標記為 HTTP-Only 無法直接用 JavaScript 竊取,但可用 CSRF 強制受害者訪問 /admin/server_info.php(包含 phpinfo 輸出),再用 fetch 和 no-cors mode 取回頁面內容,從中提取 admin 的 Session ID。
重點整理
重點- 1
XSS/CSRF 組合竊取 HTTP-Only Cookie:雖然 PHP Session Cookie 標記為 HTTP-Only 無法直接用 JavaScript 竊取,但可用 CSRF 強制受害者訪問 /admin/server_info.php(包含 phpinfo 輸出),再用 fetch 和 no-cors mode 取回頁面內容,從中提取 admin 的 Session ID。
- 2
App Armor 限制下的命令執行:SSTI 雖可執行命令,但 App Armor profile 禁用了 bash、perl、python、pipe 符號等,只開放 sh、cat、grep、ls、id 等基礎指令;無法直接得到 reverse shell,改用 MySQL dump 功能洩露資料庫。
- 3
Cobbler 認證繞過 + 命令注入組合:Cobbler 的 XML-RPC 介面有已知的認證繞過(用 password=-1 登入),以及 rsync flags 的命令注入漏點;可通過 Python xmlrpc.client 連線本地 25151 port,執行任意 shell 命令成 root。
- 4
重要的資訊收集細節:網頁標籤欄隱藏 admin 連結,需調整瀏覽器視窗大小才看得到;App Armor 設定檔存放在 /etc/apparmor.d/,內容揭示允許/禁止的命令與路徑。
實用技巧與重點
乾貨- 開放埠:22 (SSH, Debian)、80 (Apache)
- 虛擬主機:cobblestone.htb、vote.cobblestone.htb、deploy.cobblestone.htb、mc.cobblestone.htb
- 漏洞類型:SQL injection (suggest.php)、XSS (username/skin 欄位)、SSTI (first_name 欄位,Twig template)
- 命令執行測試:`{{ 7*7 }}`、`{{ self._load_file('/etc/passwd') }}`
- 密碼雜湊:SHA256-sum 格式,可用 crack-station 破解
- 資料庫認證:username=db_user、密碼在 /var/www/html/db/connection.php
- SSH 帳號:cobble (受限 bash)、john (regular bash)
- Cobbler XML-RPC 端口:25151
- 認證繞過密碼:-1(需轉為整數型態)
- 命令執行:system.execute_sync() or system.register(),支援 rsync flags 命令注入
- 受限環境可執行命令:/bin/sh、/bin/cat、/bin/grep、/bin/ls、/bin/ps、/usr/bin/mysql、/usr/bin/mysqldump
- 禁用命令:bash、python、perl、php、ruby、nc、管道符 (|)、/dev/tcp 重定向
結論
結論“好的枚舉(尤其是發現 App Armor 限制)和已知漏洞組合,能把看似「難」的機器轉化成邏輯清晰的多階段攻擊鏈。”
完整解析
詳細攻擊流程始於 nmap 掃描,發現 SSH 和 HTTP 服務,並解析到多個虛擬主機。講者首先測試登入功能並發現登入頁面的 SQL injection 漏洞,於是用 sqlmap 自動化分析資料庫。與此同時,通過在 suggest.php 提交惡意 URL,測試 SSRF 和 XSS,發現網頁會用 headless Chrome 訪問提交的連結。
利用這個 XSS 漏洞,講者構造了一個 fetch payload,通過 CSRF 讓 admin 訪問 /admin/server_info.php(包含 phpinfo 輸出,其中顯示所有 HTTP 請求的 Cookie),並將頁面內容回傳。如此成功竊取 admin 的 PHP Session ID。登入 admin 帳號後,講者發現 user management 頁面的 first_name 欄位存在 SSTI,測試 `{{ 7*7 }}` 得到 `49` 確認漏洞。
嘗試執行反向 shell 時碰上 App Armor 限制。講者檢視 /etc/apparmor.d/apache2.d/cobblestone,發現設定檔限制了大量命令執行。改用 mysqldump 功能洩露資料庫,取得 admin 帳號的 SHA256-sum 密碼雜湊,用線上服務破解得到明文 `Cobblestone123`。利用此密碼透過 SSH 進入 cobble 帳號,進入受限 bash 環境。
在受限環境內,講者發現本地運行 Cobbler(網路安裝服務)於 25151 port。通過 Python xmlrpc.client 連線該 port,利用已知的認證繞過漏洞(password=-1)登入,再透過 rsync flags 參數的命令注入執行 bash reverse shell,最終以 root 權限取得完整控制權。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

