詳解DNS重綁定攻擊


0x00 前言

DNS重綁定攻擊的用法有很多種,這篇文章主要理解DNS重綁定攻擊的原理,並介紹如何通過DNS重綁定來攻擊內網設備。為了更好的理解DNS重綁定攻擊,我們先從Web瀏覽器的同源策略開始介紹。



點擊查看往期關於DNS文章:
SAD DNS--新型DNS緩存中毒攻擊
DNS 緩存中毒--Kaminsky 攻擊復現


0x01 Web瀏覽器同源策略(SOP)

同源策略(Same origin policy) 是一個重要的安全策略,它用於限制一個origin的文檔或者它加載的腳本如何能與另一個源的資源進行交互。它能幫助阻隔惡意文檔,減少可能被攻擊的媒介。

  • 其實換句話來說就是在瀏覽器中,同一個域名下的網站只能調用本域名下的資源。就好比說現在有一個網址http://www.psgq.com/index.html的頁面,在同源策略的約束下可以調用http://www.psgq.com/index2.html的資源,但是不能調用http://www.psgq123.com/index.html的資源(<script>,<link>,<iframe>,<img>等標簽的SRC屬性除外)。同源策略最直接的表現就是能夠區分出各個網站的cookie信息,使得我們能夠有條不紊的訪問各個網站而不會照成信息混亂。

  • 另外,如果我在瀏覽器同時訪問新浪和搜狐兩個網站並且這兩個網站都在瀏覽器存儲了用戶名和密碼,那么他們各自只能訪問各自存儲的用戶信息,無法交叉訪問,否則就會造成用戶信息泄露。

  • 試想這樣一種情況:如果沒有同源策略,A網站是一家銀行,往往用來保存用戶的登錄狀態,如果用戶沒有退出登錄,其他網站就可以冒充用戶,為所欲為。因為瀏覽器同時還 Cookie 可以共享,互聯網就毫無安全可言了。


同源的定義:如果兩個 URL 的 協議、域名、端口都相同的話,則這兩個 URL 是同源


舉例來說, https://www.cnblogs.com/PsgQ/ 這個網址中, https 是協議, www.cnblogs.com是域名,端口是443(https協議默認端口可以省略,你也可以把他看成:https://www.cnblogs.com:443/PsgQ/)。任意兩個網址,只要這三點全部相同,那么瀏覽器就認為它們是同源的,任意一個不相同都會被瀏覽器認為是跨域。


注:IE例外

IE瀏覽器對於同源策略有兩個主要的例外:

  1. 授信范圍(Trust Zones):兩個相互之間高度互信的域名,如公司域名(corporate domains),不遵守同源策略的限制。
  2. 端口:IE瀏覽器沒有將端口號加入到同源策略的組成部分之中,因此 http://example.com:81/index.htmlhttp://example.com/index.html 屬於同源並且不受任何限制。

在瀏覽器中, <script><img><iframe><link>等標簽都可以跨域加載,而不受瀏覽器的同源策略的限制, 這些帶src屬性的標簽每次加載的時候,實際上都是瀏覽器發起一次GET請求, 不同於普通請求(XMLHTTPRequest)的是,通過src屬性加載的資源,瀏覽器限制了JavaScript的權限,使其不能讀寫src加載返回的內容

瀏覽器同源策略中,除了上述的幾個標簽可以跨域加載外,其他出現跨域請求時,請求會發到跨域的服務器,並且會服務器會返回數據,只不過瀏覽器"拒收"返回的數據。



0x02 什么是DNS重綁定攻擊?

在網頁瀏覽過程中,用戶在地址欄中輸入包含域名的網址。瀏覽器通過DNS服務器將域名解析為IP地址,然后向對應的IP地址請求資源,最后展現給用戶。而對於域名所有者,他可以設置域名所對應的IP地址。當用戶第一次訪問,解析域名獲取一個IP地址;然后,域名持有者修改對應的IP地址;用戶再次請求該域名,就會獲取一個新的IP地址。對於瀏覽器來說,整個過程訪問的都是同一域名,所以認為是安全的。(瀏覽器同源策略) 這就是DNS Rebinding攻擊。


通過DNS重綁定攻擊可以繞過同源策略,攻擊內網的其他設備。


攻擊條件:

1.攻擊者可以控制惡意的DNS服務器,來回復域名查詢,如 www.attacker.com

2.攻擊者可以欺騙用戶在瀏覽器加載 www.attacker.com。可以通過多種方式,從網絡釣魚到持久性XSS,或購買HTML橫幅廣告,來實現這一目標。

3.攻擊者 控制 www.attacker.com 釣魚網站的服務器。


下面是DNS重綁定攻擊的原理圖:


  1. 受害者打開釣魚郵件的鏈接,他們的Web瀏覽器會發出DNS查詢請求,查詢www.attacker.com的IP地址,基本流程:瀏覽器緩存 -> 系統緩存 -> 路由器 緩存 -> ISP DNS解析器緩存 -> 根域名服務器 -> 頂級域名服務器 -> 權威域名服務器,具體解析過程可參考之前關於DNS的介紹文章。

  2. 攻擊者控制的DNS服務器收到受害者的DNS請求時,會使用www.attacker.com的真實IP地址93.185.216.36進行響應。 它還將響應的TTL值設置為0秒,以便受害者的機器不會長時間緩存它。

  3. 受害者的瀏覽器向釣魚網站服務器發出HTTP請求加載網頁。

  4. 攻擊者進行HTTP響應,並通過JS加載一些惡意代碼,該頁面反復向www.attacker.com 發出POST請求。(POST請求包含惡意代碼)


原理圖


5.因為之前DNS ttl設置為0,緩存很快就失效,所以瀏覽器繼續向惡意權威域名服務器發出查詢。

6.此時,惡意DNS服務器收到查詢后,回復一個內網設備的IP(也可以是一些物聯網設備),如192.168.0.5。

7.因為滿足同源策略,瀏覽器認為是安全的,於是向內網其他設備發送POST惡意請求。


為什么繞過了同源策略?

因為同源策略瀏覽器看的是協議,域名,端口,這些並沒有變化,而背后的IP地址卻已經變了,所以造成了跨域的請求。


TTL是什么?

TTL是英語Time-To-Live的簡稱,意思為一條域名解析記錄在DNS服務器中的存留時間。當各地的DNS服務器接受到解析請求時,就會向域名指定的NS服務器發出解析請求從而獲得解析記錄;在獲得這個記錄之后,記錄會在DNS服務器中保存一段時間,這段時間內如果再接到這個域名的解析請求,DNS服務器將不再向NS服務器發出請求,而是直接返回剛才獲得的記錄;而這個記錄在DNS服務器上保留的時間,就是TTL值。

它表示DNS記錄在DNS服務器上緩存的時間,數值越小,修改記錄各地生效的時間越快。



0x03 總結

本篇文章詳細介紹了Web瀏覽器的同源策略,以及DNS重綁定攻擊內網設備的原理,后續會為大家繼續介紹關於DNS重綁定攻擊的其它用法。


有關DNS的詳細介紹,可參考之前DNS專欄下的文章。


0x04 參考資料

Web安全(一)---瀏覽器同源策略

Web安全(二)---跨域資源共享

【WEB】瀏覽器同源策略及跨域資源共享(CORS)

瀏覽器的同源策略

利用DNS重綁定攻擊專用網絡

利用DNS緩存和TLS協議將受限SSRF變為通用SSRF


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM