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_clientsite:target.com inurl:_vti_bin,或搜尋副檔名 .aspx.ashx.asmx
  • Wildcard Searching:使用堆疊萬用字元(例如 site:*.*.target.com intitle:"IIS")可發掘嵌套子域名與開發環境。

主動指紋辨識

主動辨識透過檢查回應標頭中的 Server: Microsoft-IIS/x.xX-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 標頭才能路由至虛擬主機。研究人員可透過以下方式解決:

  1. 檢查 SSL 憑證的 Subject 或 Subject Alternative Name (SAN) 欄位。
  2. 使用 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/&param=onload=alert(1)>

社群見解

業界從業者指出,雖然上述技術有效,但部分管理員會將 IIS 登陸頁面設為蜜罐,以吸引並追蹤攻擊者。此外,8.3 檔名行為在現代 Windows 版本的 C: 磁碟預設啟用,意味著漏洞的可利用性可能取決於網站根目錄所在位置。

SUMMARY: 本指南詳細說明了針對微軟 Internet Information Services(IIS)伺服器的進階偵查與利用方法,重點在於短檔名列舉、設定檔洩漏與 WAF 繞過。

TITLE: IIS 伺服器滲透測試與列舉技術

Sources