2026年1月13日 星期二

[研究] IIS 10.0 GCB "要求篩選與其他限制模組","允許高位元字元" 實測

[研究] IIS 10.0 GCB "要求篩選與其他限制模組","允許高位元字元" 實測

2026-01-13

********************************************************************************

Windows Server 從Windows Server 2016開始,IIS為10.0版,後續 Windows Server 2019, Windows Server 2022, Windows Server 2025 也都是 10.0版,大版本號碼相同,小版本可能不同,畫面幾乎相同。

政府組態基準(Government Configuration Baseline,簡稱GCB)

TWGCB-04-014_Microsoft IIS 10政府組態基準說明文件v1.1_1141002

https://www.nics.nat.gov.tw/core_business/cybersecurity_defense/GCB/GCB_Documentation/

https://download.nics.nat.gov.tw/api/v4/file-service/UploadFile/attachfilegcb/TWGCB-04-014_Microsoft%20IIS%2010%E6%94%BF%E5%BA%9C%E7%B5%84%E6%85%8B%E5%9F%BA%E6%BA%96%E8%AA%AA%E6%98%8E%E6%96%87%E4%BB%B6v1.1_1141002.pdf

https://download.nics.nat.gov.tw/api/v4/file-service/UploadFile/attachfilegcb/TWGCB-04-014_Microsoft%20IIS%2010%E6%94%BF%E5%BA%9C%E7%B5%84%E6%85%8B%E5%9F%BA%E6%BA%96%E8%AA%AA%E6%98%8E%E6%96%87%E4%BB%B6v1.1_1141002.docx


********************************************************************************

項次TWGCB-ID類別原則設定名稱說明設定位置設定路徑GCB設定值
28TWGCB-04-014-0028要求篩選與其他限制模組允許高位元字元▪這項原則設定決定查詢字串是否允許使用高位元字元(非ASCII字元)。高位元字元之範例包括:Ж、Ы或Я
▪當查詢字串因含有高位元字元而被拒絕時,IIS將會記錄404.12狀態在日誌檔中
▪禁止使用高位元字元,可確保URL中不會出現非ASCII文字,以避免發生輸入特殊字元或跳脫命令字元等攻擊語法
▪預設值為允許高位元字元
伺服器IIS管理員\伺服器\IIS\要求篩選\動作\開啟功能\動作\編輯功能設定\一般\不勾選「允許高位元字元」不允許



下圖,程式在 Visual Studio 2019 中執行正常 (檔案中文名稱)


下圖,Deploy 後,英文檔案名稱 (Default.aspx ) 正常


下圖,中文名稱的 .aspx 無法執行

**********
HTTP 錯誤 404.12 - Not Found
要求篩選模組設定為拒絕包含高位元字元的要求 URL。

最有可能的原因:
要求包含高位元字元,且網頁伺服器上的要求篩選設定為拒絕高位元字元。

解決方法:
確認 applicationhost.config 或 web.config 檔案中的 configuration/system.webServer/security/requestFiltering@allowHighBitCharacters 設定。

詳細錯誤資訊:
模組    RequestFilteringModule
通知    BeginRequest
處理常式    PageHandlerFactory-Integrated-4.0
錯誤碼    0x00000000
要求的 URL    https://localhost:443/測試.aspx
實體路徑    D:\Production\Test443\測試.aspx
登入方法    尚未判定
登入使用者    尚未判定

詳細資訊:
此為安全性功能。除非完全瞭解變更的範圍,否則請勿變更此功能。當 allowHighBitCharacters 設定為 false (未出現時此值為 true) 時,IIS 會拒絕包含高位元字元的要求。如果伺服器應允許高位元字元,請修改 configuration/system.webServer/security/requestFiltering@allowHighBitCharacters 設定。
檢視詳細資訊 »

**********

下圖,嘗試下載檔案名稱有中文的檔案,失敗

註:有可能需要網站重新啟動 or IIS重新啟動 or Windows 重新啟動。

********************************************************************************

2026-01-15 補

下圖,有人說他測試可以;注意,如果在 Visual Studio 2019 中執行 ASP.NET WebForm,是可以的,那是因為 Visual Studio 中用的 IIS Expresss,不是 IIS 10.0


下圖,Deploy 後,是 IIS 10.0,不是 IIS Express
********************************************************************************
2026-01-16 補

詢問 Gemini AI,

在 IIS 中,**「允許高位元字元」(Allow high-bit characters)**的設定主要用於處理非 ASCII 字元(如中文、日文、韓文或特殊符號)。如果為了支援多語系路徑或參數而勾選「允許」,確實會增加如 字元編碼攻擊(Encoding Attacks) 或 路徑穿越(Path Traversal) 的風險。

針對您的問題,Trend Micro Deep Security (DS) 絕對算是一種強力的資安防護手段。
********************************************************************************
2026-01-16 補

實際測試,設定會立刻生效,不需要重新啟動 網站、IIS 或 Windows。
********************************************************************************
2026-01-16 補

實際測試,「網站」層級設定會覆蓋「伺服器」層級效果。兩者都是修改
C:\Windows\System32\inetsrv\config\applicationHost.config
而非 Web.Config

「伺服器」層級預設是允許,
<requestFiltering allowHighBitCharacters="true">
「伺服器」層級設定為不允許後
<requestFiltering allowHighBitCharacters="false">

「網站」層級很奇怪,實際測試,設定有效果,但 applicationHost.config 和 Web.Config 看不到相對應設定,和 AI 討論不出具體真實原因。

伺服器  網站   網站層級設定結果
true    true   和伺服器相同,不出現
true    false  不出現 <= Why ?
false   true   網站層級預設 true,不出現 
false   false  和伺服器相同,不出現

********************************************************************************

(完)

沒有留言:

張貼留言