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
practice-22-23 — CVE-2017-9608-Analyse | Kitploit
Tools/GitHubGitHub/lacinquette/practice-22-23
Container-SicherheitSchwachstellenanalyseExploitationFuzzingBinäranalyseLernen & Bildung
GitHublacinquette/practice-22-23

practice-22-23

CVE-2017-9608-Analyse

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

Projekt

Zum Starten: ./script.sh

Repository auf GitHub - https://github.com/LaCinquette/practice-22-23

Durchführung

  1. Für die Suche nach einer Schwachstelle habe ich das Projekt FFmpeg ausgewählt. Ich fand darin einen Commit, der den Anforderungen entsprach, nämlich:

    • Entsprach dem Typ CWE-476 - Dereferenzierung eines Nullzeigers
  2. Erstellte eine Dockerfile, in der:

    1. Wählte als Basis-Image Ubuntu 22.04
    2. Setzte DEBIAN_FRONTEND=nointeractive um Interaktionen mit der Befehlszeile während der Installation von Paketen und anderen Befehlen auszuschließen
    3. Installierte die notwendigen Abhängigkeiten, die im offiziellen Wiki angegeben sind
    4. Bereite den Arbeitsbereich vor (Ordner workdir)
    5. Lade den Commit mit der noch nicht behobenen Schwachstelle herunter, entpacke und verschiebe ihn in den Arbeitsbereich
    6. Starte den Build des Programms mit dem Dienstprogramm make
    7. Erstelle ein Skript copy_out.sh, das die benötigte Objektdatei mit dem Fehler sucht und in das Verzeichnis workspace/out kopiert
    8. Hinterlasse eine Anweisung zur Ausführung des Skripts copy_out.sh, die beim Start des Containers ausgeführt werden soll
  3. Zur Automatisierung erstelle ich ein Skript script.sh, das das Image erstellt und den Container startet, aus dem dann die Datei geholt und in das aktuelle Verzeichnis verschoben wird:

    1. Lösche den aktuellen Ordner out (falls vorhanden)
    2. Baue das Image mit dem Namen ffmpeg_image
    3. Starte einen Container auf Basis des erstellten Images, in dem ich die folgenden Parameter übergebe:
      • --rm zur automatischen Entfernung des Containers nach Beendigung
      • -v $PWD/out:/workspace/out zum Einbinden eines temporären Verzeichnisses, über das die Objektdatei an den Host übergeben wird
    4. Kopiere die benötigte Datei aus dem Ordner out
    5. Lösche den Ordner out

Analyse der Schwachstelle

Quellen:

  • Commit mit dem behobenen Fehler
  • Seite auf GitHub über die Schwachstelle
  • Brief des Sicherheitsforschers über die Schwachstelle

Analyse:

Problem:

  1. Mit dem Befehl ffmpeg -c:v dnxhd -i poc.mov -y output.ts wird der Anwendung eine speziell erstellte .mov-Datei übergeben
  2. Zum Parsen des DNxHD-Formats wird die Funktion dnxhd_parse in der Datei dnxhd_parser aufgerufen
  3. Diese wiederum ruft die Funktion dnxhd_find_frame_end (in derselben Datei) auf, die unter bestimmten Bedingungen kein Ende findet und eine negative Zahl zurückgibt, die kein Fehlercode ist
  4. Diese Zahl wird zusammen mit anderen Parametern an die Funktion ff_combine_frame (in der Datei parser) übergeben, um Frames zusammenzufügen
  5. Da diese Zahl kein Fehlercode ist, erkennt ff_combine_frame dies als Versatz und versucht, diese Bytes im Puffer erneut zu lesen. Da der Puffer zu diesem Zeitpunkt leer ist, kommt es zur Dereferenzierung eines Nullzeigers, was zu einem Segmentation Fault führt

Im Assembler:

0x08000d4e - Beginn des Abschnitts

  1. movsxd rcx, dword [rbx + 0xc]

    Im Register rcx erhalten wir eine Referenz auf pc->buffer

  2. add rcx, rdi

    Füge next zu pc->buffer hinzu

  3. add rcx, qword [rbx]

    Füge pc->last_index zu next und pc->buffer hinzu

  4. movzx edi, byte [rcx]

    Berechne das Byte an der Adresse rcx, aber da pc->buffer anfangs null ist, erhalten wir einen Segmentation Fault

Lösung:

Verhindern des Zugriffs auf einen nicht zugewiesenen Speicherbereich durch korrekte Behandlung des Ausnahmefalls. Wenn eine negative Anzahl verbleibender Bytes erkannt wird, die Dateiverarbeitung durch Überspringen der Schleife fortsetzen.

Tool herunterladen