我试着更好地了解SSH隧道的技术。我让Nessus在我的环境中的Kali机器中运行,并且希望通过我自己的机器上的浏览器访问这个服务:
我的卡利
我SSH从我的Kali到跳转服务器使用用户名:密码。从跳转服务器,我使用我的.pem私钥进入内部Kali。
理想情况下,我希望将Nessus隧道穿越回我的Kali,这样我就可以在127.0.0.1:8834上通过浏览器访问它。
实现这一目标所需的正确命令语法是什么?
发布于 2022-07-16 02:59:26
这取决于跳楼是否能进入卡利内部机器上的柱子。假设您的Kali机器有IP 192.168.1.1,Jumphost有10.0.1.1,内部Kali machien有10.0.2.2。
如果Jumphost可以连接到10.0.2.2:8834并到达接口(换句话说,10.0.2.2配置为允许从任何接口连接到8834 ),则可以使用以下命令:
ssh -L 1234:10.0.2.2:8834 10.0.1.1 # On the local Kali machine在Kali机器上运行时(192.168.1.1),它将连接到Jumphost 10.0.1.1。此外,您的本地Kali机器发送到其自己端口1234的任何通信都将被转发到SSH隧道,并且从Jumphost也会发送到10.0.2.2:8834。
只有当10.0.2.2上的端口8834可以从10.0.1.1到达时,这才有效!
当然,您可以将本地端口号更改为任何您想要的。我只是选择1234作为一个例子。
在这种情况下,你需要运行两条隧道。这个概念和以前一样,但是这一次,我们需要一个从卡利到Jumphost的隧道,和一个从Jumphost到内部Kali机器的隧道。
ssh -L 1234:localhost:1234 10.0.1.1 # On the local Kali machine
ssh -L 1234:localhost:8834 10.0.2.2 # On the Jumphost这基本上意味着:在当地卡利机器上的1234端口接收到的任何通信量都将在Jumphost上被转发到1234端口。在Jumphost上的1234端口上收到的任何通信将被传送到内部Kali机器上的8834端口。
你可能注意到了里面的“本地主机”。这指的是SSH连接的接收机器上的"localhost“。由于这些连接将使用回送接口(127.0.0.1又名localhost),因此您将能够连接到Nessus UI,即使它被配置为只接受来自localhost的连接(因为从技术上讲,它是来自localhost的连接;专门来自sshd进程)。
那么,这些隧道是如何工作的呢?
我需要那些ssh隧道,只需要记住它们的存在,而不需要经常记住我是否需要本地或远程隧道。
本地隧道在本地机器上创建侦听器,并将数据从那里转发到远程主机。这方面的语法如下:
ssh -L localport:remotehost:remoteport targetmachine
ssh -L 443:localhost:8843 10.0.0.1这将连接到10.0.0.1,并在端口443上在您的计算机上创建一个本地侦听器,该侦听器将把数据转发到10.0.0.1:8843,就好像它来自本地接口一样。当您想连接到仅在远程计算机上可用的端口时,这一点非常有用,就像在您的场景中一样。
远程隧道在远程机器上创建一个侦听器,并将数据从那里转发到本地主机。这方面的语法如下:
ssh -R remote:remotehost:remoteport targetmachine
ssh -R 443:localhost:8443 10.0.0.1这将连接到10.0.0.1,并在端口443的远程机器上创建一个侦听器。到该端口的任何连接都将转发到本地主机上的端口8443。如果您想让其他人连接到您的计算机,而不向整个网络公开您的计算机,这是很有用的。
一般来说,本地隧道通常是你想要的。
https://security.stackexchange.com/questions/263394
复制相似问题