netcat 或者是 nc 工具被称为互联网上的瑞士军刀,因此 netcat 也有各个版本出现在各个系统中,而在 CentOS 7 开始 netcat 也被整合到 namp 专案中。当然如果是开源系统中,如 Ubuntu 或 Linux 系统中则可以通过 apt 或 yum 来进行安装,在 DOS 系统下可以通过下载 nc for windows 获取到二进位制版的 netcat 。因为 netcat 工具实际上可以通过 tcp 、 udp 或者是 socket 等等的方式在两台 WordPress 主机之间建立连结,然后通过连结读取资料流,而在接收传输资料流的过程中可以任意发挥你的想象,因此它的功能十分强大,在这里就简单的介绍说明一下。
先说明下 nc 中比较常用的引数说明:
-4 : 强制 nc 使用 ipv4
-6 : 强制 nc 使用 ipv6
-D : 使用 socket 的方式
-d : daemon(后台)执行,就可以配置成服务
-l : 监听模式,如果没有特别指定后面常常隐式使用-p 引数
-n : 使用 ip 的,而不使用域名
-p : 使用本地 WordPress 主机的埠,预设是 tcp 协议的埠
-r : 任意指定本地及远端埠
-s : 设定本地 WordPress 主机送出资料包的 IP 地址,WordPress 主机上有多个 IP 时指定系结的 IP
-U : 使用 Unix 的 socket
-u : 使用 udp 协议
-v : 详细输出
-z : 将输入输出关掉,即不进行互动,用于扫描时,注意在 nmap 的版本下没有这个引数
-w : 设定连线超时时间,单位秒
使用也很简单,可以通过简单的测试下:
1 、测试 2 台 WordPress 主机资料流是否能通讯(模拟 Clint/Server 模型)
host A(192.168.2.200):
[root@localhost ~]# nc -lp 1234#注意防火墙上需要开启相应的监听埠
host B(192.168.2.203):
[root@localhost ~]# nc 192.168.2.200 1234
此时如果 hostB 能连通 hostA 的 tcp 1234 埠时,在 host A 上的输出任何资讯都会通过 nc 传送至 host B 上。
2 、资料传输
host A:
[root@localhost ~]# ls -l
总用量 4
-rw——- 1 root root 1150 8 月  9 00:54 file
[root@localhost ~]# nc -l 1234 < file host B: [root@localhost ~]# ls -l 总用量 0 [root@localhost ~]# nc 192.168.2.200 1234 > file
[root@localhost ~]# ls -l
总用量 4
-rw-r–r–. 1 root root 1150 9 月  10 19:29 file
同理还可以使用 tar 命令传送资料流的形式压缩传递档案,以节省频宽
host A:
[root@localhost ~]# du -sh ./*
46M    ./data
[root@localhost ~]# tar -cjf – data | nc -l 1234
host B:
[root@localhost ~]# ls -l
总用量 0
[root@localhost ~]# nc 192.168.2.200 1234 | tar -jxf –
[root@localhost ~]# ls -l
总用量 4
drwxr-xr-x. 9 root root 4096 9 月  10 19:57 data
当然利用这个特性还可以用 nc 模拟 web 站群服务器提供静态页面(利用 nc 搭建临时 web 站群服务器):
host A:
[root@localhost ~]# vim test.html
123
[root@localhost ~]# vim nc_web.sh
#!/bin/bash
while true; do
nc -l 80 < test.html; done [root@localhost ~]# chmod +x nc_web.sh && ./nc_web.sh host B: [root@localhost ~]# curl 192.168.2.200 123 当然利用 nc 的特性,在此功能上还能衍生出其他的很多功能,如:备份、装置克隆,互联网测速,下载、压测等等,在此就不一一介绍了。 3 、给站群服务器传送讯息 如给一个网址传送一个 http 的地址头: [root@localhost ~]# echo -n “GET / HTTP/1.0rnrn” | nc www.baidu.com 80 -v Connection to www.baidu.com 80 port [tcp/http] succeeded! 同理利用这个特性也可以使用 nc 给 SMTP 站群服务器发讯息用来发邮件等等。 4 、埠探测 在这里 nc 的功能比 telnet 好用多了,预设是 tcp 埠: [root@localhost test]# nc -zvn 192.168.2.203 22 nc: connect to 192.168.2.203 port 22 (tcp) failed: Connection refused udp 埠: [root@localhost ~]# nc -zvun 192.168.2.200 1234 某一埠段: 1 [root@localhost ~]# nc -zvn 192.168.2.200 1-1024 5 、 shell/cmd 反弹: host A: [root@localhost ~]# nc -l -p 1234 -t -e /bin/bash -t:telnet 的方式 host B: [root@localhost ~]# nc 192.168.2.200 1234 ls / 1 app bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var 该方法可以绕过防火墙,对目标机 shell 连线,同理用 nc 实现埠转发也是利用该原理。 6 、自定义 http 的头来访问页面 这里建议用 www.try2hack.nl 网站去测试,在其中一些资讯可以谁便填 12345 [root@localhost ~]# nc www.try2hack.nl 80 GET / HTTP/1.1 Host: baidu.com Referrer: Mozilla/5.0 User-Agent: my-browser 在 2 次回车后就把别人的整个 http 头和相关静态页面都获取下来。 总之 netcat/nc 是一个十分实用且的强悍的工具,发挥你的想象灵活多变它可以实现你很多功能,在这里就不全部一一介绍了。