IIS 伺服器滲透測試與列舉技術
Microsoft Internet Information Services (IIS) 伺服器常因設定錯誤而暴露廣大的攻擊面,成為安全研究人員與賞金獵人常見的目標。主要的重點在於,預設的 IIS 啟動畫面往往不是死路,而是通往關鍵漏洞的起點,例如內部 IP 洩漏、敏感設定檔外洩以及遠端程式碼執行 (RCE)。
識別 IIS 目標
尋找 IIS 伺服器需要結合被動索引與主動指紋辨識,以定位測試環境、遺忘的管理介面與內部工具。
被動偵測
- Shodan Queries:使用類似
ssl:"target.com" http.title:"IIS"或org:"target" http.title:"IIS"的查詢,找出與特定組織或 SSL 憑證相關的已索引主機。 - Google Dorking:針對 IIS 特徵進行搜尋,例如
site:target.com inurl:aspnet_client、site:target.com inurl:_vti_bin,或搜尋副檔名.aspx、.ashx、.asmx。 - Wildcard Searching:使用堆疊萬用字元(例如
site:*.*.target.com intitle:"IIS")可發掘嵌套子域名與開發環境。
主動指紋辨識
主動辨識透過檢查回應標頭中的 Server: Microsoft-IIS/x.x 與 X-Powered-By: ASP.NET 來完成。可使用 httpx 等工具大規模自動化:
httpx -l targets.txt -td | grep IIS | tee iis-targets.txt
資訊洩漏與偵查
IIS 伺服器常透過簡單的請求變化洩漏內部基礎設施資訊。
內部 IP 洩漏
對特定 IIS 設定(尤其是前端 Exchange 或 Outlook Web Access (OWA))發送 HTTP/1.0 請求,可能會在 Location 標頭中顯示內部 IP 位址:
curl -v --http1.0 http://example.com
虛擬主機偵測
HTTPAPI 2.0 404 錯誤通常表示伺服器已啟動,但需要特定的 Host 標頭才能路由至虛擬主機。研究人員可透過以下方式解決:
- 檢查 SSL 憑證的 Subject 或 Subject Alternative Name (SAN) 欄位。
- 使用
ffuf暴力測試Host標頭:
ffuf -u https://TARGET_IP/ -H "Host: FUZZ.target.com" -w vhosts.txt -fs 0
IIS 波浪號列舉(8.3 檔名)
IIS 繼承了遺留的 DOS 8.3 檔名慣例,即使目錄列舉被停用,也能列舉檔案與目錄的短名稱。
列舉流程
使用 shortscan 或 Burp Suite 的 IIS Tilde Enumeration Scanner 等工具,可辨識出類似 WEB~1.CON(web.config)或 SITEBA~1.ZIP 的片段。
將短檔名還原為完整檔名
找到短檔名片段後,可透過多種方法還原完整檔名:
- LLMs:提示模型根據片段產生可能的完整單詞列表。
- GitHub Dorking:在 GitHub 程式碼中搜尋符合短檔名前六個字元的檔名。
- BigQuery:使用 Google BigQuery 查詢公共 GitHub 資料集,以找出符合模式的實際檔名:
SELECT DISTINCT path FROM `bigquery-public-data.github_repos.files`
WHERE REGEXP_CONTAINS(path, r'(?i)(\/siteba[a-z0-9]+\.zip|^siteba[a-z0-9]+\.zip)')
- Brute-forcing:利用
crunch產生剩餘字元的所有組合,並使用ffuf搭配不同分隔符(連字號、底線、空格)進行模糊測試。
高價值目標模糊測試
一般的字典表往往不足以涵蓋 IIS,應聚焦於 .NET 生態系與特定副檔名進行針對性模糊測試。
需要模糊測試的關鍵路徑
- Configuration Files:
/web.config、/web.config.bak、/appsettings.json。 - Debug Endpoints:
/trace.axd(ASP.NET 追蹤檢視器)與/elmah.axd(錯誤日誌檢視器),可能洩漏標頭、Cookie 與認證資訊。 - Legacy Files:
/_vti_pvt/service.cnf與/WS_FTP.LOG。
推薦的副檔名
模糊測試 .asp、.aspx、.ashx、.asmx、.wsdl、.config、.xml、.zip、.txt、.dll 與 .json 等副檔名。
進階利用技術
web.config 遠端程式碼執行鏈
取得 web.config 檔案是關鍵勝利,因為它常包含用於簽署與加密 ViewState 的機器金鑰。取得金鑰後,攻擊者可使用 ysoserial.net 產生惡意序列化的 ViewState 載荷,進而觸發遠端程式碼執行 (RCE)。
透過無Cookie會話暴露 DLL
ASP.NET 的無 Cookie 會話功能可被濫用以繞過路徑限制,存取 /bin 目錄。使用 (S(X)) 語法,研究人員可下載應用程式 DLL:
GET /(S(X))/b/(S(X))in/WebApplication1.dll
取得的 DLL 可使用 dnSpy 或 JetBrains dotPeek 等工具反編譯,揭露硬編碼的認證與內部邏輯。
路徑與驗證繞過
- Reverse Proxy Confusion:使用
%2f(URL 編碼的斜線)繞過代理存取控制(例如/anything/..%2fadmin/)。 - NTFS Metadata Hacks:在 IIS 7.5 中透過請求 NTFS 替代資料流(例如
/admin::$INDEX_ALLOCATION/admin.php)繞過驗證。 - File Upload Bypasses:在
.aspx檔案後加上尾點(例如shell.aspx.),IIS 會在提供檔案前去除尾點,從而繞過過濾。
透過 HTTP 參數污染 (HPP) 繞過 WAF
IIS 與 ASP.NET 會以逗號串接重複的參數值。此特性可用於將載荷分散於多個參數,以規避 WAF 偵測:
https://target.com/page?param=<svg/¶m=onload=alert(1)>
社群見解
業界從業者指出,雖然上述技術有效,但部分管理員會將 IIS 登陸頁面設為蜜罐,以吸引並追蹤攻擊者。此外,8.3 檔名行為在現代 Windows 版本的 C: 磁碟預設啟用,意味著漏洞的可利用性可能取決於網站根目錄所在位置。
SUMMARY: 本指南詳細說明了針對微軟 Internet Information Services(IIS)伺服器的進階偵查與利用方法,重點在於短檔名列舉、設定檔洩漏與 WAF 繞過。
TITLE: IIS 伺服器滲透測試與列舉技術