熟练使用服务

优质
小牛编辑
124浏览
2023-12-01

USING AND ABUSING SERVICES

在 Linux 术语中,服务是在后台运行的应用程序,等待您使用它。您的 Linux 系统预装了许多服务。其中最著名的是无处不在的 Apache Web Server,它用于创建,管理和部署 Web 服务器,还有更多。出于本章关于服务的目的,我只选择了对黑客特别重要的四个:Apache Web Server,OpenSSH,MySQL 和 PostgreSQL。

在本章中,您将学习如何使用 Apache 设置 web 服务器、使用 OpenSSH 进行物理监视、使用 MySQL 访问数据以及使用 PostgreSQL 存储黑客信息。

启动、停止和重新启动服务

在开始使用这四个关键的服务之前,让我们先研究一下如何在 Linux 中启动、停止和重新启动服务。

有些服务可以通过 Kali Linux 中的 GUI 停止和启动,就像在 Windows 或 Mac 这样的操作系统上一样。下面是管理服务的基本语法:

service servicename start|stop|restart

要启动apache2服务(Web 服务器或 HTTP 服务),请输入以下内容:

kali >service apache2 start

要停止 Apache Web 服务器,请输入:

kali >service apache2 stop

通常,当您通过更改其纯文本配置文件对应用程序或服务进行配置更改时,需要重新启动该服务以捕获新配置。因此,您可以输入以下内容:

kali >service apache2 restart

既然您已经了解了如何从命令行启动,停止和重新启动服务,那么让我们继续讨论针对黑客的四个最关键的 Linux 服务。

使用 APACHE Web 服务器创建 HTTP Web 服务器

Apache Web Server 可能是 Linux 系统上最常用的服务。Apache 在全球 60%以上的 Web 服务器上都可以找到,因此任何自重的 Linux 管理员都应该熟悉它。作为一个渴望破解网站的黑客,了解 Apache,网站和这些网站的后端数据库的内部工作方式至关重要。您还可以使用 Apache 设置自己的 Web 服务器,您可以通过网站脚本(XSS)向访问您网站的任何人提供恶意软件,或者您可以通过滥用域名克隆网站并将流量重定向到您的网站名称系统(DNS)。 在任何一种情况下,都需要 Apache 的基本知识。

从 Apache 开始

如果您的系统上运行了 Kali,则已安装 Apache。许多其他 Linux 发行版也默认安装它。如果您没有安装 Apache,可以通过输入以下命令从存储库下载并安装它:

kali >apt-get install apache2

Apache Web Server 通常与 MySQL 数据库相关联(我们将在下一节中讨论),这两种服务通常与脚本语言(如 Perl 或 PHP)配对以开发 Web 应用程序。Linux,Apache,MySQL 和 PHP 或 Perl 的这种组合形成了一个强大而强大的平台,用于开发和部署基于 Web 的应用程序,统称为 LAMP。这些是用于在 Linux 世界中开发网站的最广泛使用的工具

  • 它们在微软世界中也很受欢迎,它们通常被称为 WAMP,W 代表 Windows。

当然,第一步是启动我们的 Apache 守护进程。在 Kali 中,转到应用程序 ▸ 服务 ▸HTTPD(Applications ▸ Services ▸ HTTPD)并单击 Apache start。您可以通过输入以下命令从命令行完成相同的操作:

kali >services apache2 start

现在 Apache 正在运行,它应该能够提供其默认网页。 在您喜欢的 Web 浏览器中输入 http:// localhost /以显示网页,该网页应类似于图 12-1。

图 12­1: Apache2 Web Server 默认页

如您所见,Apache 将“It works”显示为其默认网页。现在你知道你的 Apache Web 服务器正在运行,让我们来自定义它吧!

编辑 index.html 文件

Apache 的默认网页位于/var/www/html/index.html。您可以编辑 index.html 文件以提供您想要的任何信息,所以让我们创建自己的信息。为此,您可以使用任何文本编辑器,我将使用 Leafpad 打开/var/www/html/index.html,你会看到类似于列表 12-1 的信息。

清单 12­1: Apache Web Server 的 index.html 页面

请注意,默认网页是我们将浏览器打开到 localhost 时显示的文本,默认格式为 ➊。我们需要做的就是编辑或替换此文件,让我们的 Web 服务器显示我们想要的信息。

添加 HTML

现在我们已启动并运行 Web 服务器并打开 index.html 文件,我们可以添加我们希望 Web 服务器提供的任何文本。我们将创建一些简单的 HTML 模块。

