0xbinder/CVE-2026-0073

GitHub: 0xbinder/CVE-2026-0073

自动化利用CVE-2026-0073漏洞,绕过Android ADB TLS认证以获取远程shell。

Stars: 17 | Forks: 2

# ADB TLS 认证绕过漏洞利用 (CVE-2026-0073) 这是一个针对 **CVE-2026-0073** 的自动化网络扫描与漏洞利用工具。该漏洞存在于 Android Debug Bridge 守护进程 (`adbd`) 中,允许通过无线调试进行未经验证的远程代码执行 (RCE) 并获取交互式 shell 访问权限。 本工具专为现代 Android 设备 (Android 13+) 优化,具备 **mDNS 自动发现**功能以定位随机化的 ADB 端口,并提供 **完全交互式的原始 PTY shell**。 🚨 漏洞摘要 (Android 安全公告) ``` CVE ID: CVE-2026-0073 Android Issue ID: A-469080888 Impact: RCE (Remote Code Execution) Severity: Critical Officially Affected Versions: Android 14, 15, 16, 16-qpr2 ........ some claimed some android 13 devices are vulnerable ``` ⚠️ **免责声明:** *本工具仅用于教育目的与授权的安全研究。请勿用于扫描或测试您未拥有或未获明确授权的网络或设备。* ## 📖 背景与参考 现代 Android 设备在无线调试中使用 TLS 双向认证来防止未授权连接。然而,CVE-2026-0073 暴露了一个加密缺陷:当 `adbd` 处理客户端证书使用非 RSA 密钥(如椭圆曲线 `ec` 或 `ed25519`)时,内部的 OpenSSL `EVP_PKEY_cmp` 函数会返回一个错误码,而此错误码被不当处理,从而实质上**完全绕过了认证检查**。 关于此漏洞的进一步阅读和深入技术分析,请查看以下资源: * **漏洞深入分析:** [Barghest - CVE-2026-0073 ADB TLS 认证绕过](https://barghest.asia/blog/cve-2026-0073-adb-tls-auth-bypass/) * **真实世界利用:** [Mobile Hacker - 通过无线调试进行 Android RCE:从网络访问到 Shell](https://www.mobile-hacker.com/2026/05/12/android-rce-via-wireless-debugging-from-network-access-to-shell/) ## ⚙️ 前置条件 1. **Python 3.7+** 2. **OpenSSL** 已安装并在系统 `PATH` 中可用。 3. 安装 `zeroconf` Python 库(用于网络扫描)。 ``` # 安装所需的 Python 包 pip install zeroconf ``` ## 🚀 使用方法 ### 1. 自动模式(推荐) 直接运行脚本,不带任何参数。它将监听本地网络 4 秒,捕获任何启用了无线调试的 Android 设备的 mDNS 广播,并向您展示一个菜单。 ``` python3 adb_tls_exploit.py ``` **示例输出:** ``` [*] Scanning local network for Android 13+ devices for 4 seconds... [+] Found active Android devices: [1] 192.168.1.15 : 43881 | Pixel 7 [2] 192.168.1.42 : 39105 | Oppo Reno5 Z Select a device to target [1-2]: 2 ============================================================ ADB TLS Auth Bypass -> Interactive Shell ============================================================ [*] Target : 192.168.1.42:39105 [*] Key type : ec [*] Generating ec self-signed certificate via openssl... [+] Server requested STLS. Upgrading to TLS... [+] TLS handshake accepted — mutual authentication bypassed! [*] Authenticated! Opening interactive shell service... [+] Shell obtained! (Press Ctrl+D to exit) Reno5Z:/ $ id uid=2000(shell) gid=2000(shell) groups=2000(shell),1004(input),1007(log),1011(adb)... ``` ### 2. 手动模式 如果您已知道目标 IP 和随机化端口(或者您针对的是运行在 `5555` 端口、已修补为需要 TLS 的旧设备),可以绕过扫描器: ``` python3 adb_tls_exploit.py [--key ec|ed25519] [--verbose] # 示例 python3 adb_tls_exploit.py 192.168.1.50 42069 --key ec ``` ## 🛠️ 工作原理(底层机制) 1. **mDNS 侦察阶段:** 脚本利用 `zeroconf` 库被动监听 `_adb-tls-connect._tcp.local.` 服务。这允许它即时映射目标,而无需进行嘈杂或缓慢的 TCP 端口扫描。 2. **明文握手:** 脚本连接到目标端口,并发送一个标准的 ADB `CNXN` 数据包,声明支持 TLS (`tls_auth`)。 3. **STLS 升级:** Android 设备响应 `STLS`,强制要求建立安全连接。 4. **漏洞利用(TLS 握手):** 脚本将套接字封装在 TLS 中,并使用椭圆曲线 (`ec`) 或 `ed25519` 密钥出示一个新生成的自签名证书。 5. **认证绕过:** `adbd` 尝试验证密钥。由于密钥不是 RSA,`EVP_PKEY_cmp` 返回 `-1` 或 `-2`。Android 内部存在漏洞的代码将此非零返回值误解为成功的密码学匹配。 6. **流多路复用:** 一旦 TLS 隧道建立,工具发送一个目标为 `shell\x00` 的 `OPEN` 数据包,并将标准输入/输出流连接到您的终端,为您提供一个完整的、非特权的 shell (`uid=2000`)。 ## ⚠️ 故障排除 * **"[-] TLS 握手被拒绝" 或 "certificate_unknown" 警报:** * 该设备可能已针对 CVE-2026-0073 进行了修补(安全补丁级别 >= 2026年5月)。 * 该设备*从未*与授权的 PC 配对过,意味着其 `/data/misc/adb/adb_keys` 文件完全是空的。该漏洞利用至少需要一个现有(即使是无关的)密钥在密钥库中才能触发有缺陷的循环比较。 * **"OpenSSL 失败" / "确保已安装 'openssl'":** * 您需要在主机系统上安装 OpenSSL 二进制文件(例如,`apt install openssl`, `brew install openssl`,或通过 Windows 二进制文件安装)。 * **扫描器未发现任何设备:** * 确保攻击机与 Android 设备处于完全相同的 Wi-Fi 子网中,并且 AP 隔离已禁用。
标签:ADB漏洞, Android安全, CISA项目, CVE-2026-0073, exploit, mDNS扫描, OpenSSL, PTY shell, RCE, TLS漏洞, XXE攻击, Zeroconf, 云存储安全, 交互式shell, 安全测试工具, 插件系统, 无线调试, 目录枚举, 移动安全, 编程工具, 网络安全, 网络扫描, 认证绕过, 远程代码执行, 逆向工具, 隐私保护