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

基于QtWebKit的DOM XSS檢測技術(shù)

安全
DOM-based XSS是一種基于文檔對(duì)象模型(Document Object Model,DOM)的XSS漏洞。簡單理解,DOM XSS就是出現(xiàn)在JavaScript代碼中的漏洞。

1、前言

 什么是DOM XSS

DOM-based XSS是一種基于文檔對(duì)象模型(Document Object Model,DOM)的XSS漏洞。簡單理解,DOM XSS就是出現(xiàn)在JavaScript代碼中的漏洞。與普通XSS不同的是,DOM XSS是在瀏覽器的解析中改變頁面DOM樹,且惡意代碼并不在返回頁面源碼中回顯,這使我們無法通過特征匹配來檢測DOM XSS,給自動(dòng)化漏洞檢測帶來了挑戰(zhàn)。本文將介紹一種基于QtWebKit的DOM XSS檢測系統(tǒng)以及本系統(tǒng)目前取得的效果和一些不足之處。

2、QtWebKit

2.1 什么是QtWebKit

首先了解下WebKit,WebKit是一個(gè)開源的瀏覽器引擎,WebKit 所包含的 WebCore 排版引擎和 JSCore 引擎分別來自于 KDE 的KHTML 和 KJS,擁有源碼結(jié)構(gòu)清晰、渲染速度快等特點(diǎn)。蘋果的Safari及Google的Chrome都是基于Webkit引擎開發(fā)的瀏覽器。

QtWebkit是將Webkit移植到QT的一個(gè)開源項(xiàng)目,具有移植性強(qiáng),全面支持HTML、CSS、JS,支持HTML5,支持Flash等各種擴(kuò)展插件,封裝較好及簡單易用等特點(diǎn)。Qt內(nèi)核為我們提供了Networking、GUI等核心功能模塊,Qt API使我們可以很方便的在QT中開發(fā)應(yīng)用層程序,模擬JS執(zhí)行及與DOM樹交互的過程。簡單來說,使用QtWebKit可以很方便的開發(fā)出一款個(gè)性化定制的瀏覽器。

如圖,左邊是WebKit引擎,右邊是基于WebKit的各種應(yīng)用或封裝。

2.2 QtWebKit的編譯與運(yùn)行

QtWebKit可以很好的支持跨平臺(tái)應(yīng)用。首先我們需要安裝QT環(huán)境,筆者采用的版本是qt-everywhere-opensource-src-4.8.2,安裝QT環(huán)境依賴于很多基礎(chǔ)庫,需要耐心的依次安裝,網(wǎng)上有很多參考文檔,這里不再贅述,安裝成功后則可以運(yùn)行qmake –h查看使用幫助。

接下來我們需要編譯安裝WebKit引擎,筆者采用的版本是WebKit-r90370。筆者在編譯時(shí)遇到不少變量未聲明,未定義的引用等編譯錯(cuò)誤,不過只要有源碼,什么都不怕,耐心查看源碼后均已解決。當(dāng)你看到下圖時(shí),恭喜你,整個(gè)QtWebKit環(huán)境已經(jīng)編譯成功了。

編譯成功后我們就可以嘗試調(diào)用QtWebKit的API編寫應(yīng)用程序了,要想基于QtWebKit開發(fā)個(gè)帶GUI界面的應(yīng)用程序(比如一款簡單的瀏覽器)并不難,這里筆者主要想探討下如何使我們的應(yīng)用程序在后臺(tái)無界面運(yùn)行。由于QT自帶的GUI界面既影響系統(tǒng)運(yùn)行速度,又對(duì)我們的檢測功能毫無意義,所以必須考慮剝離。筆者采用的方法是從源碼出發(fā),屏蔽相關(guān)的GUI調(diào)用,然后重新編譯引擎,目前我們的引擎已能較穩(wěn)定的后臺(tái)無界面運(yùn)行了。

3、基于QtWebKit的DOM XSS檢測系統(tǒng)

3.1 檢測原理

有了QtWebKit的JS引擎及DOM樹交互遍歷API,檢測DOM XSS實(shí)際已變得非常簡單。我們可以嘗試在CGI中插入標(biāo)簽或?qū)傩裕纯此麜?huì)不會(huì)被QtWebKit解析出來,如果可以則認(rèn)為有漏洞。

