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 是一個十分實用且的強悍的工具,發揮你的想象靈活多變它可以實現你很多功能,在這裏就不全部一一介紹了。