1️⃣ Targets 的概念
- 目标(Target):指的是漏洞利用模块适配的特定作系统版本或软件版本。
- 不同目标可能:
- 作系统版本不同(如 Windows XP、Windows 7)
- 软件版本不同(如 IE 7、IE 8、IE 9)
- Service Pack 或语言版本不同
- 选择正确目标很重要,因为漏洞利用模块内部可能使用了特定的返回地址或ROP链,这些地址在不同系统/语言版本下会变化。
2️⃣ 查看可用目标
在未选择模块时:
msf6 > show targets
[-] No exploit module selected.
说明必须先选择一个漏洞利用模块,否则无法显示可用目标。
在选择模块后:
msf6 exploit(windows/smb/ms17_010_psexec) > show targets
- 会显示该模块支持的目标列表。
- 示例(MS17-010):
Id Name -- ---- 0 Automatic
Automatic
表示 Metasploit 会自动检测目标版本。
对 IE Use-After-Free 漏洞(MS12-063):
msf6 exploit(windows/browser/ie_execcommand_uaf) > show targets
输出:
Id Name
-- ----
0 Automatic
1 IE 7 on Windows XP SP3
2 IE 8 on Windows XP SP3
3 IE 7 on Windows Vista
4 IE 8 on Windows Vista
5 IE 8 on Windows 7
6 IE 9 on Windows 7
可以针对具体 IE/Windows 组合选择目标。
3️⃣ 选择目标
- 默认
Automatic
:Metasploit 会先尝试探测目标。 - 如果你明确知道目标版本:
msf6 exploit(windows/browser/ie_execcommand_uaf) > set target 6
target => 6
- 这里
6
对应IE 9 on Windows 7
。
4️⃣ 为什么目标不同
- 返回地址不同:语言包、Service Pack、系统版本可能导致内存地址变化。
- ROP链依赖:某些漏洞需要特定的库版本或安装环境。
- 安全措施:不同系统的 DEP/ASLR 状态也会影响漏洞利用成功率。
总结:选择正确目标是漏洞利用成功的关键一步。
5️⃣ 实践建议
- 先用
info
查看模块信息:msf6 exploit(windows/browser/ie_execcommand_uaf) > info
- 了解漏洞类型、受影响版本、先决条件。
- 使用
show targets
确认支持的系统。 - 如知道版本,使用
set target <id>
指定目标,否则用Automatic
。 - 注意返回地址和依赖条件:
- 有些模块需要特定 DLL 或 JRE 版本。
- 有些模块需要针对语言版本做调整。