MS15-034 (CVE-2015-1635) 漏洞复现报告(超详细)

MS15-034 (CVE-2015-1635) 漏洞复现报告(超详细)

1. 基本信息

项目 内容
漏洞编号 MS15-034 / CVE-2015-1635
漏洞名称 HTTP.sys 远程代码执行漏洞
漏洞类型 整数溢出
影响组件 Windows HTTP 协议栈驱动 HTTP.sys
理论危害 拒绝服务、信息泄露、远程代码执行

2. 实验环境

角色 操作系统 IP 地址 说明
攻击机 Kali Linux 2023 192.168.10.224 安装 curl、Nmap、Metasploit
靶机 Windows Server 2008 R2 SP1 192.168.10.142 IIS 7.5,未打补丁 (KB3042553)

3. 漏洞检测

发送恶意 Range 头验证漏洞:

返回 416 Requested Range Not Satisfiable,确认漏洞存在。

4. 危害复现情况

危害类型 复现结果 说明
拒绝服务(蓝屏) 成功 使用 Metasploit DoS 模块,靶机立即蓝屏,错误代码 IRQL_NOT_LESS_OR_EQUAL
信息泄露 ❌ 未成功 在 Windows Server 2008 R2 上使用 MSF 内存读取模块及手动 curl 均未获得额外数据
远程代码执行 ❌ 未尝试 无公开稳定利用代码,理论风险极高,实际难以利用

4.1 拒绝服务复现步骤

查询漏洞MS15-034,返回了两个工具,工具1也可以用来检测漏洞的存在

返回选择工具0,使用工具0,设置靶机ip后运行完成了蓝屏攻击。

执行后靶机蓝屏(截图见附件)。复现成功。

4.2 信息泄露尝试说明

为尝试信息泄露,在靶机 C:\inetpub\wwwroot 下创建 10MB 文件 large.txt,然后执行:

bash

curl http://192.168.10.142/large.txt -H "Range: bytes=0-18446744073709551615" --output dump.bin

仅返回 416 错误页面,无内存数据。Metasploit 的 ms15_034_http_sys_memory_dump 模块也只输出漏洞存在提示,未返回数据。判断在 Windows Server 2008 R2 上信息泄露难以复现。

5. 漏洞原理简述

HTTP.sys 在处理 Range: bytes=0-N 时计算长度 length = N - 0 + 1。当 N = 2^64-1 时,length = 2^64,超出 64 位整数范围,溢出为 0。但代码缺陷导致仍使用原始 N 值去读取内存,从而越界访问:若访问不可读区域则蓝屏,若访问可读区域则信息泄露。

攻击者利用了 Range 头的计算逻辑缺陷,发送了一个不可能满足的区间

Range: bytes=0-18446744073709551615

这个结束值 18446744073709551615 是 64 位无符号整数的最大值(2^64 - 1)。

服务器在处理时,需要计算要发送的数据长度:

长度 = 结束 - 开始 + 1 = (2^64 - 1) - 0 + 1 = 2^64

但服务器内部用来存储长度的变量是 64 位无符号整数,最大只能表示 2^64 - 12^64 超出了这个范围,发生整数溢出 ,实际存储的值变成了 0

正常情况下,计算出长度为 0 时,服务器应该返回 416 Requested Range Not Satisfiable(范围不满足)。但是,Windows 的 HTTP.sys 驱动中存在一个缺陷:它没有正确处理这个溢出情况,反而错误地使用了原始的、没有溢出的 end 值(2^64 - 1)作为要复制的字节数。

于是,HTTP.sys 从文件缓存的起始地址开始,尝试读取 2^64 字节的数据------这远远超出了实际文件大小。它会一直读到文件缓存后面的内核内存区域。如果那片内存区域是可读的,就会把数据返回给攻击者(信息泄露 );如果不可读,就会触发页错误,导致系统蓝屏(拒绝服务)。

IIS 内核缓存的作用

  • 正常功能HTTP.sys 将静态文件内容缓存到内核内存中,加速后续请求。

  • 漏洞中的角色 :攻击者触发溢出后,HTTP.sys 错误地使用原始的 N 值作为读取长度,从内核缓存起始地址开始越界读取。

    • 若越界区域可读 → 信息泄露
    • 若不可读 → 蓝屏

