SSH隧道
SSH 端口转发又叫 SSH 隧道(tunnel),是在 SSH 连接的基础上,通过将客户端或服务器端的某个端口的数据放到 SSH 连接中加密传输,从而在不安全的网络中安全的传输数据或者绕过防火墙的限制实现对目的主机目的端口的访问的一个功能。
- 安全性高:SSH隧道利用SSH协议进行加密传输,可以确保数据传输的安全性。
- 稳定性强:SSH协议是一种稳定、可靠的协议,可以确保数据传输的准确性和稳定性。
- 传输效率低:传输效率不如其他协议的隧道
前提是需要对方开启ssh服务,并且知道对方的ssh账号和密码
不同的后端站点所拿到的shell权限是不一样的。php、aspx的权限是继承中间件的,需要提权。是最低权限,而Java确实最高权限,无需提权。
参数
- -C:压缩传输
- -f:将ssh转⼊后台,不占⽤当前shell
- -N:静默连接,减少被发现
- -g:允许远程主机连接本地⽤于端⼝转发
- -L:本地端⼝转发
- -R:远程点开转发
- -D:动态端⼝
- -P:指定ssh端口
前提——ssh配置
ssh-keygen -A 初始化
vim /etc/ssh/sshd_config 配置⽂件
PermitRootLogin yes 允许root登⼊
1.1 静态端口转发
1.1.1 本地端⼝转发
本地主机执行命令
本地主机(A)、跳板机(B)、目标主机(C)
A指定本地端口访问通过SSH连接转发给B,B将这些数据转发给C,同时将结果传回给A。(一般情况下B的端口是远程连接端口)
A:ssh -CfNg -L 本地端口:⽬标ip:⽬标端⼝ 跳板账号@ip
netstat -antulp | grep 6666 # 查看端⼝占⽤
进行远程桌面连接:rdesktop 127.0.0.1:本地端口
远程终端连接:ssh -p 端口 账户@ip地址
1.1.2 远程端⼝转发
中间跳板执行命令
B需要使用内网C的端口,但是无法直接访问,需要A对B发起ssh连接,并将B的自定义端口转发到C端口上,使得B访问自身自定义端口便可以访问C的端口
A:ssh -CfNg -R 端⼝:⽬标ip:⽬标端⼝ 跳板账号@ip
B:rdesktop 127.0.0.1:端口
1.2 动态端⼝转发
- 动态端口转发,相当于在 ssh 发起端创建一个 SOCKS 代理服务,所有使用这个 socks 的请求,都将转发到 ssh 远端,并将由 ssh 远端发起数据请求,并返回给 ssh 发起端,发起端将数据送回请求端。
- 这种转发不规定目标主机和目标端口,而是去读取应用发起的请求,从请求中获取目标信息。在这种情况下,SSH 服务器要去访问哪一个网站,完全是动态的,取决于原始通信,所以就叫做动态端口转发。
- SOCKS:防火墙安全会话转换协议 (Socks: Protocol for sessions traversal across firewall securely) SOCKS协议提供一个框架,为在 TCP和UDP域中的客户机/服务器应用程序能更方便安全地使用网络防火墙所提供的服务。协议工作在OSI参考模型的第5层(会话层),使用TCP协议传输数据,因而不提供如传递 ICMP信息之类的网络层网关服务。
- SOCKS代理使用范围很广,但SOCKS有SOCK4和SOCK5之分。其中SOCK4只支持TCP协议,SOCK5支持TCP和UDP协议,还支持身份验证、服务器端域名解释等。SOCK4能干的SOCK5都可以干,反过来就不行。我们常用的聊天软件(如QQ),起初就一直用的是TCP和UDP协议,所以只能用SOCK5的代理。
本地主机(A)、跳板机(B)、随机目标机(C)
A的自定义端口作为socks服务端口,请求发送到本地端口,本地端口就把请求转发到跳板机上
A:ssh -CfNg -D 本地端⼝ 跳板账号@ip
1.2.1 浏览器设置代理
浏览器可以访问目标机的网页
1.2.2 利用proxychains4,访问目标机的3389端口
即便是关闭浏览器的代理,也可以访问网页
1.2.3 burp 使⽤ socks 代理
只能使⽤ socks5
frp也可以进行动态端口连接
修改配置文件
上传应用时需要将配置文件一起上传
公⽹服务器 => 跳板机
匿名 vps
关注新漏洞 => rce / ⽂件上传
资源 => 转化
原理 => ⼯具
扫
……