渗透测试快速启动指南(全)(4)

本文涉及的产品
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 渗透测试快速启动指南(全)

渗透测试快速启动指南(全)(3)https://developer.aliyun.com/article/1525467

连接

我们都知道 Telnet、SSH 和 Netcat 等工具可以帮助我们进行远程管理。Metasploit 有一个名为connect的内置实用程序,可用于建立连接并与远程系统交互。它支持 SSL、代理、旋转和文件传输。connect命令需要有效的 IP 地址和端口才能连接,如图 3-6 所示。

图 3-6

MSFconsole 中 connect 命令的输出

历史

MSFconsole 完全是在命令行上操作的,对于要执行的每个任务,都需要键入一些命令。要查看到目前为止你在 MSFconsole 中使用过的命令,可以使用history命令,如图 3-7 所示。

图 3-7

MSFconsole 中 history 命令的输出

设置和设置 g

Metasploit 有一些变量需要在执行任何模块或利用之前设置。这些变量有两种类型。

  • 局部:局部变量是有限的,只对单个实例有效。
  • 全局:全局变量一旦定义,就适用于整个框架,并且可以在任何需要的地方重用。

set命令用于定义局部变量的值,而setg命令用于定义全局变量的值,如图 3-8 所示。

图 3-8

MSFconsole 中 set 和 setg 命令的输出

得到和得到

在上一节中,您看到了如何设置局部和全局变量的值。一旦这些值被设置,你可以使用getgetg命令查看这些值,如图 3-9 所示。get命令获取局部变量的值,而getg命令获取全局变量的值。

图 3-9

MSFconsole 中 get 和 getg 命令的输出

未设置和未设置

unset命令用于删除分配给局部变量的值,而unsetg命令用于删除分配给全局变量的值,如图 3-10 所示。

图 3-10

MSFconsole 中 unset 和 unsetg 命令的输出

救援

在进行渗透测试项目时,可能会配置大量的全局变量和设置。你当然不想丢失这些设置;save命令将当前配置写入文件,如图 3-11 所示。

图 3-11

MSFconsole 中 save 命令的输出

信息

Metasploit 中有大量可用的模块和插件。不可能知道他们所有人。无论何时你想使用任何模块,你都可以使用info命令找到更多关于它的细节,如图 3-12 所示。只需将模块名作为参数提供给info命令来获取它的详细信息。

图 3-12

MSFconsole 中 info 命令的输出

抗高血压药

Metasploit 基于 Ruby。它提供了一个交互式 Ruby (irb) shell,您可以在其中执行自己的定制命令集。该模块增强了 Metasploit 的后期开发能力。只需输入irb命令,如图 3-13 所示,进入 irb shell。要了解更多 Ruby 编程,请参考 https://www.ruby-lang.org/en/

图 3-13

MSFconsole 中 irb 命令的输出

显示

在本章的开始部分,您看到了 Metasploit 的各种组件,包括辅助、利用、有效负载等等。使用show命令,如图 3-14 所示,可以列出每个类别的内容。例如,您可以使用show auxiliary命令列出框架中所有可用的辅助模块。

图 3-14

MSFconsole 中 show 命令的输出

线轴

您已经看到了save命令,它将配置写入文件。在一个特定的场景中,您可能希望保存您执行的所有模块和命令的输出。spool命令,如图 3-15 所示,将所有控制台输出记录到指定文件。

图 3-15

MSFconsole 中 spool 命令的输出

制造商

自动化在任何框架中都扮演着重要的角色。将一堆重复的任务自动化总是有助于节省时间和精力。如图 3-16 所示的makerc命令通过将 Metasploit 任务保存为脚本来帮助您自动化这些任务。

图 3-16

MSFconsole 中 makerc 命令的输出

数据库启动

考虑到 Metasploit 的复杂性,必须存在一些数据库来存储任务的数据是微不足道的。默认情况下,Metasploit 与 PostgreSQL 数据库集成在一起。首先需要通过执行systemctl start postgresql命令,然后执行msfdb init命令来启动数据库服务,如图 3-17 所示。

图 3-17

终端中 systemctl 和 msfdb init 命令的输出

数据库状态

一旦初始化了数据库,就可以通过执行 MSFconsole 中的命令db_status来确认 Metasploit 已经连接到它,如图 3-18 所示。

图 3-18

MSFconsole 中 db_status 命令的输出

工作空间

