1. 漏洞背景与影响范围2003年发布的Windows Server 2003 R2系统内置的IIS 6.0组件在2017年被曝出存在一个高危漏洞。这个漏洞编号为CVE-2017-7269本质上是WebDAV服务中的ScStoragePathFromUrl函数存在缓冲区溢出问题。当时这个漏洞影响范围相当广泛因为很多企业还在使用这个经典的操作系统版本。我最早接触这个漏洞是在一次内部渗透测试中。客户的一台老旧文件服务器突然让我们拿到了系统权限排查后发现正是这个漏洞在作祟。有趣的是微软其实早在2016年7月就监测到有攻击者在利用这个漏洞但直到2017年3月才发布补丁。这个时间差让不少系统暴露在风险中。漏洞的触发条件比较特殊需要服务器开启WebDAV扩展功能。虽然IIS 6.0默认不开启这个功能但很多企业为了方便远程文件管理都会手动启用它。一旦开启攻击者只需要发送一个精心构造的PROPFIND请求就能触发缓冲区溢出最终实现远程代码执行。2. 漏洞技术原理剖析2.1 关键函数分析ScStoragePathFromUrl这个函数是整件事情的核心。它的作用是把URL路径转换成服务器本地存储路径。问题出在函数内部处理长URL时的内存拷贝操作——它没有对输入长度做严格校验直接使用了不安全的字符串操作。我反编译过这个函数的汇编代码发现它在处理if:http://开头的特殊header时会进行两次路径转换。第一次转换会分配一个固定大小的栈缓冲区第二次转换时如果URL过长就会导致栈溢出。这种双重转换的设计缺陷给了攻击者可乘之机。2.2 溢出机制详解具体来说攻击者构造的恶意请求是这样的PROPFIND / HTTP/1.1 Host: target Content-Length: 0 If: http://AAAAAAAA...[30000个A]... (锁令牌)当这个请求到达服务器时IIS会调用ScStoragePathFromUrl处理If头中的URL。函数第一次处理时还算正常但第二次处理时由于缓冲区太小超长的URL就会覆盖关键的返回地址和异常处理结构。通过精心控制溢出内容攻击者可以劫持程序执行流程。3. 漏洞复现环境搭建3.1 靶机配置要复现这个漏洞我们需要准备以下环境Windows Server 2003 R2系统建议使用虚拟机安装IIS 6.0组件启用WebDAV扩展安装IIS时有个细节要注意在万维网服务→应用程序服务器选项中必须勾选WebDAV发布。安装完成后还需要在IIS管理器中为默认网站启用WebDAV扩展。我遇到过不少初学者卡在这一步因为界面选项藏得比较深。3.2 攻击机准备攻击机推荐使用Kali Linux需要安装Metasploit框架。虽然网上有现成的Python版exploit但Metasploit的模块更稳定也方便后续的渗透操作。建议使用2018年左右的Kali版本因为新版本可能会遇到兼容性问题。4. 漏洞利用实战4.1 Exploit构造虽然可以直接使用现成的Metasploit模块但理解exploit的构造原理更重要。核心是要构造一个特殊的PROPFIND请求其中If头包含超长字符串。这个字符串需要精心设计前部分用大量A填充触发溢出中间放置跳转地址如0x7ffa4512最后附上shellcode我调试时发现由于内存地址随机化直接硬编码地址成功率不高。更好的做法是利用堆喷射技术先分配大量内存填充nop sled再跳转到这个区域执行。4.2 手动利用步骤不使用Metasploit的情况下可以这样手动利用用nc发送恶意PROPFIND请求echo -e PROPFIND / HTTP/1.1\nHost: target\nContent-Length: 0\nIf: http://$(python -c print A*30000) | nc target 80观察服务器响应确认是否崩溃调整溢出长度和跳转地址加入shellcode实现代码执行这个过程需要反复调试我建议先用调试器附加到w3wp.exe进程观察溢出时的寄存器状态这样能更准确地确定跳转位置。5. 防御与修复建议5.1 临时缓解措施如果暂时无法升级系统可以采取这些临时措施在IIS中禁用WebDAV扩展在防火墙过滤包含PROPFIND和If:头的请求使用URLScan工具限制请求长度不过这些方法都可能影响正常业务特别是需要WebDAV功能的情况。5.2 彻底修复方案最根本的解决方案是安装微软官方补丁。补丁编号为MS17-016修改了ScStoragePathFromUrl函数的内存处理逻辑。安装后需要重启IIS服务才能生效。对于已经停止支持的Windows Server 2003建议尽快迁移到新版操作系统。我在客户现场见过太多因为舍不得淘汰老旧系统而导致的安全事故这个风险实在不值得冒。6. 渗透测试中的实际应用在真实的红队行动中这个漏洞往往能起到意想不到的效果。我遇到过这样的情况客户网络外围防护很严但内网有一台老旧的Windows 2003文件服务器。通过这个漏洞我们成功突破边界拿到了内网立足点。利用时需要注意几点先扫描识别IIS 6.0服务器检查WebDAV是否启用OPTIONS请求使用低流量模式避免触发IDS获得shell后立即迁移进程防止w3wp.exe回收这个漏洞的利用稳定性其实不算太高在内网环境中成功率大约60-70%。但考虑到Windows 2003系统普遍缺乏防护仍然是红队武器库中的利器。