如何转发无法远程访问的本地端口。在本地计算机上运行特定服务。在本地网络上,这些服务通常是用于在本地计算机上访问,外网是不能访问的,比如MySQL服务器。出于安全原因,MySQL服务器在安装时默认禁用远程访问,并要求系统管理员明确启用远程访问 以允许远程连接。在本教程中,我们将使用Meterpreter端口转发将隧道连接到无法远程访问的服务。

端口转发:远程访问本地端口

假如你已经控制了目标主机,就可以开始了。

运行ipconfig命令,我们可以看到第二个网卡的IP为10.0.2.15

要访问这个网络,必须设置一个socks4代理来将所有连接转发到这个子网。同样的也可以让我们从Metasploitable 肉鸡来扫描目标网络。这可在本地访问远程访问的开放端口和服务。
以3306端口上运行的MySQL服务为例。开始使用Nmap扫描没有显示开放了这个端口,因为肉鸡防火墙限制。可以在Metasploitable 上运行netstat命令可以验证机器上是否使用了3306端口,并且附带了PID 2224的服务:

通过运行的列表,我们可以验证在PID 2224上运行了MySQL.exe:

既然知道MySQL正在3306端口上运行,并且无法远程访问,那么我们进行隧道连接。由于Meterpreter shell在本地运行并且能够访问端口3306,因此我们需要将本地端口转发。最简单的方法是使用Meterpreter portfwd模块。在本地端口转发之前,首先来看看端口转发功能,以便更好地理解它到底做了什么。

Meterpreter端口转发

portfwd命令将中继与所连接机器的TCP连接。在以下步骤中,我们将使本地攻击机上的mySQL服务器3306端口可用,并将此端口上的流量转发到肉鸡.设置完成后,我们将使用mysql命令行连接到3306端口上的本地主机。连接到这些端口将被转发到肉鸡上。

使用以下命令创建隧道:
portfwd add -l 3306 -p 3306 -r 172.28.128.3

参数:

  • -l 本地端口。这里随意设置,只要它尚未被其他服务占用。
  • -p 肉鸡上的目标端口
  • -r 肉鸡上的IP或主机名。

当成功运行Meterpreter会话中的命令时,表示两个端口都已转发:

通过运行netstat来验证本地端口3306是否在我们的本地机器上打开

接下来,我们可以通过让MySQL客户端连接到访问肉鸡上的MySQL服务
mysql -u root 127.0.0.1

连接到MySQL服务器也揭露了一个常见的安全问题; 我们没有在连接命令中加密码,也没有提示我们输入密码。正如在截图中看到的,我们可以列出MySQL服务器上的所有数据库,包括WordPress数据库。正如我们所看到的,当攻击者拥有对机器的shell访问权时,可以轻松地转发连接和端口。

现在我们可以访问WordPress数据库,我们可以使用以下SQL查询来提取用户密码哈希值:
select user_login, user_pass from wp_users;

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

【完】