有时,您可能需要同时处理多个渗透测试项目。您肯定不希望混淆来自多个项目的数据。Metasploit 提供了高效的工作空间管理。对于每个新项目,您可以创建一个新的工作区,从而将项目数据限制在该工作区内。如图 3-19 所示的workspace命令列出了可用的工作空间。您可以使用命令workspace -a 创建一个新的工作空间。

图 3-19

MSFconsole 中 workspace 命令的输出

从 Metasploit 调用 NMAP 和 OpenVAS 扫描

本节介绍如何从 Metasploit 控制台中调用和启动 NMAP 和 OpenVAS 扫描。

NMAP(消歧义)

你在本书前面已经了解了 NMAP。您看到了 NMAP 可以从命令行界面或 ZENMAP 图形用户界面触发。然而,还有另一种方法来启动 NMAP 扫描,那就是通过 Metasploit 控制台。

将 NMAP 扫描结果导入到 Metasploit 中,然后进一步利用开放的服务会很有帮助。有两种方法可以实现这一点。

图 3-21

使用 db_nmap 命令从 MSFconsole 调用 NMAP

  • 从 MSFconsole 内部调用 NMAP:Metasploit 提供命令db_nmap,可以直接从 Metasploit 控制台内部启动 NMAP 扫描,如图 3-21 所示。

图 3-20

MSFconsole 中 db_import 和 hosts 命令的输出

  • 导入 NMAP 扫描:您知道 NMAP 能够以 XML 格式生成和保存扫描输出。您可以使用db_import命令将 NMAP XML 输出导入到 Metasploit 中,如图 3-20 所示。

一旦 NMAP 扫描完成,您可以使用hosts命令来确保扫描完成并且目标被添加到 Metasploit 数据库中。

open vas!open vas!open vas

您已经对 OpenVAS 很熟悉了,因为您在前几章中已经对它的大部分特性有所了解。然而,Metasploit 提供了集成 OpenVAS 的能力,以便在框架内执行任务。在您可以从 MSFconsole 实际执行任何 OpenVAS 任务之前,您需要通过执行命令load openvas来加载 OpenVAS 插件,如图 3-22 所示。

图 3-22

将 OpenVAS 插件加载到 MSFconsole 中

一旦 OpenVAS 加载到 MSFconsole 中,您就可以执行许多任务。您可以使用openvas_help命令,如图 3-23 所示,列出所有可能的任务。

图 3-23

MSFconsole 中 openvas_help 命令的输出

OpenVAS 服务器可能运行在本地或某个远程系统上。你需要使用命令openvas_connect连接到 OpenVAS 服务器,如图 3-24 所示。您需要提供用户名、密码、OpenVAS 服务器 IP 和端口作为该命令的参数。

图 3-24

使用 MSFconsole 中的 openvas_connect 命令连接到 OpenVAS 服务器

一旦连接到 OpenVAS 服务器成功,您需要使用命令openvas_target_create创建一个新的目标,如图 3-25 所示。您需要提供测试名称、目标 IP 地址和注释(如果有的话)作为这个命令的参数。

图 3-25

使用 MSFconsole 中的 openvas_target_create 命令为 OpenVAS 扫描创建新目标

创建新目标后,需要使用openvas_config_list命令选择扫描轮廓,如图 3-26 所示。

图 3-26

MSFconsole 中 openvas_config_list 命令的输出

选择扫描配置文件后,就可以创建扫描任务了。命令openvas_task_create可用于创建新任务,如图 3-27 所示。您需要提供扫描名称、注释(如果有)、配置 ID 和目标 ID 作为该命令的参数。

图 3-27

在 MSFconsole 中使用命令 openvas_task_create 创建新的 OpenVAS 扫描任务

现在扫描任务已经创建,您可以使用命令openvas_task_start启动扫描,如图 3-28 所示。您需要提供任务 ID 作为该命令的参数。

图 3-28

使用 MSFconsole 中的 openvas_task_start 命令运行新创建的 OpenVAS 任务

扫描需要一段时间才能完成。一旦扫描完成,您可以使用命令openvas_report_list查看报告,如图 3-29 所示。

图 3-29

在 MSFconsole 中使用 openvas_report_list 命令列出 OpenVAS 报告

现在扫描已经完成,报告也准备好了,您可以使用openvas_report_download命令下载报告,如图 3-30 所示。您需要提供报告 ID、报告格式、输出路径和报告名称作为该命令的参数。

图 3-30

