SSH端口中转全攻略_基础篇

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

在这里插入图片描述
0x01 -L参数
命令:

ssh -L5432:host_A:12345 ApacheServer@host_B

作用:将本地机(客户机)的某个端口转发到远端指定机器的指定端口.

工作原理:本地机器上分配了一个 socket 侦听 port 端口(5432端口), 一旦这个端口上有了连接, 该连接就经过本地计算机与远程计算机host_B的安全通道转发出去, 此时本地主机与远程主机之间的通信是加密的。同时远程主机host_B和 host_A 的 hostport 端口(12345端口)建立连接,此时远程主机host_B与目标主机host_A的通信是没有加密的。

操作如下: 在远程主机用netcat监听12345端口,执行命令使远程主机的12345端口与本地的5432端口相连(注意操作的顺序问题,为了和下面的-R参数做区分)
在这里插入图片描述
这个时候telnet本地的5432端口,就相当于接到了远程主机的12345端口上:
在这里插入图片描述
应用场景一:

在本地主机上执行以下的命令,你想要访问受限网站staff.washington.edu,通过homer.u这台被你控制的主机进行中转:

ssh -L3210:staff.washington.edu:80 some-server

我们在浏览器上打开http://localhost:3210/corey/info.cgi 就相当于访问http://staff.washington.edu:80/corey/info.cgi

应用场景二:

你拿下了目标的一台业务系统的服务器,刚好这台服务器host_A能够与外网主机通信,也能访问内网主机host_B:

ssh -L3210:host_B:80 host_A

此时即可通过访问本地的3210端口来访问到目标机子上的80端口,便可以进行内网渗透了。

0x02 -D参数
命令:

ssh2 -L socks/3210 homer.u	# if using commercial ssh2
ssh -2 -D 3210 homer.u		# if using a recent OpenSSH

作用:充当本地soscks服务器

工作原理:指定一个本地机器 “动态的” 应用程序端口转发. 先 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接…而且本地主机与远程主机之间的通信是加密的。
浏览器设置socks代理:
在这里插入图片描述
成功突破GFW的限制:
在这里插入图片描述
应用场景:可以干什么不用我说了吧!

0x03 -R参数
命令:

ssh -R4567:localhost:80 some-server

作用:将本地端指定机器的指定端口转发到远程主机(服务器)的某个端口

工作原理: 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接.

操作如下:使用netcat在本地监听12345端口,在使用命令将本地12345端口反向连接到远程主机的5432端口上
在这里插入图片描述
此时Telnet远程主机的5432端口,即可连接到本地主机的12345端口上:
在这里插入图片描述
其实-R和-L参数的原理差不多,我手绘了一张图帮助大家理解一下(不要嫌丑啊,看懂就行):
在这里插入图片描述
从上面的图可以看出,-R参数和-L参数的应用场景是一模一样的,区别有两点:第一是执行命令的地方,第二是中转主机的条件限制,中转主机一般就是我们在渗透中获得的“口子”(渗透的入口,一般是web业务应用系统),根据口子的条件限制,我们采用的中转方式也不同:
-L参数使用于中转机能与外网直接相连,没有防火墙的限制,并且中转机有双网卡,能够直达内网。当然,这种情况在渗透中极其少见,一般遇到一台就偷笑了。(不过在更大型的网络结构中,找到具有双网卡的内网主机,往往是渗透的突破口)。
我们经常与到的场景是,业务服务器部署在DMZ区,甚至部署在内网区域。通过路由器的端口映射将业务端口映射到外网供用户访问。拿到“口子”之后,中转主机具有内网IP。这个时候,-R参数就起作用了。通过反向连接,将内网的流量中转到外网的肉鸡上,然后再进行下一步的渗透攻击。
0x04 其他参数

-f Fork into background after authentication.

后台认证用户/密码,通常和-N连用,不用登录到远程主机。

-N Do not execute a shell or command.

不执行脚本或命令,通常与-f连用。

-C Enable compression.

压缩数据传输。

-g Allow remote hosts to connect to forwarded ports.

在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。

注:这个参数我在实践中似乎始终不起作用。哪位高手可以指点指点一下?

猜你喜欢

转载自blog.csdn.net/kclax/article/details/92210495