偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

XSS攻擊進(jìn)階篇——那些年我們看不懂的XSS

安全 應(yīng)用安全
XSS的實質(zhì)其實是HTML代碼與Javscript代碼的注入。但由于XSS的攻擊對象是與客戶對等的Browser端,因此常常不被開發(fā)者所重視。

一、XSS概述

XSS概述

注:因此沒有反射型XSS、存儲型XSS、DOM XSS這種分類,因為分類依據(jù)都不同…

XSS的實質(zhì)其實是HTML代碼與Javscript代碼的注入。但由于XSS的攻擊對象是與客戶對等的Browser端,因此常常不被開發(fā)者所重視。

一般意義上的XSS通常可以用簡單的方法檢測出來:當(dāng)用戶輸入中某個參數(shù)的全部或其中一部分,原封不動地在源代碼里出現(xiàn)時,我們就可以認(rèn)為這個參數(shù)存在XSS漏洞。

我們可以在掃描器的幫助下鏟除絕大多數(shù)的常規(guī)XSS,因為掃描器所擅長的模式識別很容易從HTML代碼里找出自己剛剛輸入的東西…

直到某一天,出現(xiàn)了一類不會在源代碼中回顯的XSS…此時我們才意識到,原來XSS并不像想象中的那么簡單

二、文件對象模型簡介

2.1 DOM簡介

文檔對象模型(Document Object Model),即大名鼎鼎的DOM。

DOM可以被認(rèn)為是一種通過將頁面元素以對象的樹形方式表現(xiàn),以便由Javascript組織處理的實現(xiàn)方法。

DOM簡介

2.2 常用的DOM方法

用戶可通過 JavaScript (以及其他編程語言)對 HTML DOM 進(jìn)行訪問。所有 HTML 元素被定義為對象,而編程接口則是對象方法和對象屬性。

常用的DOM方法

2.3 四個重要的DOM屬性

nodeName 屬性:規(guī)定節(jié)點的名稱。

  • nodeName 是只讀的
  • 元素節(jié)點的 nodeName 與標(biāo)簽名相同
  • 屬性節(jié)點的 nodeName 與屬性名相同
  • 文本節(jié)點的 nodeName 始終是 #text
  • 文檔節(jié)點的 nodeName 始終是 #document

nodeValue 屬性:規(guī)定節(jié)點的值。

  • 元素節(jié)點的 nodeValue 是 undefined 或 null
  • 文本節(jié)點的 nodeValue 是文本本身
  • 屬性節(jié)點的 nodeValue 是屬性值

nodeType 屬性:返回節(jié)點的類型。

  • nodeType 是只讀的。

innerHTML 屬性:獲取元素內(nèi)容,如:

innerHTML 屬性

即text的值為Hello World!

innerHTML可以被賦值,也可讀,因此是被引用次數(shù)最多的對象屬性,同時也是最容易產(chǎn)生安全問題的對象屬性。

2.4 輸入一般在哪里

Location 對象屬性

Location 對象屬性

JS通常會通過調(diào)用DOM內(nèi)置對象location來獲得用戶輸入,如引用參數(shù)切分可使用location.search,引用完整URL可使用location.href等。

三、DOM base XSS

3.1 兩個典型的DOM過程

1)反射型DOM base XSS

2)存儲型DOM base XSS

存儲型DOM base XSS

3.2 需要了解的知識點

比起常規(guī)XSS,DOM base XSS的漏洞發(fā)現(xiàn)過程更像是代碼審計..

3.3 典型DOM base XSS實例

典型DOM base XSS實例

3.4 mxss

如果用戶輸入“出入”DOM兩次以上,則有可能觸發(fā)更高級別的DOM base XSS:mXSS

mxss

3.5 容易出現(xiàn)mXSS的場景

容易出現(xiàn)mXSS的場景

由于innerHTML會將HTML實體,CSS轉(zhuǎn)義字符,ANSI編碼等進(jìn)行反轉(zhuǎn)義,因此原來被轉(zhuǎn)義之后認(rèn)為安全的用戶輸入很有可能在繞過過濾器之后被反轉(zhuǎn)回去。

四、過濾器繞過

4.1 先來幾個栗子

常規(guī)XSS的過濾器繞過

常規(guī)XSS的過濾器繞過

4.2 過濾器繞過方法

過濾器繞過方法

一般意義上而言,DOM base XSS的首先要通過服務(wù)端的過濾器清洗一番,然后還要通過頁面加載的各個JS腳本,繞過難度相對較大…

編碼繞過:

我們要插入的代碼:

  1. <img src=“” onerror=alert(123)> 

HTML5特性:

4.3 XSS修復(fù)建議

(1)不含有富文本編輯器(自定義樣式)且沒有使用DOM的站點:

  • 輸入:過濾雙引號,單引號,左右尖括號,分號。
  • 輸出:對上述字符進(jìn)行HTML實體編碼即可。

(2)不含有富文本編輯器(自定義樣式)但使用DOM的站點:

  • 輸入:在DOM中轉(zhuǎn)義雙引號,單引號,左右尖括號,分號。
  • 輸出:在輸出之前進(jìn)行編碼,如:innerHTML=encodeHTML(output)

(3)含有富文本編輯器(自定義樣式)但沒有使用DOM的站點:

  • 輸入:過濾雙引號,單引號,分號。
  • 輸出:對上述字符進(jìn)行HTML實體編碼即可。

(4)含有富文本編輯器(自定義樣式)且使用DOM的站點:

  • 沒辦法…指哪兒修哪兒…

五、學(xué)習(xí)資料

 

  • http://sandbox.host.smartgslb.com
  • http://html5sec.org/
  • http://drops.wooyun.org/tips/956
  • http://www.w3school.com.cn/
  • http://www.slideshare.net/x00mario/the-innerhtml-apocalypse
  • http://app.baidu.com/app/enter?appid=280383

原文鏈接:http://blog.nsfocus.net/xss-advance/

【本文是51CTO專欄作者“綠盟科技博客”的原創(chuàng)稿件,轉(zhuǎn)載請通過51CTO聯(lián)系原作者獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2013-04-07 10:11:27

2021-12-09 11:59:49

JavaScript前端提案

2014-03-12 09:25:33

產(chǎn)品經(jīng)理Startup

2010-09-13 10:14:30

2013-07-26 14:59:13

2017-05-16 14:25:28

2011-04-14 12:33:43

2019-12-09 08:29:26

Netty架構(gòu)系統(tǒng)

2020-11-30 23:37:48

ReactXSS攻擊網(wǎng)絡(luò)攻擊

2013-01-11 17:33:46

2010-08-30 11:15:38

2022-07-26 14:38:08

JavaScriptWeb安全自動化

2013-05-28 14:18:04

2022-06-16 14:07:26

Java代碼代碼review

2020-03-30 16:45:06

代碼看不懂

2012-12-24 11:10:11

2011-08-30 14:48:02

2021-06-30 07:25:35

開發(fā)JavaXSS

2024-09-27 08:25:47

2022-12-12 07:40:36

服務(wù)器項目Serverless
點贊
收藏

51CTO技術(shù)棧公眾號