在 MSFconsole 中使用 oepnvas_report_download 命令保存 OpenVAS 报告

使用 Metasploit 辅助工具扫描和利用服务

Metasploit 为扫描、枚举和利用各种服务和协议提供了广泛的利用和辅助模块选择。本节介绍了一些辅助模块,并针对常用协议进行了探讨。

域名服务器(Domain Name Server)

在前一章中,你学习了如何使用 NMAP 来枚举一个 DNS 服务。Metasploit 还有几个辅助模块,可用于 DNS 侦察。

图 3-31 显示了/auxiliary/gather/enum_dns模块的使用。您需要做的就是配置目标域并运行该模块。它返回相关的 DNS 服务器作为结果。


图 3-31

辅助模块 enum_dns 的使用

文件传送协议

假设在进行 NMAP 扫描时,您发现您的目标在端口 21 上运行 FTP 服务器,并且服务器版本是 vsftpd 2.3.4。

您可以使用search函数来查明 Metasploit 是否对 vsftpd 服务器有任何利用,如图 3-32 所示。

图 3-32

搜索 vsftpd 漏洞的输出

这里您将使用漏洞利用/unix/ftp/vsftpd_234_backdoor来利用易受攻击的 FTP 服务器。您可以将目标 IP 地址配置为RHOST变量,然后运行漏洞利用,如图 3-33 所示。

图 3-33

使用 vsftpd _ 234 _ 后门漏洞成功利用目标

攻击成功,您可以通过命令外壳访问目标系统。

超文本传送协议

超文本传输协议(HTTP)是主机上最常见的服务之一。Metasploit 有许多漏洞和辅助工具来枚举和利用 HTTP 服务。辅助模块auxiliary/scanner/http/http_version,如图 3-34 所示,枚举 HTTP 服务器版本。基于确切的服务器版本,您可以更精确地规划进一步的开发。

图 3-34

辅助模块 http_version 的输出

很多时候,web 服务器的目录并不直接公开,并且可能包含有趣的信息。Metasploit 有一个名为auxiliary/scanner/http/brute_dirs的辅助模块,用于扫描此类目录,如图 3-35 所示。

图 3-35

辅助模块 brute_dirs 的输出

远端桌面协定

远程桌面协议(RDP)是微软为远程图形管理开发的专有协议。如果你的目标是基于 Windows 的系统,那么你可以执行一个叫做auxiliary/scanner/rdp/ms12_020_check的辅助模块,如图 3-36 所示。它检查目标是否易受 MS-12-020 漏洞的攻击。您可以在 https://docs.microsoft.com/en-us/security-updates/securitybulletins/2012/ms12-020 了解关于此漏洞的更多详情。

图 3-36

辅助模块 ms12_020_check 的输出

服务器信息块

在上一章中,您使用了 NMAP 来枚举 SMB。Metasploit 为 SMB 的枚举和利用提供了许多有用的辅助模块。

对 SMB 模块的简单搜索获取结果,如图 3-37 所示。

图 3-37

SMB 相关模块和漏洞的搜索查询输出

您可以使用一个名为auxiliary/scanner/smb/smb_enumshares的辅助模块,如图 3-38 所示。您需要将RHOST变量的值设置为目标 IP 地址的值。该模块返回结果以及目标系统上的共享列表。

图 3-38

辅助模块 smb_enumshares 的输出

另一个流行的 SMB 利用漏洞是 MS-08-67 netapi。可以使用漏洞利用exploit/windows/smb/ms08_067_netapi,如图 3-39 。您需要将变量RHOST的值设置为目标系统的 IP 地址。如果攻击成功运行,您将看到 Meterpreter shell。

图 3-39

使用漏洞 ms08_067_netapi 成功利用目标系统

安全外壳(SSH)是安全远程管理的常用协议之一。Metasploit 有许多用于 SSH 枚举的辅助模块。您可以使用辅助模块auxiliary/scanner/ssh/ssh_version,如图 3-40 所示。您需要将RHOST变量的值设置为目标值。该模块执行并返回目标上运行的确切 SSH 版本。这些信息可用于进一步开发。

图 3-40

辅助模块 ssh_version 的输出

远程桌面

虚拟网络计算(VNC)是一种用于图形远程管理的协议。Metasploit 有几个用于枚举和利用 VNC 的模块。图 3-41 显示了auxiliary/scanner/vnc/vnc_login模块的使用。您需要将RHOST变量的值设置为目标系统的 IP 地址。该模块使用内置的密码字典,并试图进行暴力攻击。一旦该模块完成执行,它将为您提供 VNC 密码,您可以使用该密码登录。

