您的位置:首页 > 编程语言 > Python开发

《Python 黑帽子》学习笔记 - SSH 端口转发 - Day 12

2018-04-03 00:56 495 查看
本篇笔记学习 SSH 端口转发功能。

本地环境说明:

主机1:Win7,IP(192.168.1.9),Web 服务(80)。

主机2:Kali,IP(192.168.1.10),SSH 服务(22)。

主机3:OWASPBWA,IP(192.168.1.11),SSH 服务(22),Web服务(80)。

由于主机3没有图形化,操作 shell 终端不方便,我用 xshell 工具连接其 SSH 服务,方便操作。

本地端口转发

场景一:本地主机 Win7,远程主机 OWASPBWA,有一个 Web 站点,这两台主机之间无法连通,我想实现从 Win7 访问 OWASPBWA 的 Web 站点。Kali 主机可以同时连通前面两台主机。于是,我们可以建立从 Win7 主机到 Kali 主机的 SSH 连接,用这条连接来实现在 Win7 上访问 OWASPBWA 主机上的站点。

在 Win7 上运行:

ssh -L 8888:192.168.1.11:80 root@192.168.1.10


即:

ssh -L 8888:OWASPBWA:80 root@Kali


L 参数接受三个值,分别是”本地端口:目标主机:目标主机端口”。这条命令的意思,是指定 SSH 绑定本地端口 8888,访问该端口后,所有数据经 Kali 转发到目标主机 OWASPBWA 的 80 端口。

这样一来,我们只要连接 Win7 的 8888 端口,就等于访问 OWASPBWA 的 Web 站点。



“本地端口转发”使得 Win7 和 OWASPBWA 之间好像形成了一个数据传输的秘密隧道,因此又被称为”SSH隧道”。

我们用 SSH 在 Win7 和 OWASPBWA 之间,建立了一个加密的连接。要注意的是,这里的加密连接指的是 Win7 和 Kali 之间的连接,Kali 和 OWASPBWA 之间的连接仍旧是不加密的 http 协议。

场景二:Kali 主机上有一个服务,为不加密的连接,这里用 netcat 来模拟,即
netcat -lvp 8888
模拟的数据通信服务,同上,在 Win7 上实现对该服务的加密连接访问。

在 Win7 上运行:

ssh -L 8888:localhost:8888 root@192.168.1.10


这里的 localhost 是相对于 Kali 主机的,即 localhost 就是 Kali 主机。这样,我们访问本地 8888 端口,就相当于访问远程主机的 8888 端口,实现了与 Kali 系统上 8888 端口的加密通信。



远程端口转发

要使用远程端口转发,前提条件是,建立 SSH 连接的两台主机都要有 SSH 服务端。

由于我的 Win7 主机没有安装 SSH 服务端,下面的场景设置,修改为从 kali

通过 OWASPBWA 访问 Win7 主机的 Web 站点。

场景三:本地主机 kali,远程主机 Win7,有一个 Web 站点,这两台主机之间无法连通,目标是想在 kali 主机上可以访问到该站点。主机 OWASPBWA 是一台内网主机,它可以访问 Win7 的站点,也可以连接外网的 kali,但是,Kali 无法访问内网的 OWASPBWA。我们可以建立从 OWASPBWA 到 Kali 的连接,通过这条连接实现 Kali 访问 Win7。

在 OWASPBWA 内网主机上运行:

ssh -R 8888:192.168.1.9:80 192.168.1.10


即:

ssh -R 8888:Win7:80 Kali


R 参数接受三个值,分别是”远程主机端口:目标主机:目标主机端口”。这条命令的意思,让 Kali 监听它自己的 8888 端口,然后将所有数据经由 OWASPBWA,转发到 Win7 的 80 端口。对于 OWASPBWA 来说,Kali 是远程主机,所以这种情况就被称为”远程端口绑定”。

绑定之后,我们在 Kali 就可以连接 Win7 了:

OWASPBWA 主机:



Kali 主机:



总结

这两篇笔记学习了 SSH 的基本概念,以及用 SSH 实现远程连接、本地端口转发、远程端口转发的测试。SSH 是一个协议,可以实现主机间的加密通信,端口转发类似代理功能,差异是代理的监听端口一般是绑定在代理服务器上,而用 SSH 端口转发,监听端口在本地,本地端口转发是本地向转发主机发起的正向连接,SSH 命令运行在本地,参数为 L,用在转发主机向外网开放端口的情况;远程端口转发是转发主机向本地发起的反向连接,SSH 命令运行在转发主机上,参数为 R,用在转发主机在内网的情况。

参考

SSH原理与运用(一):远程登录 - 阮一峰

SSH原理与运用(二):远程操作与端口转发 - 阮一峰
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息