TryHackMe
场景:
现有三台机器ip分别为 一号机器(Linux): 10.50.98.17, 二号机器(windows): thmjmp2.za.tryhackme.com, 三号机器(windows): thmiis.za.tryhackme.com
其中一号机器可以连接上二号机器的3389端口(RDP),但不能直接连接上三号机器的3389
二号机器可以连接上三号机器的3389(RDP)
请使用SSH远程端口转发使一号机器可以连接上三号机器的3389端口(RDP)
连接 二号机器的凭据: grace.brooks:Vrgr6062 (ssh & rdp)
连接 三号机器的票据: t1_thomas.moore:MyPazzw3rd2020
在一号机器上创建一个专门用于创建隧道的用户tunneluser
useradd tunneluser -m -d /home/tunneluser -s /bin/true // shell指定为true,是一个立即成功退出的命令,因此该用户无法登录
passwd tunneluser
SSH 远程端口转发
ssh -R
先在一号机器上执行命令连接到二号机器
xfreerdp /u:grace.brooks /p:Vrgr6062 /v:thmjmp2.za.tryhackme.com
在二号机器上执行
ssh -R 13389:thmiis.za.tryhackme.com:3389 -N grace.brooks@10.50.98.17
- 从二号机器连接到一号机器(10.50.98.17)的SSH服务器。
- 在一号机器上开放13389端口(我们用33389以避免可能的端口冲突)。
- 将连接到一号机器13389端口的流量转发到三号机器(thmiis.za.tryhackme.com)的3389端口。
-N
表示不执行远程命令,只建立端口转发。
此时,一号机器会开放一个端口13389$ netstat -tnpl | grep 13389 tcp 0 0 127.0.0.1:13389 0.0.0.0:* LISTEN 25810/sshd: tunneluser tcp6 0 0 ::1:13389 :::* LISTEN 25810/sshd: tunneluser
在一号机器上执行命令,即可连接到三号机器的RDP
xfreerdp /u:t1_thomas.moore /p:MyPazzw3rd2020 /v:127.0.0.1:13389
上图中10.200.100.201
是三号机器的IP,10.200.100.249
是二号机器的IP
SSH 本地端口转发
ssh -R
在一号机器上执行
ssh -L 23389:thmiis.za.tryhackme.com:3389 grace.brooks@thmjmp2.za.tryhackme.com -N
将三号机器的3389端口转发到本地的23389,通过机器二作为跳板机
此时一号机器上的端口通信情况
$ netstat -tnpl | grep 23389
tcp 0 0 127.0.0.1:23389 0.0.0.0:* LISTEN 29025/ssh
tcp6 0 0 ::1:23389 :::* LISTEN 29025/ssh
现在可以在一号机器通过命令,连接到三号机器
xfreerdp /u:t1_thomas.moore /p:MyPazzw3rd2020 /v:127.0.0.1:23389
SSH 动态端口转发
跳板机上执行
ssh tunneluser@10.50.98.17 -R 29050 -N
或者在攻击机上执行
ssh -D 10800 -C -q -N grace.brooks@thmjmp2.za.tryhackme.com