<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          XSS跨站點(diǎn)腳漏洞概述

          共 2157字,需瀏覽 5分鐘

           ·

          2020-09-01 14:39

          來源:SegmentFault 思否社區(qū)

          作者:乘著風(fēng)




          XSS(Cross Site Scripting)跨站點(diǎn)腳本是一種代碼注入攻擊,攻擊者利用Web站點(diǎn)的代碼漏洞,在用戶訪問的網(wǎng)頁時(shí)運(yùn)行植入的惡意JS腳本,從而影響用戶訪問或竊取用戶信息。





          XSS分類


          根據(jù)惡意腳本的觸發(fā)方式,XSS攻擊可分成三種形式,分別是反射型,存儲型和DOM型。


          • 反射型XSS:客戶端的提交的內(nèi)容中帶XSS腳本,服務(wù)器端處理不當(dāng),直接在頁面上輸出內(nèi)容,導(dǎo)致惡意代碼被執(zhí)行。


          例如:惡意用戶在頁面中的文本框中輸入腳本代碼,表單提交后,服務(wù)器程序未對文本框數(shù)據(jù)進(jìn)行轉(zhuǎn)義處理,直接打印到頁面上,頁面返回到客戶端展示時(shí),觸發(fā)腳本執(zhí)行。


          • 存儲型XSS:攻擊者向系統(tǒng)中注入惡意代碼,惡意代碼在數(shù)據(jù)庫中保存,用戶訪問從數(shù)據(jù)庫中讀取的內(nèi)容生成的頁面時(shí),觸發(fā)惡意代碼執(zhí)行。


          例如:惡意用戶在論壇發(fā)帖內(nèi)容中包含腳本代碼,發(fā)帖內(nèi)容提交后保存到服務(wù)器數(shù)據(jù)庫中,當(dāng)其他用戶瀏覽此帖子時(shí),從數(shù)據(jù)庫中讀取帖子內(nèi)容展示,帖子內(nèi)容觸發(fā)腳本在瀏覽器中執(zhí)行。


          • DOM型XSS:反射型XSS類似,區(qū)別在于帶惡意代碼的數(shù)據(jù)不通過服務(wù)器端處理,直接由客戶端JS腳本處理(DOM樹操作)時(shí),觸發(fā)惡意代碼執(zhí)行。


          例如:惡意用戶在URL參數(shù)中植入腳本,用戶點(diǎn)擊URL在瀏覽器打開后,JS讀取有腳本的參數(shù),未做適當(dāng)處理,觸發(fā)腳本執(zhí)行。





          DOM型XSS


          在不需要和服務(wù)器交互情況下,客戶端JS腳本可以在瀏覽器中直接查找、操作(增刪改)DOM模型的元素。同時(shí)也能讀取用戶在瀏覽器的輸入,如URL對象、location對象,并提取相關(guān)的參數(shù)。如果用戶輸入的內(nèi)容總包含惡意腳本,而程序沒有進(jìn)行有效的處理和過濾(如把傳輸數(shù)據(jù)直接交給eval執(zhí)行),就會導(dǎo)致DOM型XSS攻擊。


          攻擊示例


          • 網(wǎng)頁代碼


          以下示例代碼中,JS代碼從瀏覽器URL中讀取param參數(shù),未經(jīng)校驗(yàn)和處理,直接寫入document中,如果參數(shù)內(nèi)容中夾帶可執(zhí)行的JS腳本塊,腳本就會直接執(zhí)行。


              DOM XSS    

          DOM XSS攻擊示例


          • 運(yùn)行效果
          1. 在URL中,增加param=參數(shù),參數(shù)內(nèi)容通過document.write直接寫入到頁面中。



          1. 參數(shù)中的腳本代碼塊直接執(zhí)行,觸發(fā)XSS攻擊。


          除了直接在參數(shù)中帶顯而易見的腳本外,在其他標(biāo)簽中夾雜可執(zhí)行的事件也是常見方式,如在img標(biāo)簽的onerror事件中執(zhí)行腳本。示例如下:param=


          從以上示例中可以看出,造成DOM型XSS漏洞攻擊,主要有兩個(gè)過程:


          1. 在輸入的數(shù)據(jù)源中夾帶了惡意腳本
          2. 程序未對輸入進(jìn)行必要的處理,導(dǎo)致惡意腳本執(zhí)行


          其中,輸入除了上述document.URL,還包括如下數(shù)據(jù)源:


          • document.URL
          • document.URLUnencoded
          • document.location
          • document.referrer
          • window.location
          • location
          • location.href
          • location.search
          • location.hash
          • location.pathname


          對輸入的處理,除了上述document.write,還包括如下方法:


          • 直接執(zhí)行腳本類


          • eval(…)
          • window.execScript(…)
          • window.setInterval(…)
          • window.setTimeout(…)

          • 寫HTML頁面類


          • document.write(…)
          • document.writeln(…)
          • element.innerHTML(…)

          • 直接修改DOM類


          • document.forms[0].action=…
          • document.attachEvent(…)
          • document.create…(…)
          • document.execCommand(…)
          • document.body. …
          • window.attachEvent(…)

          • 替換文檔URL類


          • document.location=…
          • document.location.hostname=…
          • document.location.replace(…)
          • document.location.assign(…)
          • document.URL=…
          • window.navigate(…)

          • 打開/修改窗口類


          • document.open(…)
          • window.open(…)
          • window.location.href=… (and assigning to location’s href, host and hostname)


          更多的DOM型XSS攻擊方法,可參考如下文檔?DOM Based Cross Site Scripting or XSS of the Third Kind





          防御方法


          對于DOM型XSS的攻擊,OWASP組織提供了7條RULE和10條GUIDELINE,此處不再累贅,請參考官方原文DOM based XSS Prevention Cheat Sheet





          點(diǎn)擊左下角閱讀原文,到?SegmentFault 思否社區(qū)?和文章作者展開更多互動和交流。

          -?END -

          瀏覽 46
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  午夜福利视频3000 | 美女操逼视频在线观看 | 国产黄片A | 成人午夜人妻一区二区三区视频 | 麻豆国产在线 |