从ScStoragePathFromUrl函数溢出到系统沦陷:CVE-2017-7269 IIS 6.0漏洞深度剖析与实战

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。函数第一次处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值