來看個(gè)簡單的例子,如下圖,domxss_img.html存在DOM XSS漏洞,我們嘗試在domtest.html中插入惡意標(biāo)簽<wlk>,如果系統(tǒng)成功解析出WLK標(biāo)簽,則說明檢測到DOM XSS漏洞,<wlk>alert(888)</wlk>是我們的一個(gè)測試用例。除了插入標(biāo)簽,對(duì)于img,iframe等特殊標(biāo)簽,我們也可嘗試插入屬性。

這里只是舉了一個(gè)最簡單的DOM XSS例子,實(shí)際上有些DOM XSS需要一些JS點(diǎn)擊動(dòng)作才能觸發(fā),對(duì)此我們可以遍歷執(zhí)行所有的點(diǎn)擊動(dòng)作再交互遍歷DOM節(jié)點(diǎn),部分代碼如下圖所示。有些DOM XSS需要在特定的if邏輯里才能觸發(fā),我們可以Hook QtWebKit的JS引擎,遍歷所有JS路徑。

3.2 系統(tǒng)效果

本系統(tǒng)自2012年11月中旬上線以來,掃描騰訊所有域名,上百萬個(gè)URL。共有效發(fā)現(xiàn)數(shù)千個(gè)URL存在DOM XSS漏洞。以下是系統(tǒng)發(fā)現(xiàn)的漏洞工單趨勢(shì)圖(一個(gè)工單可能包含若干個(gè)URL)

3.3 不足之處

目前我們的系統(tǒng)還存在一些漏掃及漏報(bào),漏報(bào)主要是QtWebKit自身的編碼問題導(dǎo)致,比如少部分TSRC上報(bào)的DOM XSS漏洞,僅在IE下能觸發(fā),在Chrome下無法觸發(fā)(Chrome也是使用WebKit引擎),系統(tǒng)暫時(shí)無法檢測出來。

另一個(gè)問題是SuperHei大牛在TSRC上報(bào)的Eval等可執(zhí)行函數(shù)過濾不嚴(yán)導(dǎo)致的XSS,筆者簡單模擬了這種漏洞觸發(fā)場景,如下圖,這種并非通過插入新標(biāo)簽或?qū)傩詠碛|發(fā)漏洞,系統(tǒng)暫時(shí)未能有效發(fā)現(xiàn)。

由于QtWebKit是開源的,以上兩個(gè)問題均可排期解決。特別說明下,Eval的問題可以通過Hook JS的特定函數(shù)來解決。

4、總結(jié)

實(shí)際上,我們可以基于QtWebKit做很多其他事情,比如開發(fā)爬取Web2.0鏈接的爬蟲,DOM JUMP檢測,任意JS文件引入檢測,后續(xù)將對(duì)這些系統(tǒng)另文介紹。

DOM XSS的檢測方法還有很多,比如白盒代碼審計(jì)、瀏覽器插件檢測等,筆者這里只是對(duì)一個(gè)看起來快速有效的方案的嘗試,歡迎大家多多批評(píng)指正。

最后感謝黑哥、牧馬人等業(yè)界安全大牛在TSRC上反饋的漏洞,每一個(gè)漏洞都鞭策著騰訊安全漏洞檢測團(tuán)隊(duì)不斷前進(jìn),不斷改進(jìn)我們的漏洞檢測系統(tǒng)。

責(zé)任編輯:藍(lán)雨淚 來源: 博客
相關(guān)推薦

2013-12-02 13:55:23

任意跳轉(zhuǎn)漏洞漏洞檢測DOM跳轉(zhuǎn)漏洞

2016-03-31 15:25:09

2014-04-15 17:03:00

2013-06-05 14:07:45

XssScanerxss

2017-08-03 11:00:20

2013-01-09 14:17:59

2023-10-10 19:00:57

云網(wǎng)關(guān)報(bào)文檢測

2010-09-28 15:27:09

JavaScript

2024-03-14 14:16:13

2020-12-08 06:19:33

爬蟲Dom樹組件

2018-11-13 08:00:14

蘇寧iOS開發(fā)

2016-09-29 14:03:06

2013-04-07 10:11:27

2013-07-27 20:04:38

2013-12-18 09:39:37

XSSWAF繞過

2013-05-22 18:06:41

2017-08-11 17:55:48

前端JavaScript模板引擎

2012-03-14 11:38:16

ibmdw

2012-10-19 15:24:44

2009-08-06 18:20:23

點(diǎn)贊
收藏

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