CVE-2022-44666 Windows Contact漏洞钓鱼利用分析
2023-8-4 11:0:8 Author: www.freebuf.com(查看原文) 阅读量:15 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Windows Contact是一种文件类型,用于存储和管理Windows操作系统中的联系人信息。它是一种通用的联系人数据格式,包含个人或组织的姓名、地址、电话号码、电子邮件地址等联系信息。

此漏洞早在19年就公开发布过0day公告,Windows在处理 Contact 文件时存在特定缺陷,在联系人文件中构建的数据可能会导致 Windows 显示危险的超链接。用户界面无法提供足够的危险指示,攻击者可以利用此漏洞在当前用户的上下文中执行代码。

2022年12月13日,微软针对该漏洞发布了补丁,但是该补丁仍然能够被绕过,影响范围包括最新的Windows系统版本,攻击者通过社会工程学手法诱导用户交互,将导致目标主机失陷。

首先对公开poc进行分析,发现其在syslink控件中,直接调用了payload.lnk文件,

由于其是个进程创建事件,为了方便定位漏洞位置,直接上调试器,在进程创建函数也就是在SHELL32!ShellExecuteExW中下断点,定位堆栈如下。

可以看出进程创建发生在wab32.dll中的SafeExecute函数中。

分析函数功能,函数首先判断URL是否为本地文件(通过UrlIsW函数),如果是,则调用AESAttemptExecute尝试以管理员权限运行文件并返回执行结果;否则,使用ShellExecuteExW函数打开URL对应的应用程序(如果在系统中没有找到该应用程序,则返回错误代码),并返回执行结果。在microsoft文档中对其也有解释,

所以该函数本质上就是提供了执行程序的功能,只是对href中的值没有做足够的过滤,导致其可以执行我们的自定义程序,而这也为我们后续提供其绕过过滤带来了可能性。

对补丁进行diff,发现主要在fnSummaryProc→SafeExecute函数的路径上添加了判断,现在在调用SafeExecute前,会判断href字段是否是网络地址,如果不是,则进入IsInternetAddress函数判断地址是否合法后调用SafeExecute。

可能是为了兼容其他协议,IsInternetAddress这里在判断字段中如果存在@,则调


文章来源: https://www.freebuf.com/articles/network/373880.html
如有侵权请联系:admin#unsafe.sh