危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2289 浏览18787813

闪游浏览器漏洞挖掘

一、前言

浏览器是用户与WEB服务器交换信息的桥梁,如今市面上有许多的厂商推出了他们自己的浏览器,我们大概将浏览器分为三种:基于IE内核的、非IE内核和双核浏览器。基于IE内核的浏览器是使用了IE原本的内核功能,但独立开发出提供其他第三方面功能的浏览器,这类浏览器有:360浏览器、腾讯TT等等,数量之庞大;非IE内核的浏览器就顾名思义了,典型代表有火狐、Google Chrome,它们的内核都不属于IE;而双核浏览器拥有WebKit模式(一种开源的浏览器内核)和兼容IE的模式,典型代表是搜狗浏览器,也正是它开创了双核浏览器时代,而360也推出了双核无缝的浏览器。

对于基于IE的浏览器,它们在显示网页上是使用了IE的内核,而且独立开发了其他的功能,比如广告过滤、多个标签页、隐私保护等等功能,基本上是不满IE浏览器原本功能而单独整容出的新品种浏览器。

二、浏览器漏洞概述

上节咱们区分了三种浏览器架构——基于IE内核、非IE内核和双核浏览器,对于这三种类型的浏览器,挖掘漏洞方法也有所不同。

对于非IE内核和双核的浏览器,我们可以深度挖掘内核功能上的缺陷,比如对某个HTML标签造成的溢出漏洞等等,常用方法是Fuzzing。

对于IE内核的浏览器,则就不用再对内核功能进行挖掘,因为这些缺陷属于IE上的,而并非特定一款浏览器的内核问题。对于这样的浏览器,可以对该浏览器提供的第三面功能上进行漏洞挖掘。本文之后以闪游浏览器为例开始讲解。

三、闪游浏览器的漏洞挖掘

闪游浏览器,是青岛软媒网络科技有限公司开发的一款基于IE内核的浏览器,界面清爽,采用了WIN7的窗口效果、支持多标签、支持广告过滤、文件小、浏览速度快等等功能。

目前官方最新版式1.5版,昨晚在该版本下找到一个漏洞,可执行任意HTML代码,危害不大,但是我们的目的不是利用漏洞做违法的事,而是开阔眼界,探索各种漏洞的挖掘方法,对于漏洞挖掘,不要只停留在缓冲区溢出漏洞的挖掘,一个软件有不同的功能和不同的设计方法,不同功能的缺陷会造成不同的漏洞。

我们安装好闪游浏览器以后,将该浏览器的主页设置为空白页。然后重新打开浏览器,可看见一个“起始页”(不设置空白主页时,在关闭全部的网页后也可以显示出起始页)。

我们看到什么,是网页收藏,这也是他们扩充的第三面功能之一,为方便用户进入常用的网站。

为了显示效果更炫,他们设计时采用了这种方式显示,其显示内容包括收藏网站的LOGO、网站的标题,而最主要的是,这个页面是以HTML方式显示的,即一个网页文件。那么倘若这里没有过滤任何HTML标签,会不会造成显示出现可执行任意的HTML标签呢?下面来看看这个页面的实现原理。

四、技术原理

要达到显示LOGO和网站标题的作用,必须获得对应网站的标题和LOGO。我们知道一个网页页面由HTML语言构成,不同的HTML标签代表了不同的含义,比如<title>代表了网页的标题、<img>代表显示一张图片、<a>代表一个超链接等等。

闪游浏览器的起始页获得这些信息的方法很简单,添加一个欲收藏的网站时,浏览器自动去搜索该网站的<tilte>标签内的内容,将其显示在起始页上。

但是一个网页中会有许多的图片,浏览器是怎么知道哪张图片是该网站的LOGO的呢?经过一番研究,原来它是去搜索网页中所有<img>中的src属性,如果地址里包含了“logo”字样,就判定该图片为该网站的LOGO,为了证实,我在本地ns网站目录里放了一张图片,命名为logo.jpg,然后建立了一个HTML文件,文件内容如下:

这个HTML代码意思是显示本地一张名为logo.jpg图片,然后访问http://127.0.0.1,可见网页中出现一张图片。

然后再在起始页中点击“添加新的网页”,输入地址http://127.0.0.1并确定。等待数秒钟后,就可以在预览处看到刚才的logo.jpg了。 

五、触发漏洞

不知道大家看出问题来了么,刚才讲的原理,闪游浏览器无非就是将<title></title>之问的内容显示出来。而问题所在是,它并不知道<title></title>之间的内容是否也是一段HTML代码,就胡乱显示出来了,从而导致可以随意执行HTML代码。我将刚才的HTML文件修改一下来证实这一点了。   

在<title></titIe>之间,我插入了一个<iframe src=></iframe>,喜欢挂马的同学都应该明白这个是嵌入一个外部网站,保存后,我们再将它添加到起始页内,却出现了这样的效果。 

刚才我们讲了获得LOGO图片的方法,我们将<body></body>之间插入<img src="logo.jpg"><script>alert("shellcodes.org")</script></img>,让浏览器将代码<script>alert("shellcodes.org")</script>显示出来,添加后,立即弹出了提示框。

不过<img></img>之间的这段脚本只有添加后的那瞬间会被执行,以后无论是再次启动浏览器,还是再次刷新起始页,这段代码都不会再执行,但它确实属于一个安全问题。

六、后记

该漏洞虽然危害不大,但它确确实实是一个安全漏洞。至此,我已经通知了官方了,他们已经开始做一些修补工作。影响版本<=1.5.0.0。希望能通过本文开拓读者挖掘漏洞的视野,而对软件漏洞的概念不仅仅是停留在缓存溢出漏洞上。