
CraftCMS hat eine RCE-Schwachstelle über relationale Bedingungen im Control Panel
CVE-2026-31857 ist eine Remote-Code-Execution-Schwachstelle in den relationalen Bedingungsregeln von Craft CMS. BaseElementSelectConditionRule::getElementIds() rendert benutzergesteuerte Eingaben als unsandboxed Twig-Template. Ein authentifizierter Control-Panel-Benutzer kann über einen Element-Listing-Endpunkt eine manipulierte Bedingung übermitteln und Befehle auf dem Server ausführen. Administratorrechte sind nicht erforderlich.
Betroffen sind Craft CMS 4.0.0-beta.1 bis 4.17.3 und 5.0.0-RC1 bis 5.9.8. Dieser PoC verwendet die Request-Form des Craft-5-Element-Index.
Erforderlich ist Python 3 mit ausschließlich der Standardbibliothek. Geben Sie die Basis-URL und einen Control-Panel-Benutzernamen an; das Skript fordert zur Eingabe des Passworts auf:
python3 poc.py https://craft.example editor
Geben Sie Befehle bei cmd> ein oder geben Sie exit ein, um zu beenden. Das aktuelle Arbeitsverzeichnis bleibt zwischen den Befehlen erhalten. Um einen lang laufenden Befehl zu starten, beenden Sie ihn mit &; seine Eingabe und Ausgabe sind von der HTTP-Anfrage entkoppelt und seine Ausgabe wird verworfen. Die über den Response-Header zurückgegebene Befehlsausgabe ist auf die letzten 1200 Bytes begrenzt.