我们来创建这个页面。在文本编辑器的新文件中,输入清单 12-2 中显示的代码。

\

\

\

Hackers­Arise Is the Best! \</h1>

\

If you want to learn hacking, Hackers­Arise.com \</p>

\

is the best place to learn hacking!\</p>

\</body>

\</html>

清单 12­2:一些简单的 HTML 添加到 index.html

完全按照清单 12-2 中的内容输入文本后,将此文件另存为/var/www/html/index.html 并关闭文本编辑器。 然后,您的文本编辑器将提示您该文件已存在,没关系,只需覆盖现有的/var/www/html/index.html 文件即可。

看会发生什么

保存了我们的/var/www/html/index.html 文件后,我们可以查看 Apache 将提供的服务。再次浏览浏览器到 http:// localhost,您应该会看到类似于图 12-2 的内容。

图 12-2:新的 HackersArise 网站

Apache 就像我们创建它一样提供了我们的网页!

OPENSSH 和树莓派

SSH 是 Secure Shell 的首字母缩写,它基本上使我们能够安全地连接到远程系统上的终端 - 这是多年前常见的不安全 telnet 的替代品。当我们构建 Web 服务器时,SSH 使我们能够创建访问列表(可以使用此服务的用户列表),使用加密密码对用户进行身份验证,以及加密所有通信。这减少了不需要的用户使用远程终端的机会(由于添加的认证过程)或拦截我们的通信(由于加密)。可能最广泛使用的 Linux SSH 服务是 OpenSSH,它几乎安装在所有 Linux 发行版上,包括 Kali。

系统管理员经常使用 SSH 来管理远程系统,而黑客经常使用 SSH 连接到受感染的远程系统,所以我们在这里也会这样做。在这个例子中,我们使用 SSH 设置一个远程 Raspberry Pi 系统进行间谍活动,我称之为“Raspberry Spy Pi”。为此,你需要一个 Raspberry Pi 和随之而来的 Raspberry Pi 相机模块。

不过,在我们这样做之前,使用现在熟悉的命令在您的 Kali 系统上启动 OpenSSH:

kali >service ssh start

我们将使用 SSH 来构建和控制远程间谍 Raspberry Pi。如果您还不熟悉它,Raspberry Pi 是一款小巧但功能强大的信用卡大小的计算机,可作为远程监视工具使用。我们将使用带有相机模块的 Raspberry Pi 作为远程间谍设备。您可以以低于 50 美元的价格购买几乎所有电子产品零售商(包括亚马逊)的 Raspberry Pi,您可以以 15 美元的价格购买相机模块。

在这里,我们将在与 Kali 系统相同的网络上使用 Raspberry Spy Pi,这允许我们使用私有的内部 IP 地址。当然,在现实世界中进行黑客攻击时,您可能希望将其设置在另一个远程网络上,但这将难以触及本书的范围。

设置 Raspberry Pi

确保您的 Raspberry Pi 正在运行 Raspbian 操作系统,这只是另一个专门为 Raspberry Pi CPU 移植的 Linux 发行版。您可以在https://www.raspberrypi.org/downloads/raspbian/找到Raspbian的下载和安装说明。您在本书中学到的几乎所有内容都适用于Raspberry Pi 上的 Raspbian OS 以及 Kali,Ubuntu 和其他 Linux 发行版。

下载并安装 Raspbian 操作系统后,您需要将 Raspberry Pi 连接到显示器,鼠标和键盘,然后将其连接到互联网。如果这对您来说是全新的,请查看https://www.raspberrypi.org/learning/hardwareguide/上的说明。 设置好所有内容后,使用用户名 pi 和密码 raspberry 登录。

构建 Raspberry Spy Pi

第一步是确保在 Raspberry Spy Pi 上运行并启用 SSH。默认情况下,SSH 通常是关闭的,因此要启用它,请转到“首选项”菜单并启动 Raspberry Pi 配置。然后转到Interfaces选项卡,在SSH旁边,单击Enabled(如果尚未选中),然后单击OK

启用 SSH 后,您可以通过打开终端并输入以下内容在 Raspberry Spy Pi 上启动它:

kali >service ssh start

接下来,您需要连接相机模块。如果你使用的是 Raspberry Pi 版本 3 的板,那么只有一个地方可以连接它。关闭 Pi,将模块连接到相机端口,然后重新打开。请注意,相机非常脆弱,绝不能与通用输入/输出(GPIO)引脚接触,否则,它可能会短路并烧坏。

