IIS 透過沒有 Host 標頭的 HTTP/1.0 請求洩漏內部 IP

IIS 透過沒有 Host 標頭的 HTTP/1.0 請求洩漏內部 IP

對我們的 IIS 10 伺服器的安全掃描顯示,Location當向資料夾(例如https://example.org/Content.這會產生以下內容(xxx代表內部 IP):

HTTP/1.1 301 Moved Permanently
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Content-Type: text/html; charset=UTF-8
Expires: -1
Location: https://xxx.xxx.xxx.xxx/Content/
....

幾個問題:

  • 解決這個問題的最佳實踐是什麼?
  • 我們如何在掃描軟體之外執行 GET HTTP/1.0 請求來模擬此情況並在修復後進行測試?

謝謝。

更新:嘗試了 URL 重寫規則這個帖子但它會拋出 500 錯誤。

答案1

本文隨著這個概述透過中止缺少主機標頭的請求來防止此類攻擊(客戶端存取伺服器資訊外洩漏洞)。

以下是解決此問題的步驟。確保您擁有URL重寫模組安裝,

  1. 打開 IIS。

  2. 選擇您的網站。

  3. 雙擊“URL 重寫”。

  4. 按一下右側操作面板中的新增規則。

  5. 選擇入站規則 > 請求阻止。

  6. 輸入規則的以下設定:

    阻止訪問基於:主機頭

    阻止請求: 與圖案不符

    模式(主機頭): .+ (讀作:“點加”,意思是“匹配一個或多個任意字元”)

    使用: 常用表達

    如何阻止:中止請求

  7. 按一下「確定」儲存規則。

更新:在 Windows Server 上執行的安全性掃描顯示,此變更後漏洞不再存在。

相關內容