子域劫持

子域接管是指攻擊者獲得了目標域的子域的控制權。通常,這發生在子域在域名系統(DNS)中有一個規範名稱(CNAME),但沒有主機為其提供內容。這可能是因為虛擬主機尚未釋出,或者虛擬主機已被移除。攻擊者可以透過提供自己的虛擬主機,然後為其託管自己的內容來接管該子域。

如果攻擊者能夠做到這一點,他們就有可能讀取主域設定的Cookie,執行跨站指令碼攻擊,或繞過內容安全策略,從而能夠捕獲受保護的資訊(包括登入憑據)或向毫無戒心的使用者傳送惡意內容。

子域就像一個電源插座。如果你有自己的電器(主機)插在上面,一切都正常。但是,如果你從插座上拔下你的電器(或尚未插上),別人就可以插入一個不同的電器。你必須在斷路器或保險絲盒(DNS)處斷電,以防止插座被他人使用。

它們是如何發生的?

如果虛擬主機的配置或取消配置(移除)過程處理不當,攻擊者就有可能接管子域。

配置期間

攻擊者在你購買的託管提供商上為你購買的子域名稱設定了虛擬主機。

假設你控制著 example.com 域。你想在 blog.example.com 新增一個部落格,你決定使用一個維護部落格平臺的託管提供商。(對於“部落格”,你可以替換為“電子商務平臺”、“客戶服務平臺”或任何其他“基於雲”的虛擬託管場景。)你可能經歷的過程如下:

  1. 你在域名註冊商處註冊了“blog.example.com”名稱。
  2. 你設定了 DNS 記錄,將想要訪問 blog.example.com 的瀏覽器導向虛擬主機。
  3. 你在託管提供商處建立了一個虛擬主機。

除非託管提供商非常謹慎地驗證設定虛擬主機的實體確實是子域名稱的所有者,否則比你更快的攻擊者可能會使用相同的託管提供商和你的子域名稱建立一個虛擬主機。在這種情況下,一旦你在第 2 步設定了 DNS,攻擊者就可以在你的子域上託管內容。

取消配置期間

你關閉了你的虛擬主機,但攻擊者使用相同的名稱和託管提供商設定了一個新的虛擬主機。

你(或你的公司)決定不再維護部落格,於是從託管提供商那裡移除了虛擬主機。但是,如果你不刪除指向託管提供商的 DNS 條目,攻擊者現在就可以在該提供商處建立自己的虛擬主機,宣告你的子域,並在該子域下託管自己的內容。

防止子域接管的措施

防止子域接管是虛擬主機和 DNS 生命週期管理中操作順序的問題。根據組織的規模,這可能需要多個部門之間的溝通和協調,這隻會增加發生易受攻擊的錯誤配置的可能性。

  • 定義虛擬主機配置和取消配置的標準流程。儘可能緊密地執行所有步驟。

    • 透過宣告虛擬主機開始配置;*最後*建立 DNS 記錄。
    • 透過*首先*移除 DNS 記錄開始取消配置。
  • 建立組織所有域及其託管提供商的清單,並隨情況變化而更新,以確保沒有任何內容被遺漏。

  • 向託管供應商施壓,要求他們彌補漏洞;詢問他們如何驗證聲稱擁有虛擬主機的個人是否確實對域名擁有合法的所有權。在組織內部,將此納入供應商資格審查流程。

我的子域已被接管。我該怎麼辦?

如果你發現你的域的一個子域已被接管,如果可能的話,第一步是“斷電”,即移除該子域的 DNS 條目。如果你的網站有多層虛擬化(例如,除了虛擬主機之外還有CDN),你可能需要檢查每一層,以找出攻擊者確切地在哪裡聲明瞭他們的虛擬主機以接管你的域。

瞭解更多