首发于我的新博客:
https://www.giantbranch.cn/2019/05/15/CVE-2019-0708%20%E5%BE%AE%E8%BD%AF%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2%E6%9C%8D%E5%8A%A1%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90%E4%B9%8B%E8%A1%A5%E4%B8%81%E5%88%86%E6%9E%90/
2019.09.30——更新:本分析最后对于漏洞的判断有误,漏洞是UAF漏洞,所以更新了一篇文章,具体请看:
CVE-2019-0708 微软远程桌面服务远程代码执行漏洞之漏洞分析与漏洞利用
声明:分析只是个人观点,可能关注的点并不对,分析的可能有问题 仅供参考
5月14日,微软发了这个漏洞的补丁。
不废话直接补丁对比,看看啥情况,安装完是termdd.sys这个驱动更新了,应该是这个的问题
上神器对比,可以看到改了两处——IcaRebindVirtualChannels和IcaBindVirtualChannels
在点开最后一个看看,加了一个strcmp
看伪代码好看点
可以看到重点应该在MS_T120这个名字的Channel,假如是这个Channel,那么strcmp返回0
最后调用的是_IcaBindChannel(v5, 5, 31, v7);
可以看到这个直接将第3个参数写死了——31
我们跟进函数看看,假如第3的参数可控,那么就能达到越界写的效果,所以微软直接将参数写死为31了
由于对rdp不太熟悉,能力也不足,构造poc这事暂时是干不了,也就写到这了。
而且其实另外一个函数IcaBindVirtualChannels也是这么修改的
声明
以上分析只是个人观点,可能关注的点并不对,仅供参考