如何进行微软漏洞cve - 2017 - 11885分析与利用

本篇文章给大家分享的是有关如何进行微软漏洞CVE-2017-11885分析与利用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

根据微软官网对CVE-2017-11885的描述,该漏洞几乎可以通杀微软的全版本操作系统,有关该漏洞的POC在exploit-db上于2018年5月份被披露,该POC仅仅针对windows server 2003进行了测试。

由于在相关描述中并没有获取到触发该漏洞的原因,因此在获取POC后,尝试对该漏洞进行复现并分析。

POC的关键代码如下:

如何进行微软漏洞CVE-2017-11885分析与利用作者已经对该POC做了较为详细的注释,从stub的布局以及注释来看,第41行的stub数据可能会被传入到CALL off_64389048[ECX*4]的ecx中,ecx如果是被控制的值,那么基本上可以直接在目标系统执行任意代码了。接下来搭建一个windows server2003系统,并尝试通过该POC触发漏洞。

该漏洞仅当操作系统开启了RRAS服务才会存在,在windows server2003中,通过管理工具->路由和远程访问进行配置,结果如下:

如何进行微软漏洞CVE-2017-11885分析与利用开启了RRAS服务后,在另一台主机执行POC,并抓包。发现使用了SMB协议进行数据传输,pcap包数据如下图:

如何进行微软漏洞CVE-2017-11885分析与利用随便打开一个包,发现是SMB协议并且通过445端口发送的数据,SMB协议后紧跟着DCERPC协议,对该协议的解释如下:

如何进行微软漏洞CVE-2017-11885分析与利用还是相对古老的协议,而微软的操作系统中的MSRPC协议是对DCERPC的一种实现,也算是第一代RPC协议。在这里简单介绍下RPC协议以及关键内容。

RPC 是指计算机 A 上的进程,调用另外一台计算机 B 上的进程,其中 A 上的调用进程被挂起,而 B 上的被调用进程开始执行,当值返回给 A 时,A 进程继续执行。A、B进程的交互过程如下图:

如何进行微软漏洞CVE-2017-11885分析与利用RPC应用程序的开发基于C/S模式,在windows环境下开发RPC所要实现的内容有:

1.IDL文件

2.ACF文件(可选)

3.客户端程序

4.服务端程序

IDL文件是接口描述文件,编写该文件所需的关键信息包含程序注册的uuid、函数调用接口以及参数的数据结构定义等。ACF文件可用来创建一些相对复杂的数据结构,这里不多关注。利用MIDL程序对IDL文件进行编译生成对应的客户端和服务端所需的头文件。客户端程序和服务端程序包含着关键调用函数的主体程序。其整个模式类似于我们通常的WINAPI调用,如我们调用ReadFile函数时,通常需要传递一部分参数,并得到一个返回值,在RPC编程中客户端程序负责参数的传递,服务端程序负责接收参数并执行相应的功能,随后将数据返回,整个过程对于开发人员是透明的,只不过是跨计算机的调用。RPC开发具体可参考微软的官方文档。

链接如下:https://docs.microsoft.com/en-us/windows/desktop/rpc/rpc-start-page

这里我们主要关注的内容包含RPC的协议传输方式、端点名称、以及具体的程序接口调用。该POC利用到了impacket这个库进行SMB以及rce协议的传输,POC中通过transport.DCERPCTransportFactory('ncacn_np:%s[\\pipe\\browser]' %的目标)进行远程命名管道的链接,其中使用到的rpc协议为ncacn_np,通用的rpc协议如下:

如何进行微软漏洞cve - 2017 - 11885分析与利用“>而且,SMB作为rpc的底层通信协议,一般都会135445年同这两个端口进行通信,一般的rpc漏洞挖掘工具如飙升等会通过特定端口查询rpc服务的名称数据库来获取一些关键信息,如下:</p> <p> <img src=如何进行微软漏洞cve - 2017 - 11885分析与利用