现在,在 SSH 服务启动并运行的情况下,将 Raspberry Spy Pi 放置在您家,学校或您想要监视的其他位置的某个位置。当然,它必须通过以太网电缆或理想情况下通过 WiFi 连接到局域网。(新的 Raspberry Pi 3 和 Raspberry Pi Zero 都内置了 WiFi。)

现在,您需要获取 Raspberry Pi 的 IP 地址。正如您在第 3 章中学到的,您可以使用ifconfig获取 Linux 设备的 IP 地址:

pi >ifconfig

我的 Pi 的 IP 地址是192.168.1.101,但请确保您使用的是 Raspberry Spy Pi 的 IP 地址,无论我的地址出现在本章的哪个位置。现在,从您的 Kali 系统,您应该能够直接连接并控制您的 Raspberry Spy Pi 并将其用作远程间谍系统。在这个简单的示例中,您的系统需要与 Pi 在同一网络上。

要从 Kali 系统通过 SSH 连接到远程 Raspberry Spy Pi,请输入以下内容,记住使用您自己的 Pi 的 IP 地址:

kali >ssh pi\@192.168.1.101

pi\@192.168.1.101's password:

The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the

individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, the extent permitted by applicable law

last login: Tues Jan. 1 12:01:01 2018

pi\@raspberyypi:: $

Spy Pi 会提示您输入密码。在这种情况下,默认密码是raspberry,除非您已更改它。

配置相机

接下来,我们需要配置相机。为此,请输入以下命令启动 Raspberry Pi 配置工具:

pi >sudo raspi-config

这应该启动一个图形菜单,如图 12-3 所示。

图 123:Raspberry Pi 配置工具

向下滚动至 6 启用相机(Enable Camera),然后按 ENTER。现在,滚动到此菜单的底部并选择Finish并按ENTER,如图 12-4 所示。

图 12-4:完成配置

当配置工具询问您是否要重新启动时,如图 12-5 所示,选择Yes,然后再次按ENTER

图 12-5:重新启动 Pi 以启用更改。

现在你的 Raspberry Spy Pi 相机应该启用并准备好进行间谍活动了!

启动 Spy

一旦您的 Raspberry Spy Pi 重新启动并且您已经从 Kali 终端通过 SSH 登录,您就可以开始使用它来拍摄静态照片了。

Raspbian 操作系统有一个名为 raspistill 的应用程序,我们将用它来从我们的小 Raspberry Spy Pi 中拍照。 在终端中输入raspistill以查看工具的帮助屏幕及其所有选项:

pi\@raspberrypi: raspistill

raspistill Camera App v1.3.8

Runs camera for specific time, and takes JPG capture at end if requested

usage: raspistill [options] Image parameter commands

­­snip­­

现在让我们使用 Raspberry Spy Pi 拍摄一些远程的间谍照片吧!raspistill命令有很多你应该探索的选项,但在这里我们只使用默认值。要拍摄照片并将其另存为 JPEG,请输入以下内容:

pi\@raspberrypi: raspistill -v -o firstpicture.jpg

raspistill Camera App v1.3.8

width 2592, Height 1944, quality 85, filename firstpicture.jpg Time delay 5000, Raw no

­­snip­­

我们使用-v选项给我们详细的输出和-o选项告诉 raspistill 我们将要给它一个文件名,然后我们给出文件名。当我们在 Raspberry Spy Pi 上使用长列表格式列出文件时,我们可以看到文件firstpicture.jpg,如下所示:

pi\@raspberrypi: ls -l

total 2452

drwxr­xr­x 2 pi pi 4096 Mar 18 2019 Desktop

drwxr­xr­x 2 pi pi 4096 Mar 18 2019 Documents

drwxr­xr­x 2 pi pi 4096 Mar 18 2019 Downloads

­rw­r­­r­­ 1 pi pi 2472219 Mar 18 2019 firstpicture.jpg

drwxr­xr­x 2 pi pi 4096 Mar 18 2019 Music

drwxr­xr­x 2 pi pi 4096 Mar 18 2019 Pictures

­­snip­­

我们使用 SSH 在我们的远程 Raspberry Spy Pi 上拍摄了我们的第一张谍照! 随意进一步探索这种多功能武器。

从 MYSQL 中获取信息

