HackTheBox - Fries
三句話摘要
利用 Git 洩露、PostgreSQL RCE、NFS 配置缺陷與 ADCS 證書漏洞攻破跨平臺滲透測試靶機。 這個演練展示瞭如何透過版本控制洩露、資料庫漏洞、NFS 配置缺陷與 ADCS 設計缺陷的鏈式利用,從低許可權逐步升級到域控完全許可權,強調了防禦深度的重要性與每個層次配置錯誤的累積風險。 第一,Git 倉庫歷史是高價值情報源。講者強調 git ignore 的提交記錄常含已刪除但未從歷史清除的敏感檔案,包括資料庫憑證、加密金鑰與內部主機名。這使得對公開倉庫的版本控制歷史進行深度挖掘成為滲透測試的關鍵早期步驟。
重點整理
重點- 1
第一,Git 倉庫歷史是高價值情報源。講者強調 git ignore 的提交記錄常含已刪除但未從歷史清除的敏感檔案,包括資料庫憑證、加密金鑰與內部主機名。這使得對公開倉庫的版本控制歷史進行深度挖掘成為滲透測試的關鍵早期步驟。
- 2
第二,PostgreSQL 透過 COPY FROM PROGRAM 命令支援程式碼執行,結合臨時表可以捕獲命令輸出。講者演示了透過 PgAdmin 的 SQL 查詢工具利用此功能的全過程,包括處理網路限制與多連線的埠複用問題。
- 3
第三,NFS 配置中 no_root_squash 與 no_sec 的缺失允許客戶端透過偽造 UID/GID 繞過許可權控制。講者透過修改本地使用者 ID 與組 ID,使用 setpriv 命令偽裝成目標使用者身份訪問 NFS 共享上的系統檔案與證書。
- 4
第四,Active Directory Certificate Services 的多個配置錯誤(ESC6、ESC7、ESC16)形成鏈式漏洞。低許可權使用者可請求具有高許可權 UPN 的證書。講者利用 Certify 工具啟用脆弱模板、禁用安全擴充套件檢查,最終獲得 Administrator 身份的有效證書。
實用技巧與重點
乾貨- 掃描結果
- 開放埠:22 (SSH)、53 (DNS)、80 (HTTP)、443 (HTTPS)、389 (LDAP)、5985 (WinRM)、8080 (HTTP 替代)
- TTL 分析:SSH 的 TTL=62 表示 Linux,DNS 的 TTL=127 表示巢狀 Windows 系統
- 服務與應用
- fries.htb:Flask 應用(餐廳網站)
- pwm.fries.htb:密碼自助重置服務(HTTPS)
- git.fries.htb:Gitea 例項
- pgadmin05.fries.htb:PgAdmin 4 版本 9.1
- dco1.fries.htb:域控制器與 ADCS 證書服務
- 資料庫資訊
- PostgreSQL 資料庫連線字串(從 Git 歷史提取)
- PgAdmin 預設使用者與密碼(環境變數中洩露)
- LDAP URL:ldap://10.129.33.43:389
- NFS 配置
- 匯出路徑:/srv/web.fries.htb.HTB
- 選項:no_root_squash, no_sec(允許 UID 偽造)
- 掛載點:/srv/web.fries.htb.htb
- Docker 與證書
- Docker TLS 認證檔案位置:/etc/docker/certs.d/
- 檔案列表:ca.pem、client-cert.pem、client-key.pem、server.pem、server-key.pem
- 使用者與憑證
- svc:初始 SSH 使用者
- svc_infra:LDAP 使用者(透過 Responder 捕獲密碼)
- GMSA_CA_prod:組管理服務賬戶(ADCS 管理員)
- Administrator:最終目標
- 工具與命令
- nmap -sC -sV(網路掃描)
- hydra(SSH 暴力破解)
- net exec / nxc(AD 列舉)
- Responder(LDAP 中間人)
- BloodHound(許可權分析)
- Certify.exe(ADCS 漏洞利用)
- evil-winrm(WinRM 訪問)
- openssl(證書生成)
結論
結論“這個演練展示瞭如何透過版本控制洩露、資料庫漏洞、NFS 配置缺陷與 ADCS 設計缺陷的鏈式利用,從低許可權逐步升級到域控完全許可權,強調了防禦深度的重要性與每個層次配置錯誤的累積風險。”
完整解析
詳細這場滲透測試從全面的網路掃描開始。講者使用 nmap 發現約 16 個開放埠,透過 TTL 值與服務橫幅推斷出這是一個 Windows 主機中執行的 Linux 虛擬機器環境。初始階段,講者列舉了三個關鍵虛擬主機:fries.htb 是一個簡單的 Flask 餐廳應用、pwm.fries.htb 執行密碼管理服務、git.fries.htb 暴露了一個 Gitea 例項。
透過審查 Gitea 倉庫的提交歷史,講者發現了關鍵的憑證洩露。Git 歷史中包含資料庫連線字串、PostgreSQL 密碼、金鑰與內部主機名。這些資訊成為後續攻擊的跳板。講者訪問了 pgadmin05.fries.htb 的 PgAdmin 4,使用從 Git 中提取的憑證進行認證。
在 PgAdmin 的 SQL 查詢工具中,講者測試了 PostgreSQL 的程式碼執行能力。透過 COPY FROM PROGRAM 命令,講者執行了系統命令如 sleep 與 ping,確認了 RCE 漏洞。最初的 shell 連線嘗試失敗,講者發現容器網路存在限制。透過更換監聽埠(從 9001 改為 9002),講者成功獲得了 postgres 容器的 bash shell。雖然容器 shell 用處有限,但環境變數中存在 PgAdmin 密碼洩露。
透過 Responder 工具設定 LDAP 中間人攻擊,講者截獲了 svc_infra 使用者嘗試與 LDAP 伺服器通訊時傳送的明文密碼。獲得這個憑證後,講者可以透過 SSH 登入主機。在系統偵察中,講者發現了 NFS 匯出配置中的嚴重漏洞:/srv/web.fries.htb.htb 匯出配置中缺少 root_squash 與 sec 選項,意味著可以偽造任意 UID/GID。
講者利用 setpriv 命令修改本地程序的 UID/GID,偽裝成不同使用者從 NFS 共享訪問系統檔案。透過這種方法,講者複製了 root 使用者的 SSH 金鑰,最終以 root 身份透過 SSH 登入主機。作為 root,講者提取了 Docker 的 TLS 客戶端證書。這些證書允許講者直接與 Docker 守護程序通訊。講者啟動了一個掛載了整個根檔案系統的容器,從而獲得了 Windows 主機根目錄的訪問許可權。
許可權提升的最後階段涉及 Active Directory。講者使用 BloodHound 分析了許可權關係,發現 svc_infra 使用者屬於 Cert Admins 組,可以管理證書服務。講者執行了 certutil 工具發現系統容易受到 ESC7 攻擊。透過上傳 Certify.exe,講者啟用了 ESC6 選項,允許偽造使用者主體名稱(UPN)。之後,講者請求了以 Administrator 身份認證的證書。
初次嘗試失敗是因為證書中的安全擴充套件與域要求不匹配。講者透過啟用 ESC16 選項禁用了安全擴充套件檢查,重新請求證書。最終獲得了有效的管理員證書,用於偽造 Kerberos 認證令牌。講者使用這個證書透過 PsExec 連線到域控制器,最終以管理員身份獲得了 Windows 系統的完全控制權。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

