目录
1 漏洞背景
2 漏洞影响
3 漏洞利用
3.1 服务器配置与搭建
3.2 测试
3.2.1 curl命令
3.2.2 Host字段
3.2.3 Range字段
3.3 攻击利用
4 防御措施
1 漏洞背景
2015年04月14日,微软发布严重级别的安全公告 MS15-034,编号为 CVE-2015-1635,据称在 Http.sys 中的漏洞可能允许远程执行代码
Http.sys 是一个位于 Windows 操作系统核心组件,能够让任何应用程序通过它提供的接口,以 Http 协议进行信息通讯。
HTTP.sys会错误解析某些特殊构造的HTTP请求,导致远程代码执行漏洞。成功利用此漏洞后,攻击者可在System帐户上下文中执行任意代码。
由于此漏洞存在于内核驱动程序中,攻击者也可以远程导致操作系统蓝屏。远程攻击者可以通过IIS 7(或更高版本)服务将恶意的HTTP请求传递给HTTP.sys驱动。
2 漏洞影响
IIS 7.0以上的Windows 7/8/8.1和Windows Server 2008 R2/Server 2012/Server 2012 R2等操作系统。
3 漏洞利用
3.1 服务器配置与搭建
ip:192.168.52.131
操作系统:win7
中间件:IIS7.0
win7我们如何开启iis服务呢
控制面板>程序和功能>打开或关闭windows功能>Internet信息服务>勾选Web管理工具和万维网服务
我们访问一下
http://127.0.0.1/
如上所示证明开启了iis服务
3.2 测试
我们在攻击机发送如下代码
curl -v 192.168.52.131 -H "Host:irrelevant" -H "Range:bytes=0-18446744073709551615"
返回如下信息证明存在此漏洞
3.2.1 curl命令
详见Linux curl命令最全详解
参数 | 描述 |
---|---|
-v | 显示更详细的信息,调试时使用; |
-H “name:value” | (HTTP)添加一个http header(http请求头); |
3.2.2 Host字段
一个IP
可以对应多个域名
,但我们为了区分不同域名
显示的不同内容,此时引用host概念,所以每个域名对应不同的host,通过host可以区分出访问的是服务器上的哪个站点。(但此处我们直接访问的IP,默认80端口,我试了下,-H "Host:irrelevant"
不加也是可以的)
没搞明白
3.2.3 Range字段
在原来网络不是很好的时候,下载大型文件很不容易,如果下载中断 ,那么只能重头开始下载,为了解决这个问题 HTTP/1.1引入的范围请求。即请求这个文件x~y的字节,指定范围,在请求报文的首部添加Range字段,此字段指定资源的byte范围
,告诉服务器,请求资源是哪个范围的内容,让断点续传和并行下载得以实现。
例如:
Range: bytes=5001-10000
并不是所有的服务器都支持此要求
如果不支持服务器会返回400状态码
,意思是客户端请求异常
这里我们的测试命令给的是
-H "Range:bytes=0-18446744073709551615"
18446744073709551615转为十六进制是 0xFFFFFFFFFFFFFFFF(16个F),是64位无符号整型所能表达的最大整数,整数溢出
和这个超大整数有关
发送请求包就会返回416状态码
如果请求中包含了 Range 请求头,并且 Range 中指定的任何数据范围都与当前资源的可用范围不重合
,同时请求中又没有定义 If-Range 请求头,那么服务器就应当返回416状态码。
这个漏洞是整除溢出型漏洞,服务器端怎么处理这个请求,我也没搞懂,我现在只知道整数溢出报416状态码,证明此处存在此漏洞
3.3 攻击利用
工具用Metasploit(MSF)
安装使用方法自己搞
两个模块
0 ddos攻击
1 读取内存信息
试试第二个模块
不行不知道为什么
我们试试第一个模块ddos攻击
这里有个东西叫therads
,上面说是并发线程数,我试了一下,如果是默认
,直接run
,服务器会瞬间蓝屏
,然后重启,如果是改成set therads 10
,服务器会长时间蓝屏
4 防御措施
1.打补丁
https://docs.microsoft.com/zh-cn/security-updates/Securitybulletins/2015/ms15-034
2.临时禁用IIS内核缓存
参考
Microsoft安全公告MS15-034 -严重
HTTP.sys远程代码执行(CVE2015-1635,MS15-034)
什么是整数溢出漏洞以及它带来的后果