
Dieses Repository enthält einen einfachen PoC für CVE-2026-55168 in Runtipi.
Das Problem ist ein authentifiziertes arbiträres Dateischreiben, das über den Backup-Wiederherstellungsablauf erreicht werden kann. Ein präpariertes Backup-Archiv kann einen Symlink in wiederhergestellte Anwendungsdaten einpflanzen, und ein späteres normales Konfigurationsupdate folgt diesem Symlink und schreibt Angreifer-kontrollierten Inhalt außerhalb des vorgesehenen Verzeichnisses.
Referenz-Advisory:
Betroffene Versionen:
<= 4.10.0Der PoC meldet sich bei Runtipi an, erstellt ein schädliches Backup-Archiv im Speicher, lädt es hoch, löst die Wiederherstellung aus und sendet dann eine reguläre user-config-Update-Anfrage.
Das Wiederherstellungs-Payload pflanzt diesen Symlink:
user-config/app.env -> /data/state/proof.txt
Danach führt die normale Anfrage zum Aktualisieren der App-Konfiguration dazu, dass Runtipi den bereitgestellten Inhalt in Folgendes schreibt:
/data/state/proof.txt
Der wichtige Teil ist also nicht nur die Persistenz des Symlinks während der Wiederherstellung, sondern die Tatsache, dass ein späterer legitimer Schreibvorgang dem eingepflanzten Symlink folgt.
poc.py — End-to-End-Python-PoCpython poc.py \
--base-url http://127.0.0.1:3001 \
--username YOUR_USERNAME \
--password YOUR_PASSWORD \
--app-urn demoapp3:_user \
--target-path /data/state/proof.txt \
--write-content PWNED_FROM_USERCFG_WRITE
Wenn du möchtest, kannst du das erzeugte Archiv auch lokal speichern:
python poc.py \
--base-url http://127.0.0.1:3001 \
--username YOUR_USERNAME \
--password YOUR_PASSWORD \
--output payload.tar.gz
Wenn das Ziel verwundbar ist, wird das Skript erfolgreich abgeschlossen und gibt ein kleines JSON-Ergebnis mit status: "ok" aus.
Dieser PoC wird zu Forschungs- und Reproduktionszwecken bereitgestellt.