|
|
|
联系客服020-83701501

基于QtWebKit的DOM XSS检测技术

联系在线客服,可以获得免费在线咨询服务。 QQ咨询 我要预约
基于QtWebKit的DOM XSS检测妙技

1、前言
1.1 什么是DOM XSS
DOM-based XSS是一种基于文档器械模型(Document Object Model,DOM)的XSS裂缝。复杂相识,DOM XSS就是泛起在JavaScript代码中的裂缝。与往常XSS不同的是,DOM XSS是在涉猎器的阐发中改变页面DOM树,且恶意代码并不在前去页面源码中回显,这使我们无奈经由特征匹配来检测DOM XSS,给被动化裂缝检测带来了搬弄。本文将介绍一种基于QtWebKit的DOM XSS检测系统以及本系统目前取得的成绩和一些不够之处。

2、QtWebKit
2.1 什么是QtWebKit
首先体会下WebKit,WebKit是一个开源的涉猎器引擎,WebKit 所囊括的 WebCore 排版引擎和 JSCore 引擎别离来自于 KDE 的KHTML 和 KJS,拥有源码布局晓畅、渲染速率快等特点。苹果的Safari及Google的Chrome但凡基于Webkit引擎开发的涉猎器。
QtWebkit是将Webkit移植到QT的一个开源名目,具有移植性强,片面反对HTML、CSS、JS,反对HTML5,反对Flash等各类扩充 插件,封装较好及复杂易用等特点。Qt内核为我们提供了Networking、GUI等核心屈从模块,Qt API使我们也许很轻易的在QT中开发垄断层步调,模拟JS实验及与DOM树交互的历程。复杂来说,操作QtWebKit也许很轻易的开发出一款本色化定 制的涉猎器。
如图,右边是WebKit引擎,左侧是基于WebKit的各类垄断或封装。

2.2 QtWebKit的编译与运行
QtWebKit也许很好的反对跨平台垄断。首先我们需要安放QT环境,笔者采纳的版本是qt-everywhere-opensource-src- 4.8.2,安放QT环境托付于不少基础库,需要耐心的顺次安放,网上有不少参考文档,这里再也不赘述,安放成功后则也许运行qmake –h查抄操作救助。
接上去我们需要编译安放WebKit引擎,笔者采纳的版本是WebKit-r90370。笔者在编译时遇到不少变量未申明,未界说的援用等编译纰谬,不过 只要有源码,什么都不怕,耐心查抄源码后均已规划。当你看到下图时,恭喜你,一小块QtWebKit环境已经编译成功了。

编译成功后我们便也许尝试调用QtWebKit的API编写垄断步调了,要想基于QtWebKit开发个带GUI界面的垄断步调(譬喻一款复杂的涉猎器) 并不难,这里笔者主要想探求下如何使我们的垄断步调在配景无界面运行。由于QT自带的GUI界面既影响系统运行速率,又对我们的检测屈从毫无意偶尔义,以是必 须思索剥离。笔者采纳的体式格式是从源码登程,屏蔽关系的GUI调用,此后从新编译引擎,目前我们的引擎已能较强硬的配景无界面运行了。

3、基于QtWebKit的DOM XSS检测系统
3.1 检测情理
有了QtWebKit的JS引擎及DOM树交互遍历API,检测DOM XSS理论已变得无比复杂。我们也许尝试在CGI中拔出标签或属性,看看他会不会被QtWebKit阐发出来,假定也许则认为有裂缝。
来看个复杂的例子,如下图,domxss_img.html具备DOM XSS裂缝,我们尝试在domtest.html中拔出恶意标签<wlk>,假定系统成功阐发出WLK标签,则阐明检测到DOM XSS裂缝,<wlk>alert(888)</wlk>是我们的一个测试用例。除了拔出标签,关于img,iframe等特殊 标签,我们也可尝试拔出属性。

这里只是举了一个最复杂的DOM XSS例子,理论上有些DOM XSS需要一些JS点击方法本事触发,对此我们也许遍历实验局部的点击方法再交互遍历DOM节点,一小块代码如下图所示。有些DOM XSS需要在特定的if逻辑里本事触发,我们也许Hook QtWebKit的JS引擎,遍历局部JS路径。


3.2 系统成绩
本系统自2012年11月中旬上线以来,扫描腾讯局部域名,上百万个URL。共无效缔造数千个URL具备DOM XSS裂缝。以下是系统缔造的裂缝工单趋势图(一个工单也许囊括几多个URL)

3.3 不够之处
目前我们的系统还具备一些漏扫及漏报,漏报主若是QtWebKit自己的编码题目导致,譬喻少一小块TSRC上报的DOM XSS裂缝,仅在IE下能触发,在Chrome下无奈触发(Chrome也是操作WebKit引擎),系统常设无奈检测出来。
另一个题目是SuperHei大牛在TSRC上报的Eval等可实验函数过滤不严导致的XSS,笔者复杂模拟了这种裂缝触发场景,如下图,这种并非经由拔出新标签或属性来触发裂缝,系统常设未能无效缔造。
由于QtWebKit是开源的,以上两个题目均可排期规划。特别阐明下,Eval的题目也许经由Hook JS的特定函数来规划。

4、总结
理论上,我们也许基于QtWebKit做不少其它事变,譬喻开发爬取Web2.0链接的爬虫,DOM JUMP检测,任意JS文件引入检测,后续将对这些系统另文介绍。
DOM XSS的检测体式格式另有不少,譬喻白盒代码审计、涉猎器插件检测等,笔者这里只是对一个看起来快捷无效的希图的尝试,接待人人多多褒贬斧正。
末端感谢黑哥、牧马人等业界平安大牛在TSRC上回声的裂缝,每个裂缝都敦促着腾讯平安裂缝检测团队不断进步,不断改良我们的裂缝检测系统。

5、参考

[0]原文地点,http://security.tencent.com/index.php/blog/msg/12
[1] Webkit钻研通知,http://wenku.baidu.com/view/7fa3ad6e58fafab069dc02b8.html
[2] Webkit引擎介绍,http://wenku.baidu.com/view/67fa6feaaeaad1f346933f28.html
[3] QT参考文档,http://www.kuqin.com/qtdocument/index.html
[4] 涉猎器的工作情理,http://www.html5rocks.com/zh/tutorials/internals/howbrowserswork/

本文由网络平安攻防钻研室(www.91ri.org)静态平安小组收集整理,转载请说明因由。

数安新闻+更多

证书相关+更多