在这个Metasploitable 3 Meterpreter端口转发教程中,我们将学习如何转发无法远程访问的本地端口。在本地计算机上运行特定服务并使其仅可用于本地计算机而非整个网络是非常常见和好的做法。在本地网络上,这些服务通常是用于在单台计算机上配置硬件或软件的管理面板,无需将这些服务公开到整个网络,就像您不想将本地FTP或SMB服务器公开到互联网。默认情况下不允许外部访问的服务的一个很好的例子是MySQL服务器。出于安全原因,MySQL服务器在安装时默认禁用远程访问,并要求系统管理员明确启用远程访问 以允许远程连接。在本教程中,我们将使用Meterpreter端口转发将隧道连接到无法远程访问的服务。
为了遵循这个端口转发教程,我们假设你已经正确安装了Metasploitable 3机器并且可以通过shell访问它。如果不是,请先按照以下教程进行操作:
- 如何在Windows 10上设置Metasploitable 3
- Metasploitable 3:利用ManageEngine Desktop Central 9
- Metasploitable 3:利用HTTP PUT
端口转发:远程访问本地端口
本教程的起点是最后一个教程已结束的地方:通过利用HTTP PUT获得的Meterpreter外壳,它允许我们将恶意文件上传到Web根目录。

本教程的起点是一个Meterpreter外壳。
当我们在Metasploitable 3机器上运行ipconfig时,我们可以看到第二个网卡的IP为10.0.2.15,正如我们在下面的屏幕截图中看到的那样。

Metasploitable 3上的多个NIC。
唯一的问题是,这个网络目前无法从我们的Kali Linux攻击机中路由。要访问这个网络,我们必须设置一个带有代理链的socks4代理来将所有连接转发到这个子网。同样的技术也可以让我们从Metasploitable 3机器的角度来扫描目标网络。这将揭示可在本地访问但不是远程访问的开放端口和服务。此类服务的一个示例是在端口3306上运行的MySQL服务。初始Nmap扫描没有显示此端口,因为它受防火墙限制,因为它并不意味着要远程访问。当我们在Metasploitable 3机器上运行netstat时,我们可以验证机器上是否使用了端口3306,并且附带了PID 2224的服务:

Metasploitable 3上的Netstat输出。
通过运行任务列表,我们可以验证是否在PID 2224上运行了MySQL.exe:

PID的MySQL。
既然我们知道MySQL正在3306端口上运行,并且无法远程访问,那么我们需要设置Meterpreter外壳程序,以便可以通过外壳进行隧道连接。由于Meterpreter shell在本地运行并且能够访问端口3306,因此我们需要通过Meterpreter外壳将本地端口转发到Metasploitable 3机器。最简单的方法是使用Meterpreter portfwd模块。在我们将本地端口转发到Metasploitable 3之前,我们首先来看看端口转发功能,以便更好地理解它到底做了什么。
Meterpreter端口转发
Meterpreter中的前向功能可用作通过受损机器访问网络和机器的枢轴技术,否则这些机器无法访问。portfwd命令将中继与所连接机器的TCP连接。在以下步骤中,我们将使本地攻击机上的mySQL服务器端口3306可用,并将此端口上的流量转发到Metasploitable 3.当所有设置完成后,我们将使用mysql命令行连接到端口3306上的本地主机客户。连接到这些端口将被转发到Metasploitable 3。
我们可以使用以下命令创建隧道:
portfwd add -l 3306 -p 3306 -r 172.28.128.3
我们来解释我们在命令中使用的参数:
- -l [端口]是将被侦听并转发到我们的目标的本地端口。这可以是机器上的任何端口,只要它尚未被其他服务使用。
- -p [端口]是目标主机上的目标端口。
- -r [目标主机]是我们的目标系统的IP或主机名。
当我们成功运行Meterpreter会话中的命令时,表示两个端口都已转发的输出应如下所示:

在172.28.128.3上将本地端口3306转发到端口3306
我们可以通过运行netstat来验证本地端口3306是否在我们的本地机器上打开,如下所示:

端口3306可在本地攻击框中使用。
接下来,我们可以通过让MySQL客户端连接到本地主机来访问Metasploitable 3上的MySQL服务,如下所示:
mysql -u root 127.0.0.1

成功连接到MySQL服务器。
连接到MySQL服务器也揭示了一个常见的安全问题; 我们没有在连接命令中提供密码,也没有提示我们输入密码。正如我们在截图中看到的,我们可以列出MySQL服务器上的所有数据库,包括WordPress数据库。仅仅因为服务只能在本地访问,并不意味着密码保护层已经过时。正如我们所看到的,当攻击者拥有对机器的shell访问权时,可以轻松地转发连接和端口。
现在我们可以访问WordPress数据库,我们可以使用以下SQL查询来提取用户密码哈希值:
select user_login, user_pass from wp_users;

WordPress密码哈希
对john使用admin哈希运行字典攻击显示WordPress管理用户的密码:
john -wordlist = / usr / share / wordlists / rockyou.txt wpaccounts

管理员帐户的密码是sploit。
在本教程中,我们学习了有关Meterpreter的端口转发。我们已经从我们的攻击箱上的本地端口,通过Meterpreter转发连接到Metasploitable 2机器上的本地端口。这使我们能够从远程机器访问Metasploitable 3上的端口3306。在下一个和最后一个Metasploitable 3教程中,我们将使用一些不同的攻击媒介来攻击WordPress安装。
本文作者为Mr.Bai,转载请注明。