Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
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
opentsdb_key_cmd_injection — Ein Exploit für OpenTSDB <= 2.4.1 Befehlseinschleusung (CVE-2023-36812/CVE-2023-25826) geschrieben in Fortran | Kitploit
Tools/GitHubGitHub/erikwynter/opentsdb_key_cmd_injection
Payload-GenerierungSchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsCommand and ControlRed Teaming
GitHub

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
erikwynter/opentsdb_key_cmd_injection

opentsdb_key_cmd_injection

Ein Exploit für OpenTSDB <= 2.4.1 Befehlseinschleusung (CVE-2023-36812/CVE-2023-25826) geschrieben in Fortran

Repository anzeigen
717vor 3 JahrenNoch nicht geprüft
Teilen

opentsdb_key_cmd_injection

Ein Exploit für OpenTSDB <= 2.4.1 cmd injection (CVE-2023-36812/CVE-2023-25826) geschrieben in Fortran

Über

Dies ist ein Exploit für eine Befehlseinschleusungsschwachstelle (Command Injection) in OpenTSDB Version 2.4.1 und früher (CVE-2023-36812/CVE-2023-25826). Der Exploit ist in modernem Fortran geschrieben und nutzt die offizielle Fortran http-client library, die Anfang dieses Jahres erstellt wurde.

Details zur Schwachstelle

OpenTSDB ist eine Open-Source-Zeitreihendatenbank, die in Java geschrieben ist. Im Jahr 2020 wurde in den Versionen 2.4.0 und früher eine Befehlseinschleusungsschwachstelle entdeckt, die ausgenutzt werden konnte, um Remote-Code-Ausführung auf dem Host mit Root-Rechten zu erlangen. Da OpenTSDB keine Authentifizierung unterstützt, konnte diese als CVE-2020-35476 verfolgte Schwachstelle von jedem mit Zugriff auf die OpenTSDB-Weboberfläche ausgenutzt werden. Das Problem wurde in Version 2.4.1 behoben.

In diesem Jahr wurde festgestellt, dass der Patch für CVE-2020-35476 unvollständig war und eine Befehlseinschleusung in OpenTSDB 2.4.1 über mehrere Vektoren immer noch möglich ist.

Details:

  • Verfolgt als: CVE-2023-36812. Es ist erwähnenswert, dass CVE-2023-25826 tatsächlich dieselbe Schwachstelle zu beschreiben scheint und beide CVEs auf denselben Patch verweisen.
  • Sicherheitshinweis: https://github.com/OpenTSDB/opentsdb/security/advisories/GHSA-76f7-9v52-v2fw
  • Credit: Gal Goldstein und Daniel Abeles von Oxeye
  • Patch: Der Patch wird in 2.4.2 eingeführt, was noch keine offizielle Veröffentlichung ist. Zum Zeitpunkt der Erstellung dieses Textes ist die aktuellste OpenTSDB Release 2.4.1, daher ist es wahrscheinlich, dass die meisten OpenTSDB-Instanzen in der Produktion anfällig sind. Allerdings betont das OpenTSDB FAQ, dass dieses Projekt "nur für die interne Nutzung geschrieben wurde" und "keiner Sicherheitsprüfung unterzogen wurde und keine Authentifizierung enthält".

Warum Fortran?

Die Kurzversion ist, dass ich diese Unterhaltung sah: Warum?

Die Idee, einen Exploit in der Programmiersprache zu schreiben, mit der Menschen auf den Mond gebracht wurden, faszinierte mich so sehr, dass ich es selbst ausprobieren musste. Dieser Exploit ist das Ergebnis dieses Experiments. Auf die Frage, ob es erfolgreich war, kann ich nur mit diesen weisen, aber verfluchten Worten antworten, die alle Entwickler in Blut verbinden: Es funktioniert auf meinem Rechner. ¯\(ツ)/¯

Wie auch immer, meine wichtigsten Erkenntnisse aus diesem Projekt sind:

  • Fortran ist eigentlich ziemlich cool und überraschend leicht zu lernen.
  • Das moderne Fortran-Ökosystem, einschließlich des fpm Paketmanagers, zeigt großes Potenzial.
  • Fortran ist eine stark typisierte Sprache, und ich fand das gut, weil ich auf wenige böse Laufzeitfehler gestoßen bin.
  • Fortran-Projekte mit Abhängigkeiten sind groß, weil fpm den Quellcode der Abhängigkeiten direkt in Ihr Projekt einbindet. Der Vorteil ist, dass Systemverschmutzung vermieden wird.
  • Die Bibliotheksunterstützung ist im Vergleich zu modernen Sprachen relativ begrenzt und chaotisch. Leider betrifft das nicht nur die http-client-Bibliothek.
  • Es ist nicht überraschend, dass gute Dokumentation und Tipps zur Fehlerbehebung schwerer zu finden sind als bei den meisten modernen Programmiersprachen, obwohl es noch einige nützliche Beiträge auf StackOverflow und längst vergessenen Foren aus den frühen 2000ern gibt.
  • KI-Tools wie ChatGPT und GitHub Copilot sind noch unzuverlässigere Programmierpartner als bei modernen Sprachen.

