研究人员在 Black Hat Asia 2021 大会上分享了针对微软 IIS 和 SQL 服务器的新攻击面。
Unit 42 在 Black Hat Asia 2021 上分享了关于攻击微软 IIS 和 SQL 服务器的新攻击面。在演讲中,研究人员介绍了一种在 IIS 和 SQL 服务器上的远程数据库通过 SQL 注入等场景来执行 SQL 查询的新技术。攻击者利用该技术和微软 Jet 数据库引擎的漏洞可以远程攻击 IIS 和 SQL 服务器来获取 system 权限。
攻击面
研究人员发现的新的攻击面是由微软 Jet 数据库引擎支持的远程数据库访问引起的,包括 Jet Red 数据库引擎和访问连接引擎 ACE。该特征被攻击者误用或滥用就可以在远程攻击者控制的服务器上对完全控制的数据库文件执行 SQL 查询。一旦远程合法数据库文件被伪造的数据库文件替换,再执行 SQL 查询就会打破微软 Jet/ACE 的代码预制条件和假设,引发 Jet 组件安全漏洞。
典型的攻击场景是 SQL 注入和 ad hoc。在这两个攻击场景中,攻击者可以在 IIS 和 SQL 服务器上伪造的数据库上执行任意 SQL 查询。引发的 Jet 漏洞会影响 IIS 和 SQL 服务器。具体来说,用户在表上执行 SQL 查询时可以在 Jet 的表前加上数据库路径来分配一个远程数据库,如图 1 所示:
图 1. Access 和 SQL 服务器中的远程数据库访问 SQL
在微软 Jet 和 ACE 中,调用 CreateFile 会打开 IIS 和 SQL 服务器中的远程数据库文件。远程数据库的输入路径是 UNC 路径,所以 SMB 和 WebDAV 会被用来打开远程数据库,如图 2 所示:
图 2. IIS 和 SQL 服务器中的隐藏特征
SQL 注入和 ad hoc 是 2 个潜在的攻击场景。类似地,IIS 和 SQL 服务器只是 2 个潜在的受害者。Windows 中所有支持 Jet 和 ACE 的组件都可能受到该漏洞的影响,因为组件允许用户在可控制的数据库上执行任意查询。
IIS 和 SQL 服务器漏洞
远程数据库访问是的攻击者可以用伪造的数据库来替换合法的数据库文件。研究人员分析发现,替换数据库是找出微软 Jet 和 ACE 中漏洞的关键。研究人员通过模糊策略在微软 Jet 和 ACE 中发现了约 100 个安全漏洞,如图 3 所示。大多数漏洞可以用来攻击 IIS 和 SQL 服务器。
图 3. 约 100 个 Jet 漏洞
研究人员证明了数据库文件的一字节修改可以引发 Jet 安全漏洞,如图 4 所示:
图 4. 数据库一字节修改引发安全漏洞
微软补丁
微软对该漏洞分配了 CVE 编号 CVE-2021-28455。2021 年 5 月,微软发布了该漏洞的安全补丁,补丁为用户提供了禁用 Jet 组件和 ACE 组件的远程数据库访问选项。补丁不仅仅是修复单个 JET 漏洞,而且还缓解了整个使用 Jet 组件的应用的攻击面。
详细修复步骤参见:https://unit42.paloaltonetworks.com/iis-and-sql-server/
结论
IIS 和 SQL 服务器是微软生态系统中的基础组件,广泛应用于各种生产系统和服务中。微软 Jet 数据库引擎已经有超过 20 年的历史,大多数的组件被发现存在安全漏洞,并且容易被利用。远程数据库访问特征连接了 Jet 漏洞和 IIS、SQL 服务器组件。攻击者可以利用这一特征来攻击 IIS 和 SQL 服务器,并通过 SQL 注入来远程获取 system 权限。