MySQL 是数据库驱动 Web 应用程序背后使用最广泛的数据库。在我们现代的 Web 2.0 技术时代,几乎每个网站都是数据库驱动的,这意味着 MySQL 拥有大部分网络的数据。

数据库是黑客的“金羊毛”。它们包含有关用户的重要信息以及信用卡号等机密信息。出于这个原因,黑客通常以数据库为目标。

与 Linux 一样,MySQL 是开源和通用公共许可(GPL),你会发现它几乎预装在每个 Linux 发行版上。

作为免费,开源和强大的 MySQL,MySQL 已成为许多 Web 应用程序的首选数据库,包括 WordPress,Facebook,LinkedIn,Twitter,Kayak,almart.com,Wikipedia 和 YouTube 等热门网站。

其他流行的内容管理系统(CMS),如 Joomla,Drupal 和 Ruby on Rails 也都使用 MySQL。你明白了,如果您想开发或攻击 Web 应用程序的后端数据库,您应该了解 MySQL。让我们开始吧。

启动 MySQL

幸运的是,Kali 已经安装了 MySQL(如果您正在使用其他发行版,则可以从软件镜像库或直接从 https://www.mysql.com/downloads/下载并安装 MySQL)。

要启动 MySQL 服务,请在终端中输入以下内容:

kali >service mysql start

接下来,您需要通过登录进行身份验证。输入以下内容,并在提示输入密码时,只需按ENTER键:

kali >mysql -u root -p

Enter password:

Welcome to MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 4

Server version: 5.6.30­1 (Debian)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement

mysql >

在 MySQL 的默认配置中,root用户的密码为空。显然,这是一个主要的安全漏洞,您应该在首次登录后添加密码来解决此问题。请注意,操作系统和 MySQL 的用户名和密码是独立且不同的。我们现在更改 MySQL root 用户的密码以确保安全。

与 MySQL 交互

SQL 是一种用于与数据库连接的解释型编程语言。数据库通常是关系数据库,这意味着数据存储在多个交互的表中,每个表都有一个或多个列和行中的值。

SQL 有几种实现,每种都有自己的命令和语法,但这里有几个常用的命令:

select用于检索查找数据

union用于组合两个或多个 select 操作的结果

insert用于插入添加新数据

update用于修改更新现有数据

delete用于删除数据

您可以为每个命令提供条件,以便更具体地了解您要执行的操作。 例如,如下行

select user,password from customers where user='admin';

将返回 customers 表中用户值等于“admin”的任何用户的用户名和密码字段的值。

设置 MySQL 密码

通过输入以下内容,让我们看看已经在我们的 MySQL 系统中的用户。(请注意,MySQL 中的命令以分号结束。)

mysql >select user,host,password from mysql.user;

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

| user | host | password

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

|root |localhost |

|root |aphrodite.kali.org |

|root |127.0.0.1 |

­­snip­­

这表明 root 用户没有设置密码。我们给 root 分配一个密码。为此,我们将首先选择要使用的数据库。 您系统上的 MySQL 将附带一些已设置的数据库。使用show列出所有数据库,命令查看所有可用的数据库:

mysql >show databases;

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+

| Database |

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+

| information_schema |

| mysql |

| performance_schema |

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+

3 rows in set (0.23 sec)

MySQL 默认带有三个数据库,其中两个(information_schemaperformance_schema)是我们在这里不会使用的管理数据库。我们将使用非管理数据库 mysql,它包含在您的目标数据库中。要开始使用 mysql 数据库,请输入:

mysql >use mysql;

Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with ­A

Database changed

这个命令将我们连接到 mysql。现在,我们可以使用以下命令将 root 用户的密码设置为hackers-arise

mysql >update user set password = PASSWORD("hackers-arise") where user = 'root';

此命令将通过将用户的 root 密码设置为hackers­ arise来更新用户。

访问远程数据库

要访问 localhost 上的 MySQL 数据库,我们使用以下语法:

kali >mysql -u \ -p

如果没有给出主机名或 IP 地址,则此命令默认使用 localhost 上的 MySQL 实例。因此,要访问远程数据库,我们需要提供托管 MySQL 数据库的系统的主机名或 IP 地址。以下这是一个例子:

kali >mysql -u root -p 192.168.1.101

这会将我们连接到 192.168.1.101 的 MySQL 实例并提示我们输入密码。出于演示目的,我将连接到局域网(LAN)上的 MySQL 实例。如果您在其他互联网网络上安装了 MySQL 系统,请在此处使用其 IP 地址。我假设您已设法绕过密码并以 root 身份登录系统(您已经知道默认情况下,mysql 数据库没有密码)。

这打开了 MySQL 命令行界面,它为我们提供了mysql>提示符。除了这个命令行界面,MySQL 还有 GUI 界面

  • 原生(MySQL Workbench)和第三方(Navicat 和 TOAD for MySQL)。作为一名黑客,命令行界面可能是利用 MySQL 数据库的最佳机会,因此我们将重点关注这一点。作为未经授权的数据库参与者,您将不可能获得易于使用的 GUI。

现在我们以系统管理员身份登录,我们可以畅通无阻地浏览数据库。如果我们以普通用户身份登录,则我们的导航将受到系统管理员为该用户提供的权限的限制。

连接到数据库

通过访问系统,我们想要一探究竟。我们的下一步是找出是否有值得访问的数据库。以下是查找所访问系统上的数据库的命令:

mysql >show databases;

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+

| Database |

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+

| information schema |

| mysql |

| creditcardnumbers |

| performance_schema |

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+

4 rows in set (0.26 sec)

啊哈!我们找到了一个值得探索的名字为creditcardnumbers的数据库。让我们尝试连接到它。

在 MySQL 中,与其他数据库管理系统(DBMS)一样,我们可以通过输入use databasename 连接到我们感兴趣的数据库。

mysql >use creditcardnumbers;

Database changed

数据库更改的响应表明我们现在已连接到creditcardnumbers数据库。

当然,不言而喻,数据库管理员不太可能如此容易地将数据库命名为信用卡号,因此您可能需要进行一些探索以找到感兴趣的数据库。

数据库表

我们现在已连接到creditcardnumbers数据库,可以进行一些探索以查看它可能包含的信息。数据库中的数据被组织成表格,每个表格可能包含一组不同的相关数据。我们可以通过输入以下命令找出此数据库中的表:

mysql >show tables;

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+

| Tables_in_creditcardnumbers |

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+

| cardnumbers |

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+

1 row in set (0.14 sec)

在这里,我们可以看到该数据库中只有一个表,称为cardnumbers。通常,数据库中会有很多表,因此您可能需要进行更多的监听。在这个示例数据库中,我们很幸运能够将注意力集中在这个单独的表格中,以提取黑客的金羊毛!

既然我们想要检查一个表,我们需要了解该表的结构。一旦我们知道如何设置表,我们就可以提取相关信息。

您可以使用describe语句查看数据库的表的结构,如下所示:

mysql >describe cardnumbers;

+­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­+­­­­­­­­­+­­­­­­­­­­­+­­­­­­­­­+­­­­­­­­­+

| Field | Type | Null | Key | Default | Extra |

+­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­+­­­­­­­­­+­­­­­­­­­­­+­­­­­­­­­+­­­­­­­­­+

| customers | varchar(15) | YES | | NULL | |

| address | varchar(15) | YES | | NULL | |

| city | varchar(15) | YES | | NULL | |

| state | varchar(15) | YES | | NULL | |

| cc | int(12) | NO | | 0 | |

+­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­+­­­­­­­­­+­­­­­­­­­­­+­­­­­­­­­+­­­­­­­­­+

MySQL 使用我们感兴趣的表结构的关键信息进行响应。我们可以看到每个字段的名称以及它所拥有的数据类型(通常是文本类型 varchar 或整数类型 int)。我们还可以看到它是否会接受 NULL 值,密钥(如果存在)(密钥链接表),字段可能具有的任何默认值,以及最后的任何额外信息,例如注释。

查看数据

要实际查看表中的数据,我们使用SELECT命令。 SELECT命令要求您知道以下信息:

  • 包含要查看的数据的表

  • 该表中包含要查看的数据的列

我们按以下格式列出:

SELECT columns FROM table

作为查看所有列数据的便捷快捷方式,我们可以使用星号作为通配符,而不是键入我们想要查看的每个列名。因此,要查看cardnumbers表中所有数据的转储,我们输入以下内容:

mysql >SELECT * FROM cardnumbers;

+­­­­­­­­­­­+­­­­­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­+­­­­­­­­­­­­­­+

| customers | address | city | state | cc |

+­­­­­­­­­­­+­­­­­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­+­­­­­­­­­­­­­­+

| Jones | 1 Wall St | NY | NY | 12345678 |

| Sawyer | 12 Piccadilly | London | UK | 234567890 |

| Doe | 25 Front St | Los Angeles | CA | 4567898877 |

+­­­­­­­­­­­+­­­­­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­+­­­­­­­­­­­­­­+

如您所见,MySQL 已将cardnumbers表中的所有信息显示在屏幕上。 我们找到了黑客的金羊毛!

PostgreSQL 与 Metasploit

PostgreSQL,或Postgres,是另一个开源关系数据库,由于其能够轻松扩展并处理繁重的工作负载,因此常用于非常大的互联网应用程序。它于 1996 年 7 月首次发布,由一大批名为 PostgreSQL 全球开发组的开发人员维护。

默认情况下,PostgreSQL 也安装在 Kali 中,但是如果您使用的是另一个 Linux 发行版,它可能会在您的存储库中,您可以通过输入以下命令来安装它:

kali >apt-get postgres install

作为一名黑客,你会发现 PostgreSQL 特别重要,因为它是最广泛使用的渗透测试和攻击框架 Metasploit 的默认数据库。Metasploit 使用 PostgreSQL 存储其模块,以及扫描和利用的结果,以便于在渗透测试或黑客攻击中使用。出于这个原因,我们将在 Metasploit 的上下文中使用 PostgreSQL。

与 Linux 中的几乎所有服务一样,我们可以通过输入服务来启动 PostgreSQL 应用程序启动,如下:

kali >service postgresql start

随着 PostgreSQL 的启动和运行,让我们启动Metasploit

kali >msfconsole

请注意,当 Metasploit 完成启动时,您将看到 msf>提示符。

教您如何使用 Metasploit 进行黑客攻击和开发目的超出了本书的范围,但在这里我们将建立 Metasploit 将其信息存储在其中的数据库。

在 Metasploit 运行的情况下,我们可以使用以下命令设置 PostgreSQL,以便它存储来自系统上任何 Metasploit 活动的数据:

msf >msfdb init

[*] exec :msfdb init

Creating database use 'msf'

Enter password for new role

Enter it again:

Creating databases 'msf' and 'msf_test'

Creating configuration file /usr/share/metasploit­framework/config/database.yml

Creating initial database schema

接下来,我们需要以 root 身份登录Postgres。在这里,我们在命令前加上su,即“switch user”命令,以获取 root 权限:

msf >su postgres

[*] su postgres

postgres\@kali:/root$

登录 Postgres 时,您会看到提示已更改为postgres\@kali:/root$,表示应用程序,主机名和用户。

在下一步中,我们需要创建用户和密码,如下所示:

postgres\@kali:/root$ createuser msf_user -P

Enter Password for new role:

Enter it again:

我们使用带有createuser命令的-P选项创建用户名 msf_user。

然后输入所需的密码两次。接下来,您需要创建数据库并为 msf_user 授予权限。将数据库命名为 hackers_arise_db,如下所示:

postgres\@kali:/root$ createdb - owner=msf_user hackers_arise_db

postgres\@kali:/root$ exit

当您使用 exit 命令退出 Postgres 时,终端将回退到 msf>提示符。

接下来,我们必须通过定义以下内容将我们的 Metasploit 控制台 msfconsole 连接到 PostgreSQL 数据库:

  • user

  • password

  • host

  • database name

在我们的例子中,我们可以使用以下命令将 msfconsole 连接到我们的数据库:

msf >db_connect msf_user:password\@127.0.0.1/hackers_arise_db

当然,您需要提供之前使用的密码。IP 地址是本地系统(localhost)的 IP 地址,因此除非在远程系统上构建此数据库,否则可以使用 127.0.0.1。

最后,我们可以检查 PostgreSQL 数据库的状态以确保它已连接:

msf >db_status

[*] postgresql connected to msf

如您所见,Metasploit 响应返回 PostgreSQL 数据库已连接并可以使用。现在,当我们使用 Metasploit 进行系统扫描或运行漏洞时,结果将存储在 PostgreSQL 数据库中。此外,Metasploit 现在将其模块存储在 Postgres 数据库中,使得搜索正确的模块变得更加容易和快捷!

总结

Linux 有许多服务在后台运行,直到用户需要它们 Apache Web Server 是使用最广泛的,但是黑客也应该熟悉 MySQL,SSH 和 PostgreSQL 来完成各种任务。在本章中,我们介绍了开始使用这些服务的绝对基础知识。一旦您对 Linux 系统感到满意,我建议您进一步探索这些服务。