因此,IIS 内核缓存是信息泄露能够成功的"放大镜"和"通道" 。关闭内核缓存可切断该通道,但整数溢出缺陷依然存在(仍可能蓝屏)。


四、总结

  • 正常Range 头用来请求文件的一部分,服务器返回 206。
  • 恶意:攻击者构造一个超大范围,让服务器计算溢出,利用代码缺陷读取不该访问的内存。
  • 你的实验中 :发送恶意 Range 后,服务器返回 416(它检测到了范围无效,但没有泄露数据),是因为 Windows Server 2008 R2 上的 HTTP.sys 实现可能更早地拦截了这种请求,或者内存布局使得越界读取落入了不可读区域,只触发了蓝屏。

如果你想更直观地理解,可以这样类比:
Range 头就像你去餐厅点"只要第 3 口到第 5 口菜"。

攻击者点的是"从第 0 口吃到第 100 亿口",餐厅厨师算错账,结果从厨房里搬出了别人桌的菜(信息泄露),或者撞到墙上把厨房砸了(蓝屏)。

6. 修复建议

  • 安装微软补丁 KB3042553
  • 临时缓解:IIS 管理器中禁用内核缓存

7.漏洞修复

临时缓解:IIS 管理器中禁用内核缓存 在下图位置关闭内核缓存,在关闭之后再次返回kali尝试攻击,发现无法触发蓝屏了。但是通过查阅资料发现,关闭内核缓存后并不能完全修复漏洞,仍有几率触发漏洞,并且关闭内核缓存后会导致服务器性能下降,所以这个修复方式并不完美。

安装微软补丁 KB3042553,在微软官网下载补丁后传入win2008靶机中,运行补丁程序重启后自动就打上了补丁(打补丁的时候忘记截图了,反正也没什么好看的),重新返回kali中再次尝试攻击,发现攻击失败,再次运行漏洞查询程序,得到结果如第二张图片,漏洞不存在了,证明漏洞修复成功。

8.参考资料

标题/描述 链接
微软安全公告 MS15-034 technet.microsoft.com/library/sec...
绿盟科技:Windows HTTP.sys远程代码执行漏洞跟踪进展 www.nsfocus.com.cn/html/2015/2...
IT168技术分析:Windows HTTP.sys将令网站面临安全威胁 net.it168.com/a2015/0427/...
CSDN漏洞复现教程 blog.csdn.net/ec_carrot/a...
博客园漏洞复现与修复 www.cnblogs.com/luuxiaoming...
网络系统安全------MS15_034漏洞利用与安全加固 ncsimple.blog.csdn.net/article/det...
腾讯云漏洞修复文章 cloud.tencent.cn/developer/a...
CN-SEC漏洞复现 cn-sec.com/archives/41...
KB3042553 补丁下载 (Windows Server 2008 R2) www.microsoft.com/zh-cn/downl...
补丁依赖说明 blog.csdn.net/y_66666666/...

9. 结论

本次实验成功复现了 MS15-034 漏洞的拒绝服务危害,验证了 Windows Server 2008 R2 系统存在该漏洞且可被远程利用导致蓝屏。信息泄露和远程代码执行因环境和技术限制未成功复现,但理论上仍然存在风险,在理论上存在信息泄露和远程代码执行。


相关推荐
Aphasia31114 小时前
VPN 与内网穿透
安全
Mr_愚人派2 天前
当"Claude"不再是 Claude:一次第三方 API 代理引发的 AI 身份伪造排查实录
人工智能·安全
DaLi Yao2 天前
【无标题】
人工智能·安全
Alsn862 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
网络研究院2 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展
treesforest2 天前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全
零零信安2 天前
零零信安荣登数世咨询《新质·数字安全专精百强(2026)》暗网情报领域,彰显专业实力与创新引领
安全·网络安全·数据泄露·暗网·零零信安
开发小能手-roy2 天前
StringBuilder vs StringBuffer:2024年还需要线程安全字符串吗?
开发语言·python·安全
_阿伟_3 天前
JWT介绍
安全
zhengfei6113 天前
小白级手册——全面剖析红队信息收集思考
网络·安全·web安全