每日漏洞 | 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请求有三种可能的响应:

  1. 请求成功:响应206 Partial Content
  2. 请求范围越界(范围超过资源大小):响应416 Requested Range Not Satisfiable
  3. 不支持范围请求:响应200 OK

漏洞原理

该漏洞利用Range字段注入恶意数据。具体来说,当发送一个包含超大整数的Range请求时:

  • 请求示例:Range: bytes=0-18446744073709551615
  • 18446744073709551615转换为十六进制是0xFFFFFFFFFFFFFFFF(16个F)
  • 这是64位无符号整型所能表达的最大整数
  • HTTP.sys在处理这个超大整数时会发生整数溢出,导致漏洞被触发

漏洞检测方法

检测步骤:

  1. 首先判断目标环境是否为Windows+IIS
  2. 构造包含特殊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请求利用整数溢出漏洞执行任意代码。系统管理员应及时应用补丁或采取缓解措施,同时安全人员可利用本文介绍的检测方法进行漏洞验证。

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请求 检测请求示例: 响应分析: 如果服务器返回 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请求利用整数溢出漏洞执行任意代码。系统管理员应及时应用补丁或采取缓解措施,同时安全人员可利用本文介绍的检测方法进行漏洞验证。