渗透测试快速启动指南(全)(4)https://developer.aliyun.com/article/1525468
Stdapi:系统命令
表 3-2 描述了一组基本的系统命令,这些命令提供了一系列系统任务,如进程列表和删除、执行命令、重启等。
表 3-2
系统命令
|
命令
|
描述
|
| — | — |
| clearev
| 清除事件日志 |
| drop_token
| 放弃任何活动的模拟令牌 |
| execute
| 执行命令 |
| getenv
| 获取一个或多个环境变量值 |
| getpid
| 获取当前进程标识符 |
| getprivs
| 尝试启用当前进程可用的所有特权 |
| getsid
| 获取运行服务器的用户的 SID |
| getuid
| 获取运行服务器的用户 |
| kill
| 终止一个进程 |
| localtime
| 显示目标系统的本地日期和时间 |
| pgrep
| 按名称过滤进程 |
| pkill
| 按名称终止进程 |
| ps
| 列出正在运行的进程 |
| reboot
| 重新启动远程计算机 |
| reg
| 修改远程注册表并与之交互 |
| rev2self
| 在远程机器上调用RevertToSelf()
|
| shell
| 放入系统命令外壳 |
| shutdown
| 关闭远程计算机 |
| steal_token
| 试图从目标进程窃取模拟令牌 |
| suspend
| 暂停或恢复进程列表 |
| sysinfo
| 获取有关远程系统的信息,如操作系统 |
Stdapi:用户界面命令
表 3-3 列出了帮助您从目标系统获取远程屏幕截图和击键的命令。
表 3-3
用户界面命令
|
命令
|
描述
|
| — | — |
| enumdesktops
| 列出所有可访问的桌面和窗口站 |
| getdesktop
| 获取当前的 Meterpreter 桌面 |
| idletime
| 返回远程用户空闲的秒数 |
| keyscan_dump
| 转储击键缓冲区 |
| keyscan_start
| 开始捕获击键 |
| keyscan_stop
| 停止捕获击键 |
| screenshot
| 抓取交互式桌面的屏幕截图 |
| setdesktop
| 更改 Meterpreter 的当前桌面 |
| uictl
| 控制一些用户界面组件 |
Stdapi:网络摄像头命令
表 3-4 描述了从连接到您的受损系统的网络摄像头获取实时图片和视频流的有效命令。
表 3-4
网络摄像机命令
|
命令
|
描述
|
| — | — |
| record_mic
| 从默认麦克风录制音频 x 秒 |
| webcam_chat
| 开始视频聊天 |
| webcam_list
| 列出网络摄像机 |
| webcam_snap
| 从指定的网络摄像头拍摄快照 |
| webcam_stream
| 播放来自指定网络摄像头的视频流 |
Stdapi:音频输出命令
表 3-5 描述了一个帮助您在受损系统上播放音频文件的命令。
表 3-5
音频输出命令
|
命令
|
描述
|
| — | — |
| play
| 在目标系统上播放音频文件,磁盘上不写入任何内容 |
Priv:提升命令
表 3-6 描述了帮助您将权限提升到最高级别的命令,可能是 root 或管理员。
表 3-6
提升命令
|
命令
|
描述
|
| — | — |
| getsystem
| 试图将您的权限提升到本地系统的权限 |
Priv:口令数据库命令
表 3-7 描述了帮助您从受损系统获取原始密码散列的命令。
表 3-7
密码数据库命令
|
命令
|
描述
|
| — | — |
| hashdump
| 转储 SAM 数据库的内容 |
Priv: Timestomp 命令
表 3-8 描述了一个命令,它是 Metasploit 反伪造功能的一部分。
表 3-8
时间戳命令
|
命令
|
描述
|
| — | — |
| timestomp
| 操作文件的 MACE 属性 |
使用流量计
为了熟悉 Meterpreter,我们先利用 SMB MS08-067 netapi 漏洞远程访问一个目标系统,如图 3-42 所示。攻击成功了,你得到了 Meterpreter 外壳。
图 3-42
使用漏洞 ms08_067_netapi 成功利用目标系统
系统信息表
一旦您利用漏洞攻击了目标,您需要检查目标的一些基本细节,如确切的操作系统版本、计算机名称、域、体系结构等等。Meterpreter 提供了一个名为sysinfo
的命令,可以用来收集目标的基本信息,如图 3-43 所示。
图 3-43
Meterpreter 中 sysinfo 命令的输出
限位开关(Limit Switch)
Meterpreter ls
命令可用于列出受损系统当前目录下的文件,如图 3-44 所示。
图 3-44
远程受损系统上文件的 Meterpreter 列表中辅助 ls 命令的输出
色彩
一旦您获得了对目标系统的访问权,您必须了解您在该系统上拥有什么用户权限。拥有 root 或管理员级别的权限是最理想的,较低的权限访问意味着对您的操作有很多限制。Meterpreter 提供了一个名为getuid
的命令,如图 3-45 所示,该命令检查受损系统上的当前权限级别。
图 3-45
Meterpreter 中 getuid 命令的输出
提权
一旦您使用适用的漏洞获得了对目标系统的访问权限,下一个合乎逻辑的步骤就是检查权限。使用getuid
命令,您已经测量了您当前的特权级别。您可能没有获得根或管理员级别的访问权限。因此,为了最大化攻击渗透,提升您的用户权限非常重要。Meterpreter 帮助您提升权限。打开 Meterpreter 会话后,您可以使用getsystem
命令,如图 3-46 所示,将权限提升至管理员权限。
图 3-46
Meterpreter 中 getsystem 命令的输出
屏幕上显示程序运行的图片
在系统受损后,看一眼目标系统上运行的桌面 GUI 是很有趣的。Meterpreter 提供了一个名为screenshot
的实用程序,如图 3-47 所示。它只是拍摄目标系统上当前桌面的快照,并将其保存在本地根文件夹中。
图 3-47
Meterpreter 中屏幕截图命令的输出
图 3-48 显示了从受损系统中捕获的桌面屏幕。
图 3-48
在远程受损系统上运行的桌面的屏幕截图
hashdump
在一次成功的系统入侵之后,您肯定希望获得该系统上不同用户的凭证。打开 Meterpreter 会话后,您可以使用hashdump
命令从受损系统中转储所有 LM 和 NTLM 哈希,如图 3-49 所示。一旦你有了这些哈希,你就可以把它们提供给各种离线哈希破解程序,并以纯文本的形式获取密码。
图 3-49
辅助模块 vnc_login 的输出
Searchsploit
到目前为止,您已经了解到 Metasploit 拥有丰富的辅助工具、漏洞、有效负载、编码器等集合。但是,有时 Metasploit 中可能不存在针对某个漏洞的利用代码。在这种情况下,您可能需要将所需的漏洞利用从外部来源导入到 Metasploit 中。Exploit-DB 是各种平台漏洞的综合来源,Searchsploit 是一个帮助在 Exploit-DB 中搜索特定漏洞的实用程序。图 3-50 显示了使用 Searchsploit 工具寻找与当前相关的漏洞。
图 3-50
使用 Searchsploit 工具搜索与 uTorrent 相关的漏洞
摘要
本章向您介绍了 Metasploit 的各个方面,从框架和辅助结构到利用 ast 服务。您还学习了如何利用 Metasploit 功能来集成 NMAP 和 OpenVAS。已经学习了各种 Metasploit 有效负载、辅助工具和利用,在下一章中,您将学习应用这些技能来利用易受攻击的机器。
自己动手做练习
- 浏览 Metasploit 目录并了解其结构。
- 尝试各种命令,如
set
、setg
、unset
、unsetg
、spool
等等。 - 从 MSFconsole 启动 NMAP 扫描。
- 在 MSFconsole 中使用 OpenVAS 对目标系统执行漏洞评估。
- 探索各种辅助模块,并使用它们来扫描 HTTP、FTP、SSH 等服务。
- 尝试 Meterpreter 的不同功能,如
getsystem
和hashdump
。
四、用例
在前三章中,您已经熟悉了基本工具 NMAP、OpenVAS 和 Metasploit。您详细了解了每个工具,以及它们如何相互集成以提高效率。
现在是时候将所有的知识整合在一起,并应用到实际场景中了。在本章中,您将应用到目前为止所学的各种技术来利用易受攻击的系统并获得对它的访问。
创建虚拟实验室
在实际生产系统中尝试你新学到的技能并不总是可能的。因此,您可以在自己的虚拟实验室中以受限的方式尝试您的技能。
Vulnhub ( https://www.vulnhub.com
)是一个提供下载系统的网站,这些系统被故意设置为易受攻击。您只需下载一个系统映像,并在 VirtualBox 或 VMware 中启动它。
出于本案例研究的目的,请访问 https://www.vulnhub.com/entry/basic-pentesting-1,216/
并下载该系统。下载后,使用 VirtualBox 或 VMware 启动它。系统的初始启动屏幕如图 4-1 所示。
图 4-1
目标系统的初始引导屏幕
您没有登录系统的任何凭证,因此您必须使用笔测试技能才能进入系统。
进行侦察
在 Kali Linux 中,启动 ZENMAP 对该目标进行端口扫描和服务枚举,如图 4-2 所示。
图 4-2
在目标系统上完成的 NMAP 密集扫描的输出
在 ZENMAP 输出中,您可以看到以下端口是打开的:
- 运行 ProFTPD 1.3.3c 的端口 21
- 运行 OpenSSH 7.2p2 的端口 22
- 运行 Apache httpd 2.4.18 的端口 80
基于此输出,您有三种可能的方法来破坏系统。
- 在 Metasploit 中搜索并执行 ProFTPD 1.3.3c 的任何漏洞
- 针对在端口 22 上运行的 SSH 的强力用户凭证
- 探索是否有任何应用程序托管在端口 80 上
利用系统
当您尝试使用浏览器在端口 80 上访问系统时,您将获得如图 4-3 所示的默认 web 服务器页面。
图 4-3
目标系统上的默认登录网页(端口 80)
现在您将再次回到 NMAP,这次您将使用 NMAP 脚本http-enum
,而不是端口扫描,如图 4-4 所示。
图 4-4
在目标系统上执行的 http-enum NMAP 脚本的输出
脚本的输出告诉您,web 服务器上有一个名为secret
的文件夹,其中可能有您感兴趣的内容。
收到关于服务器上的secret
文件夹的输入后,尝试访问它,如图 4-5 所示。
图 4-5
浏览托管在目标 web 服务器上的秘密目录
你可以看到一个屏幕,暗示它是某种基于 WordPress 的博客。然而,该网页似乎是破碎和不完整的。
当你试图加载页面时,浏览器会寻找vtcsec
主机。这意味着您需要配置您的系统来解析这个主机名。你可以简单的打开终端,然后在文本编辑器中打开文件/etc/hosts
,如图 4-6 所示。
图 4-6
编辑/etc/hosts 文件以添加新的主机条目
接下来,添加新的一行:192.168.25.132 vtcsec
。
在终端中,运行以下命令:gedit /etc/hosts
。
现在,您已经在 hosts 文件中进行了必要的更改,让我们再次尝试访问 web 界面。接口载荷,如图 4-7 所示。
图 4-7
目标系统上的 WordPress 博客主页
通过检查图 4-8 所示的页面,很明显这个应用程序是基于 WordPress 的。
图 4-8
目标系统上的 WordPress 登录页面
接下来,您需要凭证来进入应用程序的管理控制台。您有三种方式获得它们,如下所示:
- 猜凭据;很多时候,默认凭证是有效的。
- 使用类似 Hydra 的密码破解工具来破解凭证。
- 使用 Metasploit 辅助模块
auxiliary/scanner/http/wordpress_login_enum
对应用程序凭证发起暴力攻击。
在这种情况下,应用程序具有默认的 admin/admin 凭据。
现在您有了应用程序凭证,您可以使用 Metasploit 上传一个恶意插件到 WordPress,这将给予您远程 shell 访问。WordPress 插件是一段现成的代码,你可以导入到 WordPress 安装中,以启用额外的功能。你可以使用 MSFconsole 中的search
命令来查找任何与 WordPress 管理相关的漏洞,如图 4-9 所示。
图 4-9
Metasploit 中 wp_admin 漏洞的搜索查询输出
你现在需要使用漏洞利用exploit/unix/webapp/wp_admin_shell_upload
,如图 4-10 所示。您需要配置参数USERNAME
、PASSWORD
、TARGETURI
和RHOST
。
图 4-10
针对目标系统利用 wp_admin_shell_upload 漏洞获取 Meterpreter 访问权限
该漏洞通过将恶意插件上传到 WordPress 并最终给予您所需的 Meterpreter 访问权限而成功运行。
在最初的 NMAP 扫描中,您发现您的目标也在端口 21 上运行 FTP 服务器。FTP 服务器版本是 ProFTPd 1.3.3。您可以检查 Metasploit 是否利用了此 FTP 服务器版本。使用search
命令。
有趣的是,Metasploit 确实利用了 ProFTPd 服务器。可以使用exploit/unix/ftp/proftpd_133c_backdoor
,如图 4-11 所示。您需要配置的只是RHOST
变量。
图 4-11
proftpd 搜索查询的输出和目标系统上 proftpf_133c_backdoor 漏洞的执行
攻击代码成功运行,并在目标系统上给你一个外壳。
因此,你成功地用两种不同的方式利用了你的目标,一种是通过 WordPress,另一种是通过 FTP 服务器。恭喜你!