每日漏洞 | HTTP.sys远程代码执行
字数 1284 2025-08-18 11:38:32
HTTP.sys远程代码执行漏洞深度分析
漏洞概述
HTTP.sys是Microsoft Windows处理HTTP请求的内核驱动程序,从IIS 6.0开始引入,用于优化IIS服务器性能。该漏洞实质是HTTP.sys的整数溢出漏洞,当攻击者向受影响的Windows系统发送特殊设计的HTTP请求时,HTTP.sys未能正确分析就会导致此漏洞。成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码。
受影响系统
- Windows Server 2008 R2
- Windows Server 2012
- Windows Server 2012 R2
- Windows 7
- Windows 8
- Windows 8.1
任何安装了微软IIS 6.0以上的上述操作系统都受到这个漏洞的影响。
技术背景:Range请求
HTTP.sys远程代码执行漏洞与HTTP协议中的Range首部字段密切相关。
Range请求简介
Range请求是HTTP/1.1引入的功能,用于实现断点续传和并行下载。客户端可以在请求报文的Range首部字段中指定资源的byte范围,请求资源的特定部分。
服务器响应类型
服务器对Range请求有三种可能的响应:
- 请求成功:响应206 Partial Content
- 请求范围越界(范围超过资源大小):响应416 Requested Range Not Satisfiable
- 不支持范围请求:响应200 OK
漏洞原理
该漏洞利用Range字段注入恶意数据。具体来说,当发送一个包含超大整数的Range请求时:
- 请求示例:
Range: bytes=0-18446744073709551615 - 18446744073709551615转换为十六进制是0xFFFFFFFFFFFFFFFF(16个F)
- 这是64位无符号整型所能表达的最大整数
- HTTP.sys在处理这个超大整数时会发生整数溢出,导致漏洞被触发
漏洞检测方法
检测步骤:
- 首先判断目标环境是否为Windows+IIS
- 构造包含特殊Range字段的HTTP请求
检测请求示例:
GET / HTTP/1.1
Host: target
Range: bytes=0-18446744073709551615
响应分析:
- 如果服务器返回400状态码:不存在HTTP.sys远程代码执行漏洞
- 如果服务器返回416状态码:系统存在漏洞
相关漏洞
Apache HTTP Server早期版本也存在类似的Range选项处理漏洞,可能导致远程拒绝服务。
修复方案
官方补丁
微软已发布修复补丁,可通过以下链接获取:
http://technet.microsoft.com/security/bulletin/MS15-034
临时缓解措施
禁用IIS内核缓存:
https://technet.microsoft.com/en-us/library/cc731903(v=ws.10).aspx
总结
HTTP.sys远程代码执行漏洞是一个严重的内核级漏洞,攻击者可通过构造特殊的Range请求利用整数溢出漏洞执行任意代码。系统管理员应及时应用补丁或采取缓解措施,同时安全人员可利用本文介绍的检测方法进行漏洞验证。