Alles in allem ist es nicht leicht vorstellbar, dass diese Sprache wirklich an Bedeutung in der Offensivsicherheit gewinnt, schon allein, weil es so viele solide, moderne Alternativen für jeden erdenklichen Anwendungsfall gibt (Python, Go, Rust, Ruby, C# um nur einige zu nennen). Aber wenn Sie gerne mit verschiedenen Programmiersprachen experimentieren und nichts dagegen haben, Ihre Strings ständig in trim()-Aufrufe zu verpacken (BITTE BEACHTEN SIE DAS, ES WIRD IHNEN SO VIEL LEID ERSAREN), dann ist Fortran auf jeden Fall einen Blick wert. Ich drücke dieser Sprache jetzt unironisch die Daumen und werde sie vielleicht wieder besuchen, wenn sie weiterhin Unterstützung für die http-client-Bibliothek hinzufügen, insbesondere wenn sie irgendwann eine http-server-Bibliothek hinzufügen.

TL;DR: Fortran http-client lib geht brr.

Verwendung

  • Starten Sie einen Listener auf Ihrem System, z.B.:
nc -nlvp 1337
  • Öffnen Sie ein separates Fenster und navigieren Sie zum Verzeichnis opentsdb_key_cmd_injection
# cd /path/to/opentsdb_key_cmd_injection/
  • Führen Sie das Projekt über fpm aus (stellen Sie sicher, dass es zuerst installiert ist. Siehe Installationsanweisungen im nächsten Abschnitt)
# /path/to/fpm run -- -t <target_url> -l <lhost> -p <lport> [-v]

Optionen:

  • -t - ZIEL-URL: die Basis-URL zu OpenTSDB (erforderlich)
  • -l - LHOST: die IP des Systems, auf dem Sie einen Listener betreiben (erforderlich)
  • -p - LPORT: der Listener-Port (erforderlich)
  • -v - VERBOSE: aktiviert detaillierte Ausgabe (optional)

Installation

  • Installieren Sie gfortran. Auf Debian-basierten Systemen kann dies wie folgt geschehen:
apt install gfortran
  • Installieren Sie fpm. Der einfachste Weg ist, eine Binärdatei für die neueste stabile Version von den fpm Releases auf GitHub herunterzuladen und dann ausführbar zu machen:
chmod +x /<path>/to/fpm

Stellen Sie sicher, dass git auf Ihrem System installiert ist, bevor Sie fpm installieren.

Poc || GTFO

https://github.com/ErikWynter/opentsdb_key_cmd_injection/assets/55885619/223e813e-9710-4193-98a1-ded2246567bf

Einrichten einer OpenTSDB-Instanz zum Testen

Manuelle Installation (nicht empfohlen)

Für eine manuelle Installation können Sie den offiziellen Installationsanweisungen hier folgen. Dies kann jedoch ärgerlich sein, daher empfehle ich die Verwendung von Docker.

Docker-Installation (empfohlen)

Für Version 2.4.0 können Sie das vulnhub Docker-Image verwenden und den Installationsanweisungen hier folgen. Dieses Image wurde für CVE-2020-35476 erstellt, eine ältere Schwachstelle in OpenTSDB bis einschließlich 2.4.0.

Für Version 2.4.1 und wahrscheinlich jede andere Version können Sie das vulhub-Image für OpenTSDB 2.4.0 verwenden und es bearbeiten, um die gewünschte Version zu installieren. Ich bin diesen Ansatz für 2.4.1 gefolgt und es hat großartig funktioniert.

  • Holen Sie sich zunächst die Dockerfile- und docker-entrypoint.sh-Dateien von vulhub OpenTSDB 2.4.0 von hier und speichern Sie sie in einem eigenen Verzeichnis.
  • Ersetzen Sie in der Dockerfile alle Vorkommen von 2.4.0 durch Ihre gewünschte Version, z.B. 2.4.1
  • Für docker-entrypoint.sh sind keine Änderungen erforderlich.
  • Erstellen Sie eine docker-compose.yml-Datei mit folgendem Inhalt:
version: '2'
services:
 opentsdb:
   build: ./path-to-your-dockerfile-directory
   ports:
    - "4242:4242"

Ich habe diese Dateistruktur verwendet:

wynter@wynter-pc:~/dev/opentsdb$ ls -lR
.:
total 8
-rw-rw-r-- 1 wynter wynter   86 Sep  1 10:55 docker-compose.yml
drwxrwxr-x 2 wynter wynter 4096 Sep  1 10:54 docker_file
Tool herunterladen