图 3-41

辅助模块 vnc_login 的输出

仪表首选基础

Meterpreter 是 Metasploit 解释器的缩写。它是一种高级 Metasploit 负载,使用内存中的 DLL 注入技术与目标系统进行交互。它提供了几个有用的后期开发工具和实用程序。

Meterpreter 命令

Meterpreter 是一种高级有效载荷,用于执行各种开发后活动。以下是一些可以帮助您浏览 Meterpreter 的基本命令。

核心命令

表 3-1 描述了一组核心 Meterpreter 命令,可以帮助您在目标系统上完成各种与会话相关的任务。

表 3-1

Meterpreter 命令

|

命令

|

描述

|

| — | — |

| ? | 显示帮助菜单 |

| background | 当前会话的背景 |

| bgkill | 终止后台 Meterpreter 脚本 |

| bglist | 列出正在运行的后台脚本 |

| bgrun | 将 Meterpreter 脚本作为后台线程执行 |

| channel | 显示信息或控制活动频道 |

| close | 关闭频道 |

| disable_unicode_encoding | 禁用 unicode 字符串编码 |

| enable_unicode_encoding | 启用 Unicode 字符串编码 |

| exit | 终止抄表员会话 |

| get_timeouts | 获取当前会话超时值 |

| guid | 获取会话 GUID |

| help | 显示帮助菜单 |

| info | 显示关于开机自检模块的信息 |

| irb | 进入 irb 脚本模式 |

| load | 加载一个或多个抄表员扩展 |

| machine_id | 获取附加到会话的计算机的 MSF ID |

| migrate | 将服务器迁移到另一个进程 |

| pivot | 管理透视侦听器 |

| quit | 终止抄表员会话 |

| read | 从通道读取数据 |

| resource | 运行存储在文件中的命令 |

| run | 执行 Meterpreter 脚本或 post 模块 |

| sessions | 快速切换到另一个会话 |

| set_timeouts | 设置当前会话超时值 |

| sleep | 强制 Meterpreter 进入静默状态,然后重新建立会话 |

| transport | 改变当前的传输机制 |

渗透测试快速启动指南(全)(5)https://developer.aliyun.com/article/1525469


相关文章
|
29天前
|
安全 Unix Shell
渗透测试快速启动指南(全)(5)
渗透测试快速启动指南(全)
34 0
|
29天前
|
安全 关系型数据库 MySQL
渗透测试快速启动指南(全)(2)
渗透测试快速启动指南(全)
26 2
|
29天前
|
安全 Linux 网络安全
渗透测试快速启动指南(全)(3)
渗透测试快速启动指南(全)
32 1
|
29天前
|
安全 网络协议 Unix
渗透测试快速启动指南(全)(1)
渗透测试快速启动指南(全)
34 1
|
9月前
|
安全 Linux 测试技术
如何使用Kali Linux进行渗透测试?
如何使用Kali Linux进行渗透测试?
317 0
|
3天前
|
安全 Linux 测试技术
Kali Linux渗透测试教程:解锁黑客之门
Kali Linux渗透测试教程:解锁黑客之门
|
前端开发 Linux 网络安全
kali linux 网络渗透测试学习笔记(一)Nmap工具进行端口扫描
一.利用Nmap扫描网站服务器的端口开放情况首先打开我们的kali linux才做系统,再打开其命令行模式,输入:nmap www.csdn.net 如下图所示:   因此,通过这个结果可以表明csdn上的端口开放了80端口以及443端口吗,这两个端口都十分重要,因为80端口适用于给用户呈现出数据,给用户看网站用的,443端口也是一个比较重要的端口。
2226 0
|
1月前
|
网络协议 网络安全 Go
Kali下安装渗透测试常用工具dnsx和dirsearch
Kali下安装渗透测试常用工具dnsx和dirsearch
144 0
|
1月前
|
安全 Linux 测试技术
深入Kali Linux:高级渗透测试技术详解
深入Kali Linux:高级渗透测试技术详解
306 0
|
数据采集 存储 Linux
2022-渗透测试-Kali Linux字典生成工具Cewl使用指南
2022-渗透测试-Kali Linux字典生成工具Cewl使用指南
2022-渗透测试-Kali Linux字典生成工具Cewl使用指南