网站导航

新闻资讯

当前位置:首页 > 新闻资讯

Windows Event Viewer事件查看器一个有趣的.NET反序列化问题

发布时间:2022-04-28

简要描述:

问题概述近日Orange发布Windows Event Viewer事件查看器存在一个不安全的反序列化隐患:虽然不会带来直接的安全问题,但是可以尝试用来实现Defender bypass或者UAC bypass。问...

详细介绍

问题概述

近日Orange发布Windows Event Viewer事件查看器存在一个不安全的反序列化隐患:

虽然不会带来直接的安全问题,但是可以尝试用来实现Defender bypass或者UAC bypass。

问题分析

Windows Event Viewer通过`mmc.exe`进行启动:

运行启动相关的.NET组件如下:

`mmc.exe`是系统管理程序的一个框架程序,全称是Microsoft Management Console,它提供给扩展名为msc的管理程序一个运行的平台。查看`eventvwr.msc`:

当`mmc.exe`启动时,将会加载`Microsoft.EventViewer.SnapIn.FormView`等.NET控件并调用`OnShow`函数:


进入`OnFormShow`,将提取`MMCEventsNode`,并尝试更新`views`:


进入`UpdateRecentViews`函数:


当`isRecentViewsDataLoaded`为`False`时,将调用`LoadDataForRecentViews`函数进行数据加载:


进入`LoadMostRecentViewsDataFromFile`函数:


反序列化内容来自于文件`EventsNode.recentViewsFile`,路径取值如下:


文件位置为`\AppData\Local\Microsoft\Event Viewer\RecentViews`。接着直接调用`BinaryFormatter`进行反序列化操作,当`RecentViews`内容可控时,存在RCE的风险。

复现过程

利用`ysoserial.exe`生成反序列化载荷并替换`RecentViews`文件,然后重启Windows Event Viewer触发RCE:

小结

通过替换`RecentViews`文件,当启动Windows Event Viewer时,将会触发RCE。虽然对Windows Event Viewer不会直接造成影响,但是为Defender或UAC bypass提供了一个新的选择。另外因为调用`LoadMostRecentViewsDataFromFile`函数来触发`BinaryFormatter`反序列化操作的前提是`isRecentViewsDataLoaded`为`False`,而在Windows Event Viewer完成第一次加载后,`isRecentViewsDataLoaded`会自动赋值为`True`:


所以通过刷新操作无法第二次触发RCE。

由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。

 


推荐产品

如果您有任何问题,请跟我们联系!

联系我们

Copyright © 武汉网盾科技有限公司 版权所有 备案号:鄂ICP备2023003462号-5

地址:武汉市东湖高新区光谷大道光谷世贸中心A栋23楼

在线客服 联系方式 二维码

服务热线

18696195380/18672920250

扫一扫,关注我们

关闭