<?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; xss</title>
	<atom:link href="http://blog.istef.info/tag/xss/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.istef.info</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 06 Jun 2010 05:52:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<atom:link rel='hub' href='http://blog.istef.info/?pushpress=hub'/>
		<item>
		<title>WordPress 的 XSS 漏洞和暂时解决方案</title>
		<link>http://blog.istef.info/2007/03/22/xss-bug-of-wordpress-and-solutions/</link>
		<comments>http://blog.istef.info/2007/03/22/xss-bug-of-wordpress-and-solutions/#comments</comments>
		<pubDate>Thu, 22 Mar 2007 11:27:53 +0000</pubDate>
		<dc:creator>iStef</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://blog.istef.info/2007/03/22/xss-bug-of-wordpress-and-solutions/</guid>
		<description><![CDATA[Mgccl 同志给我们 CBN 的每位成员邮箱中发了封邮件，内容都差不多，留下了一个链接，向博客的主人展示了一下 WordPress 的 XSS 漏洞以及简易攻击效果。这封邮件没什么恶意，只是善意的提醒，在这里感谢一下 Mgccl。由于我和 Mgccl 之前认识，所以除了我的邮件，似乎其它人的邮件中它都留下了自己网站的链接，不错的推广方法啊。好了，这里我也推荐一下，如果您的英文水平不错的话，可以去看看 Mgccl 的技术型小站 WebDevLogs，会有收获的。 言归正传，让我们看一下这个漏洞。关于 XSS 漏洞最近还是比较火爆的，因为最初爆出这个漏洞问题的是大名鼎鼎的 Google。利用这个漏洞，黑客可以窃取网站访客的 Cookies 信息。有了 Cookies，很多事情都可以做了吧 对于 WordPress 来说，在 SecurityFocus 对于这个漏洞有比较详细的描述。问题主要出现在 WordPress 中 wp_title 这个函数没有对 URL 中的 year 进行良好的过滤。从描述中我们可以看到，除了最新的 SVN 版本外，所有的 WordPress 版本都在受这个漏洞的困扰。虽然这个漏洞被标记为 Less Critical，不过利用这个漏洞攻击还是非常简单的，所以我个人建议还是应该对这个漏洞进行一下修补。 说说解决方法。目前还没有很好的官方解决方法，SecurityFocus 给出的建议是升级到最新的 SVN 版本，因为新版的 WordPress SVN 已经修补了这个漏洞。但是我详细大多数人不是很喜欢用 SVN 版本，甚至很多人也不会用 SVN 去 co 新版本。下面我给出一个比较简单，但不完美的暂时解决方案，临时修补一下这个漏洞。等下一个 WP 版本官方便会修补这个漏洞。 [...]]]></description>
			<content:encoded><![CDATA[<p>Mgccl 同志给我们 <a href="http://chinabloggernetwork.com">CBN</a> 的每位成员邮箱中发了封邮件，内容都差不多，留下了一个链接，向博客的主人展示了一下 WordPress 的 XSS 漏洞以及简易攻击效果。这封邮件没什么恶意，只是善意的提醒，在这里感谢一下 Mgccl。由于我和 Mgccl 之前认识，所以除了我的邮件，似乎其它人的邮件中它都留下了自己网站的链接，不错的推广方法啊。好了，这里我也推荐一下，如果您的英文水平不错的话，可以去看看 Mgccl 的技术型小站 <a href="http://www.webdevlogs.com/">WebDevLogs</a>，会有收获的。</p>
<p>言归正传，让我们看一下这个漏洞。关于 XSS 漏洞最近还是比较火爆的，因为最初爆出这个漏洞问题的是大名鼎鼎的 Google。利用这个漏洞，黑客可以窃取网站访客的 Cookies 信息。有了 Cookies，很多事情都可以做了吧 <img src='http://blog.istef.info/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  对于 WordPress 来说，在 SecurityFocus 对于这个漏洞有<a href="http://www.securityfocus.com/archive/1/462374/30/0/threaded">比较详细的描述</a>。问题主要出现在 WordPress 中 wp_title 这个函数没有对 URL 中的 year 进行良好的过滤。从描述中我们可以看到，除了最新的 SVN 版本外，所有的 WordPress 版本都在受这个漏洞的困扰。虽然这个漏洞被标记为 Less Critical，不过利用这个漏洞攻击还是非常简单的，所以我个人建议还是应该对这个漏洞进行一下修补。</p>
<p>说说解决方法。目前还没有很好的官方解决方法，SecurityFocus 给出的建议是升级到最新的 SVN 版本，因为新版的 WordPress SVN 已经修补了这个漏洞。但是我详细大多数人不是很喜欢用 SVN 版本，甚至很多人也不会用 SVN 去 co 新版本。下面我给出一个<strong>比较简单，但不完美的</strong>暂时解决方案，临时修补一下这个漏洞。等下一个 WP 版本官方便会修补这个漏洞。</p>
<p>其实根据漏洞出现的原理，我们对 WordPress 中 wp-includes/general-template.php 文件 wp_title 函数的 $year 加强过滤即可解决这个注入漏洞。首先找到 function wp_title，然后找到其中的这行（大概在 196 行）：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">&lt;?php</span></li>
<li><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Gray;"> !</span><span style="color: Green;">empty</span><span style="color: Olive;">(</span><span style="color: #00008b;">$year</span><span style="color: Olive;">))</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: #00008b;">$title</span><span style="color: Gray;">=</span><span style="color: #00008b;">$year</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">?&gt;</span></li></ol></div>
<p>修改为：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">&lt;?php</span></li>
<li><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Green;">empty</span><span style="color: Olive;">(</span><span style="color: #00008b;">$year</span><span style="color: Olive;">)</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Blue;">is_numeric</span><span style="color: Olive;">(</span><span style="color: #00008b;">$year</span><span style="color: Olive;">))</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: #00008b;">$year</span><span style="color: Gray;"> = </span><span style="color: Blue;">intval</span><span style="color: Olive;">(</span><span style="color: #00008b;">$year</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; </span><span style="color: #ffa500;">// hack to avoid XSS injection</span></li>
<li><span style="color: #00008b;">$title</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$year</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">?&gt;</span></li></ol></div>
<p>这样基本上就把 $year 过滤干净了，想利用它来进行 XSS 攻击基本不可能了。以上修改是基于 WordPress 2.1.2 的，其它版本的 WP 应该也类似。</p>
<p>对参数没有进行充分过滤是平时写程序经常出现的问题，虽然尽力避免但也难以保证不出现。刚看了一下 SVN 中的 WordPress 新版本，它使用更严谨的过滤方法，而且极大的减少了全局变量的使用。少用全局变量对于提高程序的安全性效果是非常明显的，我们平时写程序时也应该注意一下。
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.istef.info%2F2007%2F03%2F22%2Fxss-bug-of-wordpress-and-solutions%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.istef.info%2F2007%2F03%2F22%2Fxss-bug-of-wordpress-and-solutions%2F&amp;style=compact&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.istef.info/2007/03/22/xss-bug-of-wordpress-and-solutions/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using memcached
Page Caching using memcached
Database Caching 1/9 queries in 0.008 seconds using memcached
Object Caching 321/333 objects using memcached

Served from: blog.istef.info @ 2012-02-13 08:23:08 -->
