HTTP.sys远程代码执行(CVE2015-1635,MS15-034)

HTTP.sys远程代码执行(CVE2015-1635)

1|0漏洞原理

在原来网络不是很好的时候,下载大型文件很不容易,如果下载中断 ,那么只能重头开始下载,为了解决这个问题 HTTP/1.1引入的范围请求。即请求这个文件x~y的字节,指定范围,在请求报文的首部添加Range字段,此字段指定资源的byte范围,告诉服务器,请求资源是哪个范围的内容,让断点续传和并行下载得以实现。

如果服务器支持范围请求,响应包中,会存在Accept-Range字段(且值部位none,bytes为资源范围的单位),并在content-length字段告诉客户端资源的大小范围。

GET /js/site.js HTTP/1.1 Range: bytes=0-18446744073709551615 Cookie: ASPSESSIONIDAQCSSQQQ=AENCJGCBHMLGFOCHOJEBNLCJ Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding: gzip,deflate Host: xxx.xxx.com User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 ..... Connection: Keep-alive 响应: HTTP/1.1 416 Requested Range Not Satisfiable Content-Type: application/x-javascript Last-Modified: Wed, 18 Sep 2013 05:52:53 GMT Accept-Ranges: bytes ETag: "963ee15033b4ce1:0" Server: Microsoft-IIS/7.5 X-Powered-By: ASP.NET Date: Sat, 05 Sep 2020 03:16:27 GMT Content-Length: 362 Content-Range: bytes */1602 .....

如果没有Accept-Ranges字段,则服务器可能不支持范围请求,有的服务器会明确将值设为“none”。

服务器面对范围请求,有三种响应:

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

而HTTP.sys远程代码执行漏洞正是利用Range字段注入恶意数据。该漏洞的检测,也是利用服务器面对范围请求时的响应特征来判断

2|0漏洞检测

HTTP.sys漏洞的检测比较简单,先判断目标环境是不是Windows+IIS,然后构造Range字段进行检测即可。

检测时,在请求包中添加Range字段,如下:

Range: bytes=0-18446744073709551615

服务器响应400,证明不存在HTTP.sys远程代码执行漏洞。如果响应416,则证明系统存在漏洞。

这里简单说一下Range字段值的含义。18446744073709551615转为十六进制是 0xFFFFFFFFFFFFFFFF(16个F),是64位无符号整型所能表达的最大整数,整数溢出和这个超大整数有关。

另外,Apache几个老版本存在的Apache HTTP Server畸形Range选项处理远程拒绝服务漏洞,也是通过Range字段触发的,有兴趣的校友可以去了解了解。

3|0漏洞修复

升级补丁:

http://technet.microsoft.com/security/bulletin/MS15-034

禁用IIS内核缓存(缓解方案):

https://technet.microsoft.com/en-us/library/cc731903(v=ws.10).aspx


__EOF__

本文作者komomon
本文链接https://www.cnblogs.com/forforever/p/13622625.html
关于博主:喜欢读书、旅行、爬山。评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   komomon  阅读(2276)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示