
Nutzt eine Zabbix-SQL-Injection (CVE-2024-42327) aus, um die Admin-Sitzung zu extrahieren und über die API Befehle auszuführen, wodurch eine Reverse Shell erreicht wird.
_______ ________ ___ ____ ___ __ __ __ __ ___ ________ _____
/ ____/ | / / ____/ |__ \ / __ \__ \/ // / / // /|__ \|__ /__ \/__ /
/ / | | / / __/________/ // / / /_/ / // /_______/ // /___/ / /_ <__/ / / /
/ /___ | |/ / /__/_____/ __// /_/ / __/__ __/_____/__ __/ __/___/ / __/ / /
\____/ |___/_____/ /____/\____/____/ /_/ /_/ /____/____/____/ /_/
NSFOCUS CERT hat erkannt, dass Zabbix ein Sicherheitsbulletin veröffentlicht und die SQL-Injection-Schwachstelle (CVE-2024-42327) des Zabbix-Servers behoben hat. Aufgrund der SQLi-Schwachstelle in der CUser-Klasse in der Funktion addRelatedObjects können Angreifer mit Standard-Benutzerrechten oder API-Zugriff die Funktion CUser.get aufrufen. Dies kann zu unbefugtem Zugriff auf sensible Informationen oder zur Ausführung beliebiger SQL-Anweisungen führen. Der CVSS-Score beträgt 9.9.
Dieser PoC nutzt diese SQL-Injection-Schwachstelle aus. Für den zeitbasierten SQL-Injection-Ansatz müssen wir die sessions-Tabelle aus der Datenbank extrahieren, um festzustellen, ob der Admin-Benutzer angemeldet ist. Dieses Skript bietet ein multithreaded Skript, um die Extraktion der Admin-Sitzung für die weitere Ausnutzung zu beschleunigen. Mit dem API-Token des Admin-Benutzers erstellen wir ein Item und können dieses Item dann auslösen. Anschließend erhalten wir eine Reverse Shell, indem wir einen Payload senden.
Zusammenfassend extrahiert dieses Tool die Admin-Sitzungs-ID (admin_session) mittels zeitbasierter SQL-Injection über die Zabbix-API und sendet dann einen Reverse-Shell-Befehl an das Zielsystem unter Verwendung dieser ID. Zunächst empfängt das Skript die Anmeldedaten des Benutzers, sendet eine Authentifizierungsanfrage an die Zabbix-API und erhält auth_token. Danach extrahiert es die admin_session-ID mittels SQL-Injection. Die extrahierte admin_session-ID wird verwendet, um die Host- und Interface-IDs mit der host.get-Anfrage an die Zabbix-API abzurufen. Schließlich wird eine item.create-Anfrage mit dem Reverse-Shell-Befehl zusammen mit den erhaltenen Host- und Interface-IDs gesendet. Auf diese Weise wird eine Reverse Shell auf dem Zielserver geöffnet und eine Verbindung hergestellt.
