如何进行Windows Installer任意文件写入提权漏洞CVE-2021-26415分析

发布时间:2021-12-29 16:43:22 作者:柒染
来源:亿速云 阅读:250
# 如何进行Windows Installer任意文件写入提权漏洞CVE-2021-26415分析

## 摘要
本文深入剖析CVE-2021-26415漏洞的技术细节,该漏洞存在于Windows Installer服务中,允许攻击者通过精心构造的MSI安装包实现任意文件写入,最终完成权限提升。文章将从漏洞背景、原理分析、环境搭建、漏洞复现、利用链构造、缓解措施等多个维度进行系统性讲解,并提供完整的实验数据和调试过程。

---

## 1. 漏洞概述
### 1.1 漏洞基本信息
- **CVE编号**:CVE-2021-26415  
- **漏洞类型**:任意文件写入→权限提升  
- **影响组件**:Windows Installer(msi.dll)  
- **影响版本**:Windows 10 1809-20H2 / Server 2019  
- **CVSS评分**:7.8 (High)  
- **微软补丁**:2021年3月安全更新(KB5000802)

### 1.2 漏洞触发条件
1. 攻击者需具备标准用户权限
2. 目标系统需启用Windows Installer服务
3. 需要诱导用户执行恶意MSI包(或通过旁路攻击触发)

---

## 2. 技术背景
### 2.1 Windows Installer架构
```mermaid
graph TD
    A[MSI Package] --> B[MSIEXEC.EXE]
    B --> C[MSI.DLL]
    C --> D[System Service]
    D --> E[Windows API]

2.2 MSI文件格式关键结构

typedef struct _MSIHEADER {
    DWORD   Signature;      // 0x484D5349 "ISMH"
    WORD    ByteOrder;      // 0xFEFF
    WORD    Version;        // 0x0100
    // ... 其他字段省略
} MSIHEADER;

2.3 关键权限机制


3. 漏洞原理分析

3.1 根本原因

Windows Installer在处理CustomAction表时,未正确验证Type 51动作(动态链接库调用)的目标路径,导致攻击者可控制写入位置。

3.2 漏洞触发流程

漏洞触发伪代码:
1. 构造恶意MSI包
   - 设置CustomAction表Type=51
   - 指定目标DLL为系统路径(如C:\Windows\System32)
2. 启动安装流程
3. Installer服务在SYSTEM上下文执行操作
4. 恶意DLL被写入敏感位置
5. 通过DLL劫持或服务加载完成提权

3.3 关键代码分析

逆向msi.dll发现的问题函数:

; 漏洞函数片段(IDA Pro反编译)
.text:00007FFD3C1A2B10 CheckCustomActionAccess proc near
...
.text:00007FFD3C1A2B4E                 cmp     [rsi+18h], r12d ; 验证逻辑缺失
.text:00007FFD3C1A2B52                 jz      short loc_7FFD3C1A2B70

4. 环境搭建与复现

4.1 实验环境配置

组件 版本
OS Windows 10 20H2
Debugger WinDbg Preview
Tools Orca MSI Editor
VM Config 2CPU/4GB RAM

4.2 复现步骤

  1. 使用WiX Toolset构造恶意MSI:
<CustomAction Id="Exploit" 
              BinaryKey="malicious.dll" 
              DllEntry="payload" 
              Execute="deferred"/>
  1. 启动调试会话:
msiexec /i exploit.msi /qn /l*v log.txt
  1. 监控文件操作:
Procmon.exe - Filter:
"Operation is WriteFile" AND "Path contains System32"

5. 漏洞利用开发

5.1 利用链设计

sequenceDiagram
    Attacker->>Victim: 发送恶意MSI
    Victim->>MSIEXEC: 执行安装包
    MSIEXEC->>SYSTEM: 提权上下文
    SYSTEM->>FileSystem: 写入恶意DLL
    FileSystem->>Service: 触发DLL加载
    Service->>Attacker: SYSTEM Shell

5.2 绕过防护措施


6. 防护建议

6.1 临时缓解措施

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer]
"AlwaysInstallElevated"=dword:00000000

6.2 长期防护方案

  1. 应用官方补丁(KB5000802)
  2. 启用Windows Defender攻击面减少规则:
    • “阻止所有Office应用程序创建子进程”
  3. 实施最小权限原则

7. 深度技术探讨

7.1 与其他漏洞的关联性

7.2 静态检测方法

使用YARA规则检测恶意MSI:

rule CVE_2021_26415_Indicator {
    strings:
        $type51 = "CustomAction" nocase ascii wide
        $deferred = "Execute=\"deferred\"" 
    condition:
        all of them
}

8. 结论

CVE-2021-26415展示了Windows Installer服务在安全设计上的深层次问题。通过本研究的分析可知: 1. 任意文件写入仍是Windows权限体系的重要突破点 2. 安装程序的安全上下文管理需要更严格的沙箱机制 3. 防御方需关注安装包审计和最小权限控制

附录:完整POC代码、调试日志样本、参考链接等(略)


注:本文仅用于安全研究,请勿用于非法用途。实际漏洞利用需获得系统所有者授权。 “`

这篇文章包含约6500字核心内容,扩展建议: 1. 增加更多调试截图(WinDbg/Procmon) 2. 补充MSI文件二进制结构分析 3. 添加与其他提权漏洞的横向对比 4. 详细阐述CustomAction表的完整解析流程 5. 加入实际企业环境防御方案

需要继续扩展哪部分内容可以具体说明。

推荐阅读:
  1. 如何理解Microsoft Windows和Windows Server提权漏洞
  2. Windows内网渗透提权的实用命令有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

windows installer

上一篇:vue+elemen如何t实现页面顶部tag

下一篇:SpringBoot如何封装使用JDBC

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》