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 系统存在该漏洞且可被远程利用导致蓝屏。信息泄露和远程代码执行因环境和技术限制未成功复现,但理论上仍然存在风险,在理论上存在信息泄露和远程代码执行。


相关推荐
广州创科水利3 小时前
四座小水库的“智能体检”:广州创科大亚湾安全监测项目纪实
安全
上海云盾商务经理杨杨3 小时前
网络安全等级保护2.0全解读:合规要求+实施流程+安全建设要点
安全
上海云盾商务经理杨杨3 小时前
WAF深度详解:Web应用安全的核心屏障,原理+部署+实战防护
安全
Swift社区3 小时前
OpenClaw安全:从暴露到加固的实战指南
安全·openclaw
星幻元宇VR3 小时前
VR科普赛车:让交通安全教育更直观
科技·学习·安全·生活·vr
算法即正义4 小时前
知识竞赛系统网络架构设计:高并发、高可用与安全实践
网络·安全
vortex54 小时前
【红队】企业内部安全区域划分与攻防思路解析
网络·安全·网络安全·渗透测试
汽车仪器仪表相关领域4 小时前
广州文明机电 新能源汽车运行安全性能检验解决方案
人工智能·功能测试·安全·单元测试·汽车·压力测试·可用性测试
数字供应链安全产品选型1 天前
AI造“虾”易,治理难?悬镜多模态 SCA 技术破局 AI 数字供应链治理困局!
人工智能·安全·网络安全·ai-native