標籤:javascript
CloudFlare通過對上百萬個網站進行防護,總結出最古老、最普遍的攻擊非DDoS攻擊莫屬。在傳統的DDoS攻擊中,攻擊者會控制大量的傀儡機,然後向目標伺服器發送大量請求,阻止合法使用者訪問網站。
然而,最近幾年DDoS攻擊技術不斷推陳出新:攻擊者用一種新型且很有趣的方式欺騙使用者參與到攻擊活動中。去年CloudFlare就見證了一次使用NTP映射的攻擊,可能是DDoS攻擊史上最大的一次攻擊(大於400Gbps)。
今年的DDoS攻擊又出現了一個新的攻擊趨勢:使用惡意的JavaScript欺騙使用者參與DDoS攻擊。
NTP或者DNS映射攻擊造成的後果受到傀儡伺服器數量的限制,同時攻擊流量也受傀儡伺服器容量的限制。隨著時間的推移,伺服器會不斷的更新補丁,能被攻擊者利用的伺服器數量也在不斷的減少。而基於JavaScript的DDOS攻擊有一個非比尋常的特點:任何有瀏覽器的裝置都可能參與攻擊,其潛在攻擊規模接近無限。
基於JavaScript的DDOS攻擊原理
現代網站的互動作用大多數都是採用JavaScript。JavaScript指令碼可直接注入HTML中,或者通過
function imgflood() { var TARGET = ‘victim-website.com‘ var URI = ‘/index.php?‘ var pic = new Image() var rand = Math.floor(Math.random() * 1000) pic.src = ‘http://‘+TARGET+URI+rand+‘=val‘}setInterval(imgflood, 10)
該指令碼會在目標網頁上產生一個圖片按鈕,圖片按鈕會指向“victim-website.com” 網站。只要使用者訪問了含有該指令碼的網頁,那麼他就會成為 “victim-website.com”DDoS攻擊中的一員。瀏覽器發出的每一個請求都是有效請求,於是該攻擊又變成了Layer 7 攻擊。
FreeBuf百科:應用程式層攻擊
攻擊者發送大量的資料包或利用伺服器應用的漏洞等,飽和伺服器的資源,造成DDOS攻擊,該類漏洞往往不需要大量的肉雞。應用程式層DDOS攻擊的列子包括Slowloris、Apache、Windwos、OpenBSD等的漏洞。如ModSecurity null 指標間接引用遠程拒絕服務漏洞(CVE-2013-2765),攻擊者可以利用該漏洞使Apache Web伺服器崩潰。
如果攻擊者在一個網站中嵌入了惡意JavaScript指令碼,那麼該網站的每一個訪客都將成為DDoS攻擊中的一員。網站流量越高就意味著DDoS越嚴重。
入侵共用JavaScript的第三方伺服器
許多網站使用的都是普通的JavaScript庫,為了節約頻寬、提升效能,通常還會將JavaScript指令碼共用在第三方伺服器上。也就是說如果網站上包含有指向第三方伺服器的指令碼標籤,就意味著所有訪問該網站的使用者都將自動下載JavaScript指令碼,並執行。不幸的是,如果攻擊者入侵了該第三方伺服器並在JavaScript指令碼中注入了DDoS攻擊代碼,那結果可想而知了,所有的訪客也將變成DDoS攻擊中的一員。
2014年9月份的時候,jQuery就發生過這種形式的入侵。
子資源完整性簡介
通過替換第三方伺服器上的JavaScript展開攻擊,這是其實也是一種比較老的攻擊方式。目前HTTP還沒有相關的機制來阻止該指令碼的運行,但W3C已經提出了名叫子資源完整性(SRI)的新功能,使用加密雜湊值驗證指令碼,如果雜湊值不匹配瀏覽器可以阻止其運行。
例如,如下指令碼標籤:
<script src="https://code.jquery.com/jquery-1.10.2.min.js">
瀏覽器會自動下載該.js檔案,並且會不分青紅皂白的運行它。即使該檔案中被攻擊者注入了惡意指令碼,瀏覽器也不會識別。然而如果網站發現了雜湊值驗證指令碼不匹配,子資源完整性(SRI)會告訴瀏覽器不要運行該指令碼。
<script src="https://code.jquery.com/jquery-1.10.2.min.js" integrity="sha256-C6CB9UYIS9UJeqinPHWTHVqh/E1uhG5Twh+Y5qFQmYg=" crossorigin="anonymous">
建議的網站管理員將添加這一標籤添加到伺服器上,用以保護其使用者不被利用。
目前支援子資源完整性的瀏覽器只有Chrome和Firefox。
中間人攻擊
位於瀏覽器和伺服器間的中間人可以任意修改資料,包括更改HTML內容或者JavaScript指令碼。而如果中間人走偏了,做了一些惡意的事情,如向頁面中添加惡意JavaScript並執行,那後果一樣很嚴重 (也就是所謂的中間人攻擊)。
修改傳輸過程中的網站是ISPs和WiFi供應商專屬的技術,但如果攻擊者獲得了這一許可權,他們會將傳輸過程中的指令碼替換成惡意JavaScript指令碼。更甚的是,如果JavaScript指令碼中包含了DDoS指令碼,那DDoS攻擊成員將會進一步的擴大。
情況還可以更糟糕一點,如果JavaScript檔案的傳輸路徑正好經過攻擊者的網路,那麼參與DDoS攻擊的瀏覽器和使用者的數量將會大的驚人。
總結:防禦
基於JavaScript的DDOS攻擊越來越頻發,防禦這一攻擊的唯一方式是全面啟用HTTPS。
淺談基於JavaScript的DDOS攻擊