前言
什么是SSH隧道
SSH隧道是使用SSH协议连接两台计算机之间的通道。它使用密钥加密数据传输,并允许计算机之间的安全连接。
通常,SSH隧道用于通过不安全的网络(例如互联网)连接到远程服务器。隧道提供了一种安全的方法来访问远程服务器,而无需担心数据被窃取。
要使用SSH隧道,需要有远程服务器的SSH登录凭据,包括用户名和密码或SSH密钥。还需要安装并运行SSH客户端软件,例如PuTTY或OpenSSH。使用这些工具,可以连接到远程服务器并使用SSH隧道。
总之,SSH隧道是一种安全连接两台计算机的方法,可以在不安全的网络中传输数据并访问远程服务器
什么是SSH端口转发
SSH端口转发是使用SSH隧道将本地计算机的端口映射到远程计算机的端口的功能。这样就可以使用本地计算机访问远程计算机上的服务,而无需直接连接到远程计算机
正向SSH端口转发用于允许本地计算机访问远程计算机上的服务,而反向SSH端口转发用于允许远程计算机访问本地计算机上的服务。
使用反向SSH端口转发时,需要注意的一点是,需要在本地计算机上打开防火墙规则,允许远程计算机连接到本地计算机的端口。如果防火墙规则阻止了连接,则反向SSH端口转发将无法正常工作
SSH常用命令参数
- -C: 表示压缩数据传输
- -N: 告诉SSH客户端, 此连接不需要执行任何命令, 仅用于端口转发
- -L: 指定本地转发端口
- -R: 指定远程转发端口
- -f: 表示SSH连接在后台运行
- -q: 表示安静模式, 不向用户输出任何警告信息
Windows安装SSH服务
1.下载OpenSSH文件
OpenSSH下载地址: https://github.com/PowerShell/Win32-OpenSSH/releases
2.解压文件至相应文件夹
3.设置环境变量
此处我添加的环境变量为: E:\HackerTools\Intranet Penetration\Tunnel Tools\OpenSSH-Win64
4.CMD测试SSH命令
cmd命令行输入: ssh
, 出现如下界面代表ssh服务安装成功
SSH正向端口转发访问内网
拓扑环境
本地端口转发本质上是一种正向连接, 通过让代理服务器作为跳板将内网主机的指定端口映射至本地主机(攻击机)的指定端口
操作步骤
在攻击机执行如下ssh命令, 然后输入ssh连接远程服务器, 并输入对应用户的密码
ssh -L 7777:192.168.52.149:80 [email protected] -fN
SSH正向端口转发命令语法:
ssh -L [本地端口]:[目标IP]:[目标端口] [跳板机ip及用户名] -fN
随后攻击机访问本机的7777端口, 即可访问内网主机80端口的Web服务
SSH反向端口转发访问内网
拓扑环境
SSH远程端口转发其实相当于一个反向连接, 如上图所示, 代理服务器和内网主机之间有一个防火墙, 由于防火墙限制了内网主机80端口的访问, 因此需要内网主机主动去连接代理服务器, 将本地的指定端口映射到远程服务器的指定端口, 以此来突破防火墙的限制
若将内网主机的80端口映射至代理服务器的6666端口, 那么攻击机就能通过访问代理服务器的6666端口访问到内网主机的80端口
操作步骤
在代理服务器修改ssh服务的配置文件: vim /etc/ssh/sshd_config
, 将GatewayPorts设置为yes, 然后保存文件
若不将GatewayPorts设置为yes, 那么映射的端口只能绑定在127.0.0.1上, 也就是说只有本机才能访问映射的端口, 其他机器是无法访问到的; 将GatewayPorts设置为yes后, 映射的端口会绑定在0.0.0.0上
修改完ssh配置文件后重启sshd服务: service sshd restart
在内网主机执行如下代码, 意思是将本地主机的80端口与远程服务器的6666端口相互映射
ssh -N -R [远程端口]:[本地ip]:[本地端口] [用户名及远程服务器ip] -fN
SSH反向端口转发命令语法:
ssh -N -R [远程端口]:[本地ip]:[本地端口] 远程服务器
在攻击机访问代理服务器的6666端口, 即可访问到内网主机80端口的web服务